Commit Diff


commit - /dev/null
commit + b7ab6d1766d07a5ac8f005bf23a7ac633e4f4ae2
blob - /dev/null
blob + 9a9c3d661b475c86272bad8c4d122c0e8ca9f175 (mode 644)
--- /dev/null
+++ README.txt
@@ -0,0 +1,51 @@
+This is the README.txt file for PmWiki, a wiki-based system for

+collaborative creation and maintenance of websites.

+

+PmWiki is distributed with the following directories:

+

+  docs/           Brief documentation, sample configuration scripts

+  local/          Configuration scripts

+  cookbook/       Recipes (add-ons) from the PmWiki Cookbook

+  pub/skins/      Layout templates ("skins" for custom look and feel)

+  pub/css/        Extra CSS stylesheet files

+  pub/guiedit/    Files for the Edit Form's GUIEdit module

+  scripts/        Scripts that are part of PmWiki

+  wikilib.d/      Bundled wiki pages, including

+                  * a default Home Page

+                  * PmWiki documentation pages

+                  * Site-oriented interface and configuration pages

+

+After PmWiki is installed the following directories may also exist:

+

+  wiki.d/         Wiki pages

+  uploads/        Uploaded files (page attachments)

+

+For quick installation advice, see docs/INSTALL.txt.

+

+For more extensive information about installing PmWiki, visit

+  https://pmwiki.org/wiki/PmWiki/Installation

+

+For information about running PmWiki in standalone mode without

+requiring a webserver, visit

+  https://pmwiki.org/wiki/Cookbook/Standalone

+

+PmWiki is Copyright 2001-2022 Patrick R. Michaud

+pmichaud@pobox.com

+https://www.pmichaud.com/

+

+Since 2009, PmWiki has been maintained and updated 

+by Petko Yotov 5ko@5ko.fr, https://www.pmwiki.org/petko

+

+This program is free software; you can redistribute it and/or modify

+it under the terms of the GNU General Public License as published by

+the Free Software Foundation; either version 2 of the License, or

+(at your option) any later version.

+

+This program is distributed in the hope that it will be useful,

+but WITHOUT ANY WARRANTY; without even the implied warranty of

+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

+GNU General Public License for more details.

+

+The GNU General Public License is distributed with this program

+(see docs/COPYING.txt) and it is also available online at

+https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt .

blob - /dev/null
blob + d04c086134e22fcef1d63ef3f37ffdb95702ddf0 (mode 644)
--- /dev/null
+++ cookbook/.htaccess
@@ -0,0 +1,19 @@
+# This file is cookbook/.htaccess -- the default distribution contains this
+# file to prevent cookbook/ scripts from being accessed directly by browsers
+# (this is a potential, albeit very unlikely, security hole).
+#
+# If you alter or replace this file, it will likely be overwritten when
+# you upgrade from one version of PmWiki to another.  Be sure to save
+# a copy of your alterations in another location so you can restore them,
+# and you might try changing this file to be read-only to prevent a PmWiki
+# upgrade from overwriting your altered version.
+
+<IfModule !mod_authz_host.c>
+  Order Deny,Allow
+  Deny from all
+</IfModule>
+
+<IfModule mod_authz_host.c>
+  Require all denied
+</IfModule>
+
blob - /dev/null
blob + 966e4d4334555e6ff49e1c5c5bd52ce1b1928588 (mode 644)
Binary files /dev/null and cookbook/__MACOSX/._markdown-output differ
blob - /dev/null
blob + 5eea1c994450dccb2a943fa3a03bc74e4179e35d (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/._.DS_Store differ
blob - /dev/null
blob + 3ffffc7eec06458dd1230caa9ee9e2b0998f879c (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/._markdown-output.php differ
blob - /dev/null
blob + 966e4d4334555e6ff49e1c5c5bd52ce1b1928588 (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/._markdownify differ
blob - /dev/null
blob + 5eea1c994450dccb2a943fa3a03bc74e4179e35d (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/markdownify/._.DS_Store differ
blob - /dev/null
blob + 966e4d4334555e6ff49e1c5c5bd52ce1b1928588 (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/markdownify/._LICENSE_LGPL.txt differ
blob - /dev/null
blob + 966e4d4334555e6ff49e1c5c5bd52ce1b1928588 (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/markdownify/._TODO differ
blob - /dev/null
blob + 966e4d4334555e6ff49e1c5c5bd52ce1b1928588 (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/markdownify/._example.php differ
blob - /dev/null
blob + 630b817d33c0dac01d94a9697fa76d3bfdaadb42 (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/markdownify/._markdownify.php differ
blob - /dev/null
blob + 966e4d4334555e6ff49e1c5c5bd52ce1b1928588 (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/markdownify/._markdownify_cli.php differ
blob - /dev/null
blob + 1289a3171dcd52771f5e6f7e63f42b9fc7636cbb (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/markdownify/._markdownify_extra.php differ
blob - /dev/null
blob + 966e4d4334555e6ff49e1c5c5bd52ce1b1928588 (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/markdownify/._parsehtml differ
blob - /dev/null
blob + 966e4d4334555e6ff49e1c5c5bd52ce1b1928588 (mode 644)
Binary files /dev/null and cookbook/__MACOSX/markdown-output/markdownify/parsehtml/._parsehtml.php differ
blob - /dev/null
blob + 8612d279c6437c5ff71c52f316282f2fde1cbe20 (mode 644)
--- /dev/null
+++ cookbook/chess.php
@@ -0,0 +1,255 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2005-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is chess.php; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  
+
+    This recipe enables PGN (Portable Game Notation) chess markup
+    in PmWiki.  Strings in the markup text matching the PGN move format 
+    (e.g., things like "5. O-O Nf6" and "4...exd4") are internally 
+    recorded as moves in a "game", and then the {FEN} markup can be
+    used to obtain the current board position in Forsyth-Edwards
+    Notation.  The markup also allows lines of play to be explored,
+    as (re-)specifying an earlier move automatically undoes any
+    previously recorded later moves for the current game.
+
+    The recipe also defines a "Chessboard:" InterMap shortcut,
+    which can be used in combination with {FEN} to draw a graphical
+    representation of the current board position.  Normally this is
+    done with either the "(:chessboard:") markup, which generates
+    a table, or the "Chessboard:{FEN}&t=.gif" markup, which calls
+    the chessboard.php application.  An administrator can override
+    the Chessboard: InterMap shortcut to change the default board display
+    settings or use a different script entirely:
+
+    # (in local/localmap.txt)
+    # redefine "Chessboard:" to use a green+tan board
+    Chessboard	$PubDirUrl/chess/chessboard.php?light=ffffcc&dark=00bb00&fen=$1
+  
+    # define "CB:" as a small 160x160 board
+    CB          $PubDirUrl/chess/chessboard.php?w=160&h=160&fen=$1
+    
+    Script maintained by Petko Yotov https://www.pmwiki.org/petko
+*/
+
+SDV($RecipeInfo['ChessMarkup']['Version'], '20220103');
+SDVA($CustomSyntax, array('ChessMarkup'=>'InterMap  Chessboard:\{FEN\}'));
+
+## First, we define the Chessboard: InterMap shortcut
+SDV($LinkFunctions['Chessboard:'], 'LinkIMap');
+SDV($IMap['Chessboard:'], "$PubDirUrl/chess/chessboard.php?fen=\$1");
+
+## Define the pgn and {FEN} markups:
+$PGNMovePattern = "[KQRBNP]?[a-h]?[1-8]?x?[a-h][1-8](?:=[KQRBNP])?|O-O-O|O-O";
+Markup('pgn', 'directives',
+  "/(\\d+)\\.\\s*($PGNMovePattern|\\.+)(?:[\\s+#?!]*($PGNMovePattern))?/",
+  "PGNMove");
+Markup('{FEN}', '>pgn', '/\\{FEN\\}/', 'FENBoard');
+
+## The (:chessboard:) markup by default generates a table, since
+## some PHP installations don't have GD support compiled in.
+Markup('chessboard', '>{FEN}', 
+  '/\\(:chessboard(\\s.*?)?:\\)/i',
+  "ChessTable");
+
+
+## $PGNMoves is an array of all moves (in PGN notation).  The
+## PGNMove($num, $white, $black) function adds moves for white and
+## black into the array, removing any later moves that might be
+## already present.
+$PGNMoves = array();
+function PGNMove($m) {
+  $out = array_shift($m);
+  @list($num, $white, $black) = $m;
+  global $PGNMoves;
+  if ($white[0] != '.') { 
+    $PGNMoves[$num*2-2] = $white;
+    array_splice($PGNMoves, $num*2-1);
+  }
+  if ($black) {
+    $PGNMoves[$num*2-1] = $black;
+    array_splice($PGNMoves, $num*2);
+  }
+  return Keep($out);
+}
+
+
+## FENBoard() plays out the moves given in $PGNMoves and returns
+## the resulting position as a FEN record.  Internally $board
+## is maintained as a 10x10 character string, with $board{11}
+## corresponding to a8 and $board{88} corresponding to h1.
+## Since PGN generally gives us only the name of the piece being
+## moved and the square it moved to, we have to figure out where
+## that piece came from.  Castling is handled by directly manipulating
+## the $board to the result of the castle.  The from position
+## for pawn moves is computed directly by inspection, while all 
+## other pieces use the $legalmoves array to determine the relative
+## square offsets where pieces could've come from.  Once we
+## figure out where the piece came from, we put the piece in its
+## new position ($to) and change the old position ($from) to an
+## empty square.
+
+function FENBoard() {
+  global $PGNMoves;
+  $num = count($PGNMoves) * 2;
+  # initialize the board and our allowed moves
+  $board = "-----------rnbqkbnr--pppppppp--........--........-"
+           . "-........--........--PPPPPPPP--RNBQKBNR-----------";
+  $legalmoves = array(
+    'K' => array(-11, -10, -9, -1, 1, 9, 10, 11),
+    'Q' => array(-11, -10, -9, -1, 1, 9, 10, 11),
+    'B' => array(-11, -9, 9, 11),
+    'R' => array(-10, -1, 1, 10),
+    'N' => array(-21, -19, -12, -8, 8, 12, 19, 21));
+
+  # now, walk through each move and update the board accordingly
+  for($i=0; $i<$num; $i++) {
+    $move = @$PGNMoves[$i];                                # odd numbered
+    $isblack = $i % 2;                                     # moves are black
+    if ($move == 'O-O') {                                  # kingside castling
+      $board = ($isblack)
+               ? substr_replace($board, '.rk.', 15, 4)
+               : substr_replace($board, '.RK.', 85, 4);
+      continue;
+    }
+    if ($move == 'O-O-O') {                                # queenside castling
+      $board = ($isblack)
+               ? substr_replace($board, '..kr.', 11, 5)
+               : substr_replace($board, '..KR.', 81, 5);
+      continue;
+    }
+    if (preg_match(                                        # all other moves
+            "/^([KQRBNP]?)([a-h]?)([1-8]?)(x?)([a-h])([1-8])(=[KQRBNP])?/",
+            $move, $match)) {
+      @list($m, $piece, $ff, $fr, $cap, $tf, $tr, $promotion) = $match;
+      $tf = strpos("abcdefgh", $tf)+1; 
+      $ff = ($ff) ? strpos("abcdefgh", $ff)+1 : 0; 
+      $to = (9-$tr)*10 + $tf;
+      if (!$piece) $piece = "P";
+      $pp = ($isblack) ? strtolower($piece) : $piece;
+      if ($pp == 'P') {                                    # white's pawn move
+        if ($cap) {                                        # capture
+          $from = (9-$tr)*10+10+$ff; 
+          if ($board[$to]=='.') $board[$to+10]='.';        # en passant
+        }
+        elseif ($board[$to+10]==$pp) $from=$to+10;         # move
+        elseif ($tr==4 && $board[$to+20]==$pp) $from=$to+20;   # first move
+      } elseif ($pp == 'p') {                              # black's pawn
+        if ($cap) {                                        # capture
+          $from = (9-$tr)*10-10+$ff; 
+          if ($board[$to]=='.') $board[$to-10]='.';        # en passant
+        }
+        elseif ($board[$to-10]==$pp) $from=$to-10;         # move
+        elseif ($tr==5 && $board[$to-20]==$pp) $from=$to-20;   # first move
+      } else {
+        # Here we look at squares along the lines for the piece
+        # being moved.  $n contains an offset for each square along
+        # a valid line for the current piece.
+        foreach($legalmoves[$piece] as $n) {               
+          for($from=$to+$n; $from>10 && $from<89; $from+=$n) {
+            # if we find the piece we're looking for, we're done
+            if ($board[$from] == $pp                       
+                && (!$ff || ($from%10==$ff))               
+                && (!$fr || ((int)($from/10)==(9-$fr)))) break 2;                                     
+            # if we find anything but an empty square, try another line
+            if ($board[$from] != '.') continue 2;
+
+            # kings and knights don't repeat offsets
+            if ($piece == 'K' || $piece == 'N') continue 2;
+          }
+        }
+      }
+
+      # pawn promotions
+      if ($promotion)
+        $pp = ($isblack) ? strtolower($promotion[1]) : $promotion[1];
+
+      # move the piece
+      $board[$to] = $pp; $board[$from] = '.';
+    }
+  }
+
+  # now, convert the board to a FEN record
+  $board = PPRA(array('/-+/'  =>'/', 
+                      '/\\.+/'=> 'chess_cb_length'
+                      ),
+                      substr($board, 11, 78));
+
+  # and return it
+  return $board;
+}
+
+function chess_cb_length($m) { return strlen($m[0]); }
+
+## The ChessTable function takes a FEN string (or the current
+## game position as returned by FENBoard() above) and creates an 
+## HTML table representing the current game position.
+$ChessPieces = array(
+   'k' => 'kd-60.png', 'q' => 'qd-60.png', 'r' => 'rd-60.png',
+   'b' => 'bd-60.png', 'n' => 'nd-60.png', 'p' => 'pd-60.png',
+   'K' => 'kl-60.png', 'Q' => 'ql-60.png', 'R' => 'rl-60.png',
+   'B' => 'bl-60.png', 'N' => 'nl-60.png', 'P' => 'pl-60.png',
+   '.' => 'blank-60.png');
+$ChessChars = array(
+   'k' => '&#x265A;', 'q' => '&#x265B;', 'r' => '&#x265C;',
+   'b' => '&#x265D;', 'n' => '&#x265E;', 'p' => '&#x265F;',
+   'K' => '&#x2654;', 'Q' => '&#x2655;', 'R' => '&#x2656;',
+   'B' => '&#x2657;', 'N' => '&#x2658;', 'P' => '&#x2659;',
+   '.' => '&nbsp;');
+SDV($HTMLStylesFmt['chess'],  " 
+  table.chesstable td.square1 { background-color: #cccccc; } 
+  table.chesstable { border:1px solid #666666; line-height: 0; } ");
+  
+
+function ChessTable($m) {
+  global $ChessPieces, $ChessChars, $ChessPubDirUrlFmt, $FmtV;
+  
+  extract($GLOBALS['MarkupToHTML']);
+  $args = ParseArgs($m[1]);
+  
+  
+# Some day: SDV($ChessSquareFmt, "<td>\$PieceChar</td>");
+  SDV($ChessSquareFmt, 
+    "<td class='square\$SquareColor'><img 
+       src='\$FarmPubDirUrl/chess/\$PieceImg' alt='\$PieceName' title='\$PieceName'
+       width='\$SquareWidth' height='\$SquareHeight' /></td>");
+  SDV($ChessDefaults, array(
+    'width' => 240, 'class' => 'chesstable',
+    'cellspacing' => 0, 'cellpadding' => 0));
+  $args = array_merge($ChessDefaults, $args);
+  $fen = (@$args['']) ? $args[''][0] : FENBoard();
+  $width = $args['width'];
+  $height = (@$args['height'] > 0) ? $args['height'] : $width;
+
+  $tableargs = "";
+  foreach(array('class', 'cellspacing', 'cellpadding', 'align', 'style') as $a)
+    if (isset($args[$a])) 
+      $tableargs .= " $a='".str_replace("'", "&#039;", $args[$a])."'";
+  
+  ## build the 8x8 board from the FEN record
+  $board = str_repeat('.', 64);
+  $file = 0; $rank = 0;
+  $len = strlen($fen);
+  for($i=0; ($i<$len) && ($rank+$file<64); $i++) {
+    $k = $fen[$i];
+    if (is_numeric($k) && $k > 0) { $file += $k; continue; }
+    if ($k == '/') { $rank += 8; $file = 0; continue; }
+    if ($ChessPieces[$k]) { $board[$rank+$file] = $k; $file++; }
+  }
+
+  ## Now generate the table from the 8x8 board
+  $FmtV['$SquareWidth'] = $width / 8;
+  $FmtV['$SquareHeight'] = $height / 8;
+  for($i=0; $i<64; $i++) {
+    if ($i%8 == 0) $out[] = "<tr>";
+    $FmtV['$PieceImg'] = $ChessPieces[$board[$i]];
+    $FmtV['$PieceChar'] = $ChessChars[$board[$i]];
+    $FmtV['$PieceName'] = $board[$i];
+    $FmtV['$SquareColor'] = ($i + (int)($i/8)) % 2;
+    $out[] = FmtPageName($ChessSquareFmt, $pagename);
+    if ($i%8 == 7) $out[] = "</tr>";
+  }
+  return "<table $tableargs>".Keep(implode('', $out))."</table>";
+}
+  
blob - /dev/null
blob + 5dfac74a1e91fa3ecc9cfc43f526410a6f7b1256 (mode 644)
Binary files /dev/null and cookbook/chess.zip differ
blob - /dev/null
blob + 14e036b0a2a405b0c8a8cf0b9e28814397d6c65c (mode 644)
Binary files /dev/null and cookbook/markdown-output/.DS_Store differ
blob - /dev/null
blob + 48f02b39df7a6829ccc1265a3fdb96301cd50b3f (mode 755)
--- /dev/null
+++ cookbook/markdown-output/markdown-output.php
@@ -0,0 +1,62 @@
+<?php if (!defined('PmWiki')) exit();
+
+/*	=== MarkdownOutput ===
+ *	Copyright 2008 Eemeli Aro <eemeli.aro@tkk.fi>
+ *
+ *	Presents a wiki page in Markdown format instead of HTML
+ *
+ *	Based on Milian Wolff's Markdownify HTML to Markdown converter,
+ *	available from <http://milianw.de/projects/markdownify/> and
+ *	licensed under the LGPL.
+ *
+ *	To install, add the following line to your config file :
+	include_once("$FarmD/cookbook/markdown-output/markdown-output.php");
+ *
+ *	For more information, please see the online documentation at
+ *		http://www.pmwiki.org/wiki/Cookbook/MarkdownOutput
+ *
+ *	This program is free software; you can redistribute it and/or
+ *	modify it under the terms of the GNU General Public License as
+ *	published by the Free Software Foundation; either version 2 of
+ *	the License, or (at your option) any later version.
+ */
+
+$RecipeInfo['MarkdownOutput']['Version'] = '2020-08-12';
+
+$HandleActions['markdown'] = 'HandleMarkdownOutput';
+
+if ($action=='markdown') require_once dirname(__FILE__).'/markdownify/markdownify_extra.php';
+
+function HandleMarkdownOutput( $pagename, $auth = 'read' ) {
+	global $DefaultPageTextFmt, $PageNotFoundHeaderFmt, $HTTPHeaders, $TmplDisplay,
+	$MarkdownExtra, $MarkdownLinksAfterEachParagraph, $MarkdownBodyWidth, $MarkdownKeepHTML, $MarkdownIgnoreForeignAttributes;
+	$page = RetrieveAuthPage( $pagename, $auth, true, READPAGE_CURRENT );
+	if (!$page) Abort("?cannot markdown $pagename");
+	PCache($pagename,$page);
+	if ( PageExists($pagename) ) $text = @$page['text'];
+	else {
+		SDV($DefaultPageTextFmt, '(:include $[{$SiteGroup}.PageNotFound]:)' );
+		$text = FmtPageName( $DefaultPageTextFmt, $pagename );
+		SDV($PageNotFoundHeaderFmt, 'HTTP/1.1 404 Not Found' );
+		SDV($HTTPHeaders['status'], $PageNotFoundHeaderFmt );
+	}
+	$text = '(:groupheader:)'.@$text.'(:groupfooter:)';
+	$html = MarkupToHTML( $pagename, $text );
+
+	if ( empty($TmplDisplay['PageTitleFmt']) ) $html = "<h1>".PageVar($pagename,'$Title')."</h1>\n".$html;
+
+	foreach ($HTTPHeaders as $h) {
+		$h = preg_replace( '!^Content-type:\\s+text/html!i', 'Content-type: text/plain', $h );
+		header($h);
+	}
+
+	SDV($MarkdownLinksAfterEachParagraph, FALSE );
+	SDV($MarkdownBodyWidth, FALSE );
+	SDV($MarkdownKeepHTML, FALSE );
+	SDV($MarkdownIgnoreForeignAttributes, FALSE );
+	$mdf = IsEnabled($MarkdownExtra,TRUE) ? 'Markdownify_Extra' : 'Markdownify';
+	$md = new $mdf( $MarkdownLinksAfterEachParagraph, $MarkdownBodyWidth, $MarkdownKeepHTML, $MarkdownIgnoreForeignAttributes );
+	
+	echo $md->parseString($html);
+}
+
blob - /dev/null
blob + e4800adb6e46c1b04b3500812211078c06276331 (mode 644)
Binary files /dev/null and cookbook/markdown-output/markdownify/.DS_Store differ
blob - /dev/null
blob + 5ab7695ab8cabe0c5c8a814bb0ab1e8066578fbb (mode 644)
--- /dev/null
+++ cookbook/markdown-output/markdownify/LICENSE_LGPL.txt
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
blob - /dev/null
blob + 06ec8508ba6be9f3a1a920bac7316192fa924f22 (mode 644)
--- /dev/null
+++ cookbook/markdown-output/markdownify/TODO
@@ -0,0 +1,29 @@
+Markdownify
+===========
+* handle non-markdownifiable lists (i.e. `<ul><li id="foobar">asdf</li></ul>`)
+* organize methods better (i.e. flushlinebreaks & setlinebreaks close to each other)
+* take a look at function names etc.
+* is the new (in rev. 93) lastclosedtag property needed?
+* word wrapping (some work is done but it's still very buggy)
+
+
+Markdownify Extra
+=================
+
+* handle table alignment with KEEP_HTML=false
+* handle tables without headings when KEEP_HTML=false is set
+* handle Markdown inside non-markdownable tags
+
+
+Implementation Thoughts
+=======================
+* non-markdownifiable lists and markdown inside non-markdownable tags as well as the current
+  table implementation could be rewritten by using a rollback mechanism.
+  
+  example:
+  
+      <ul><li>asdf</li><li id="foobar">asdf</li></ul>
+  
+  we come to `<ul>`, know that this might fail and create a snapshot of our current parser
+  we keep on parsing and when we reach `<li id="foobar">` we gotta rollback and keep this
+  list in HTML format.
blob - /dev/null
blob + ef86dca83caf479a1fabd94d7f748f4bb4a4a600 (mode 644)
--- /dev/null
+++ cookbook/markdown-output/markdownify/example.php
@@ -0,0 +1,51 @@
+<?php
+	error_reporting(E_ALL);
+	if (!empty($_POST['input'])) {
+		include 'markdownify_extra.php';
+		if (!isset($_POST['leap'])) {
+			$leap = MDFY_LINKS_EACH_PARAGRAPH;
+		} else {
+			$leap = $_POST['leap'];
+		}
+		
+		if (!isset($_POST['keepHTML'])) {
+			$keephtml = MDFY_KEEPHTML;
+		} else {
+			$keephtml = $_POST['keepHTML'];
+		}
+		if (!empty($_POST['extra'])) {
+			$md = new Markdownify_Extra($leap, MDFY_BODYWIDTH, $keephtml);
+		} else {
+			$md = new Markdownify($leap, MDFY_BODYWIDTH, $keephtml);
+		}
+		if (ini_get('magic_quotes_gpc')) {
+			$_POST['input'] = stripslashes($_POST['input']);
+		}
+		$output = $md->parseString($_POST['input']);
+	} else {
+		$_POST['input'] = '';
+	}
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+		<title>HTML to Markdown Converter</title>
+	</head>
+	<body>
+		<?php if (empty($_POST['input'])): ?>
+		<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
+			<fieldset>
+				<legend>HTML Input</legend>
+				<textarea style="width:100%;" cols="85" rows="40" name="input"><?php echo htmlspecialchars($_POST['input'], ENT_NOQUOTES, 'UTF-8'); ?></textarea>
+			</fieldset>
+			<label for="extra">Markdownify Extra: <input name="extra" checked="checked" id="extra" type="checkbox" value="1"  /></label>
+			<label for="leap">Links after each block elem: <input name="leap" id="leap" type="checkbox" value="1"  /></label>
+			<label for="keepHTML">keep HTML: <input name="keepHTML" id="keepHTML" type="checkbox" value="1" checked="checked" /></label>
+			<input type="submit" name="submit" value="submit" />
+		</form>
+		<?php else: ?>
+		<h1 style="text-align:right;"><a href="<?php echo $_SERVER['PHP_SELF']; ?>">BACK</a></h1>
+		<pre><?php echo htmlspecialchars($output, ENT_NOQUOTES, 'UTF-8'); ?></pre>
+		<?php endif; ?>
+	</body>
+</html>
\ No newline at end of file
blob - /dev/null
blob + d23b4d5c14d5e61112a749c3b4e4c40435507f2a (mode 644)
--- /dev/null
+++ cookbook/markdown-output/markdownify/markdownify.php
@@ -0,0 +1,1194 @@
+<?php
+/**
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * Version 2.0.1 by Said Achmiz.
+ * - v2.0.1: Added ignoreForeignAttributes flag.
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * Markdownify converts HTML Markup to [Markdown][1] (by [John Gruber][2]. It
+ * also supports [Markdown Extra][3] by [Michel Fortin][4] via Markdownify_Extra.
+ *
+ * It all started as `html2text.php` - a port of [Aaron Swartz'][5] [`html2text.py`][6] - but
+ * got a long way since. This is far more than a mere port now!
+ * Starting with version 2.0.0 this is a complete rewrite and cannot be
+ * compared to Aaron Swatz' `html2text.py` anylonger. I'm now using a HTML parser
+ * (see `parsehtml.php` which I also wrote) which makes most of the evil
+ * RegEx magic go away and additionally it gives a much cleaner class
+ * structure. Also notably is the fact that I now try to prevent regressions by
+ * utilizing testcases of Michel Fortin's [MDTest][7].
+ *
+ * [1]: http://daringfireball.com/projects/markdown
+ * [2]: http://daringfireball.com/
+ * [3]: http://www.michelf.com/projects/php-markdown/extra/
+ * [4]: http://www.michelf.com/
+ * [5]: http://www.aaronsw.com/
+ * [6]: http://www.aaronsw.com/2002/html2text/
+ * [7]: http://article.gmane.org/gmane.text.markdown.general/2540
+ *
+ * @version 2.0.0 alpha
+ * @author Milian Wolff (<mail@milianw.de>, <http://milianw.de>)
+ * @license LGPL, see LICENSE_LGPL.txt and the summary below
+ * @copyright (C) 2007  Milian Wolff
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+/**
+ * HTML Parser, see http://sf.net/projects/parseHTML
+ */
+require_once dirname(__FILE__).'/parsehtml/parsehtml.php';
+
+/**
+ * default configuration
+ */
+define('MDFY_LINKS_EACH_PARAGRAPH', false);
+define('MDFY_BODYWIDTH', false);
+define('MDFY_KEEPHTML', true);
+define('MDFY_IGNORE_FOREIGN_ATTRIBUTES', false);
+
+/**
+ * HTML to Markdown converter class
+ */
+class Markdownify {
+  /**
+   * html parser object
+   *
+   * @var parseHTML
+   */
+  var $parser;
+  /**
+   * markdown output
+   *
+   * @var string
+   */
+  var $output;
+  /**
+   * stack with tags which where not converted to html
+   *
+   * @var array<string>
+   */
+  var $notConverted = array();
+  /**
+   * skip conversion to markdown
+   *
+   * @var bool
+   */
+  var $skipConversion = false;
+  /* options */
+  /**
+   * keep html tags which cannot be converted to markdown
+   *
+   * @var bool
+   */
+  var $keepHTML = false;
+  /**
+   * wrap output, set to 0 to skip wrapping
+   *
+   * @var int
+   */
+  var $bodyWidth = 0;
+  /**
+   * minimum body width
+   *
+   * @var int
+   */
+  var $minBodyWidth = 25;
+  /**
+   * display links after each paragraph
+   *
+   * @var bool
+   */
+  var $linksAfterEachParagraph = false;
+  /**
+   * constructor, set options, setup parser
+   *
+   * @param bool $linksAfterEachParagraph wether or not to flush stacked links after each paragraph
+   *             defaults to false
+   * @param int $bodyWidth wether or not to wrap the output to the given width
+   *             defaults to false
+   * @param bool $keepHTML wether to keep non markdownable HTML or to discard it
+   *             defaults to true (HTML will be kept)
+   * @return void
+   */
+  function __construct($linksAfterEachParagraph = MDFY_LINKS_EACH_PARAGRAPH, $bodyWidth = MDFY_BODYWIDTH, $keepHTML = MDFY_KEEPHTML, $ignoreForeignAttributes = MDFY_IGNORE_FOREIGN_ATTRIBUTES) {
+    $this->linksAfterEachParagraph = $linksAfterEachParagraph;
+    $this->keepHTML = $keepHTML;
+    $this->ignoreForeignAttributes = $ignoreForeignAttributes;
+
+    if ($bodyWidth > $this->minBodyWidth) {
+      $this->bodyWidth = intval($bodyWidth);
+    } else {
+      $this->bodyWidth = false;
+    }
+
+    $this->parser = new parseHTML;
+    $this->parser->noTagsInCode = true;
+
+    # we don't have to do this every time
+    $search = array();
+    $replace = array();
+    foreach ($this->escapeInText as $s => $r) {
+      array_push($search, '#(?<!\\\)'.$s.'#U');
+      array_push($replace, $r);
+    }
+    $this->escapeInText = array(
+      'search' => $search,
+      'replace' => $replace
+    );
+  }
+  /**
+   * parse a HTML string
+   *
+   * @param string $html
+   * @return string markdown formatted
+   */
+  function parseString($html) {
+    $this->parser->html = $html;
+    $this->parse();
+    return $this->output;
+  }
+  /**
+   * tags with elements which can be handled by markdown
+   *
+   * @var array<string>
+   */
+  var $isMarkdownable = array(
+    'p' => array(),
+    'ul' => array(),
+    'ol' => array(),
+    'li' => array(),
+    'br' => array(),
+    'blockquote' => array(),
+    'code' => array(),
+    'pre' => array(),
+    'a' => array(
+      'href' => 'required',
+      'title' => 'optional',
+    ),
+    'strong' => array(),
+    'b' => array(),
+    'em' => array(),
+    'i' => array(),
+    'img' => array(
+      'src' => 'required',
+      'alt' => 'optional',
+      'title' => 'optional',
+    ),
+    'h1' => array(),
+    'h2' => array(),
+    'h3' => array(),
+    'h4' => array(),
+    'h5' => array(),
+    'h6' => array(),
+    'hr' => array(),
+  );
+  /**
+   * html tags to be ignored (contents will be parsed)
+   *
+   * @var array<string>
+   */
+  var $ignore = array(
+    'html',
+    'body',
+  );
+  /**
+   * html tags to be dropped (contents will not be parsed!)
+   *
+   * @var array<string>
+   */
+  var $drop = array(
+    'script',
+    'head',
+    'style',
+    'form',
+    'area',
+    'object',
+    'param',
+    'iframe',
+  );
+  /**
+   * Markdown indents which could be wrapped
+   * @note: use strings in regex format
+   *
+   * @var array<string>
+   */
+  var $wrappableIndents = array(
+    '\*   ', # ul
+    '\d.  ', # ol
+    '\d\d. ', # ol
+    '> ', # blockquote
+    '', # p
+  );
+  /**
+   * list of chars which have to be escaped in normal text
+   * @note: use strings in regex format
+   *
+   * @var array
+   *
+   * TODO: what's with block chars / sequences at the beginning of a block?
+   */
+  var $escapeInText = array(
+    '([-*_])([ ]{0,2}\1){2,}' => '\\\\$0|', # hr
+    '\*\*([^*\s]+)\*\*' => '\*\*$1\*\*', # strong
+    '\*([^*\s]+)\*' => '\*$1\*', # em
+    '__(?! |_)(.+)(?!<_| )__' => '\_\_$1\_\_', # em
+    '_(?! |_)(.+)(?!<_| )_' => '\_$1\_', # em
+    '`(.+)`' => '\`$1\`', # code
+    '\[(.+)\](\s*\()' => '\[$1\]$2', # links: [text] (url) => [text\] (url)
+    '\[(.+)\](\s*)\[(.*)\]' => '\[$1\]$2\[$3\]', # links: [text][id] => [text\][id\]
+  );
+  /**
+   * wether last processed node was a block tag or not
+   *
+   * @var bool
+   */
+  var $lastWasBlockTag = false;
+  /**
+   * name of last closed tag
+   *
+   * @var string
+   */
+  var $lastClosedTag = '';
+  /**
+   * iterate through the nodes and decide what we
+   * shall do with the current node
+   *
+   * @param void
+   * @return void
+   */
+  function parse() {
+    $this->output = '';
+    # drop tags
+    $this->parser->html = preg_replace('#<('.implode('|', $this->drop).')[^>]*>.*</\\1>#sU', '', $this->parser->html);
+    while ($this->parser->nextNode()) {
+      switch ($this->parser->nodeType) {
+        case 'doctype':
+          break;
+        case 'pi':
+        case 'comment':
+          if ($this->keepHTML) {
+            $this->flushLinebreaks();
+            $this->out($this->parser->node);
+            $this->setLineBreaks(2);
+          }
+          # else drop
+          break;
+        case 'text':
+          $this->handleText();
+          break;
+        case 'tag':
+          if (in_array($this->parser->tagName, $this->ignore)) {
+            break;
+          }
+          if ($this->parser->isStartTag) {
+            $this->flushLinebreaks();
+          }
+          if ($this->skipConversion) {
+            $this->isMarkdownable(); # update notConverted
+            $this->handleTagToText();
+            break;
+          }
+          if (!$this->parser->keepWhitespace && $this->parser->isBlockElement && $this->parser->isStartTag) {
+            $this->parser->html = ltrim($this->parser->html);
+          }
+          if ($this->isMarkdownable()) {
+            if ($this->parser->isBlockElement && $this->parser->isStartTag && !$this->lastWasBlockTag && !empty($this->output)) {
+              if (!empty($this->buffer)) {
+                $str =& $this->buffer[count($this->buffer) -1];
+              } else {
+                $str =& $this->output;
+              }
+              if (substr($str, -strlen($this->indent)-1) != "\n".$this->indent) {
+                $str .= "\n".$this->indent;
+              }
+            }
+            $func = 'handleTag_'.$this->parser->tagName;
+            $this->$func();
+            if ($this->linksAfterEachParagraph && $this->parser->isBlockElement && !$this->parser->isStartTag && empty($this->parser->openTags)) {
+              $this->flushStacked();
+            }
+            if (!$this->parser->isStartTag) {
+              $this->lastClosedTag = $this->parser->tagName;
+            }
+          } else {
+            $this->handleTagToText();
+            $this->lastClosedTag = '';
+          }
+          break;
+        default:
+          trigger_error('invalid node type', E_USER_ERROR);
+          break;
+      }
+      $this->lastWasBlockTag = $this->parser->nodeType == 'tag' && $this->parser->isStartTag && $this->parser->isBlockElement;
+    }
+    if (!empty($this->buffer)) {
+      trigger_error('buffer was not flushed, this is a bug. please report!', E_USER_WARNING);
+      while (!empty($this->buffer)) {
+        $this->out($this->unbuffer());
+      }
+    }
+    ### cleanup
+    $this->output = rtrim(str_replace('&amp;', '&', str_replace('&lt;', '<', str_replace('&gt;', '>', $this->output))));
+    # end parsing, flush stacked tags
+    $this->flushStacked();
+    $this->stack = array();
+  }
+  /**
+   * check if current tag can be converted to Markdown
+   *
+   * @param void
+   * @return bool
+   */
+  function isMarkdownable() {
+    if (!isset($this->isMarkdownable[$this->parser->tagName])) {
+      # simply not markdownable
+      return false;
+    }
+    if ($this->parser->isStartTag) {
+      $return = true;
+      if ($this->keepHTML) {
+        $diff = array_diff(array_keys($this->parser->tagAttributes), array_keys($this->isMarkdownable[$this->parser->tagName]));
+        if (!empty($diff) && !$this->ignoreForeignAttributes) {
+          # non markdownable attributes given
+          $return = false;
+        }
+      }
+      if ($return) {
+        foreach ($this->isMarkdownable[$this->parser->tagName] as $attr => $type) {
+          if ($type == 'required' && !isset($this->parser->tagAttributes[$attr])) {
+            # required markdown attribute not given
+            $return = false;
+            break;
+          }
+        }
+      }
+      if (!$return) {
+        array_push($this->notConverted, $this->parser->tagName.'::'.implode('/', $this->parser->openTags));
+      }
+      return $return;
+    } else {
+      if (!empty($this->notConverted) && end($this->notConverted) === $this->parser->tagName.'::'.implode('/', $this->parser->openTags)) {
+        array_pop($this->notConverted);
+        return false;
+      }
+      return true;
+    }
+  }
+  /**
+   * output all stacked tags
+   *
+   * @param void
+   * @return void
+   */
+  function flushStacked() {
+    # links
+    foreach ($this->stack as $tag => $a) {
+      if (!empty($a)) {
+        call_user_func(array(&$this, 'flushStacked_'.$tag));
+      }
+    }
+  }
+  /**
+   * output link references (e.g. [1]: http://example.com "title");
+   *
+   * @param void
+   * @return void
+   */
+  function flushStacked_a() {
+    $out = false;
+    foreach ($this->stack['a'] as $k => $tag) {
+      if (!isset($tag['unstacked'])) {
+        if (!$out) {
+          $out = true;
+          $this->out("\n\n", true);
+        } else {
+          $this->out("\n", true);
+        }
+        $this->out(' ['.$tag['linkID'].']: '.$tag['href'].(isset($tag['title']) ? ' "'.$tag['title'].'"' : ''), true);
+        $tag['unstacked'] = true;
+        $this->stack['a'][$k] = $tag;
+      }
+    }
+  }
+  /**
+   * flush enqued linebreaks
+   *
+   * @param void
+   * @return void
+   */
+  function flushLinebreaks() {
+    if ($this->lineBreaks && !empty($this->output)) {
+      $this->out(str_repeat("\n".$this->indent, $this->lineBreaks), true);
+    }
+    $this->lineBreaks = 0;
+  }
+  /**
+   * handle non Markdownable tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTagToText() {
+    if (!$this->keepHTML) {
+      if (!$this->parser->isStartTag && $this->parser->isBlockElement) {
+        $this->setLineBreaks(2);
+      }
+    } else {
+      # dont convert to markdown inside this tag
+      /** TODO: markdown extra **/
+      if (!$this->parser->isEmptyTag) {
+        if ($this->parser->isStartTag) {
+          if (!$this->skipConversion) {
+            $this->skipConversion = $this->parser->tagName.'::'.implode('/', $this->parser->openTags);
+          }
+        } else {
+          if ($this->skipConversion == $this->parser->tagName.'::'.implode('/', $this->parser->openTags)) {
+            $this->skipConversion = false;
+          }
+        }
+      }
+
+      if ($this->parser->isBlockElement) {
+       if ($this->parser->isStartTag) {
+          if (in_array($this->parent(), array('ins', 'del'))) {
+            # looks like ins or del are block elements now
+            $this->out("\n", true);
+            $this->indent('  ');
+          }
+          if ($this->parser->tagName != 'pre') {
+
+            $this->out($this->parser->node."\n".$this->indent);
+            if (!$this->parser->isEmptyTag) {
+              $this->indent('  ');
+            } else {
+              $this->setLineBreaks(1);
+            }
+            $this->parser->html = ltrim($this->parser->html);
+          } else {
+            # don't indent inside <pre> tags
+            $this->out($this->parser->node);
+            static $indent;
+            $indent =  $this->indent;
+            $this->indent = '';
+          }
+        } else {
+          if (!$this->parser->keepWhitespace) {
+            $this->output = rtrim($this->output);
+          }
+          if ($this->parser->tagName != 'pre') {
+            $this->indent('  ');
+            $this->out("\n".$this->indent.$this->parser->node);
+          } else {
+            # reset indentation
+            $this->out($this->parser->node);
+            static $indent;
+            $this->indent = $indent;
+          }
+
+          if (in_array($this->parent(), array('ins', 'del'))) {
+            # ins or del was block element
+            $this->out("\n");
+            $this->indent('  ');
+          }
+          if ($this->parser->tagName == 'li') {
+            $this->setLineBreaks(1);
+          } else {
+            $this->setLineBreaks(2);
+          }
+        }
+      } else {
+        $this->out($this->parser->node);
+      }
+      if (in_array($this->parser->tagName, array('code', 'pre'))) {
+        if ($this->parser->isStartTag) {
+          $this->buffer();
+        } else {
+          # add stuff so cleanup just reverses this
+          $this->out(str_replace('&lt;', '&amp;lt;', str_replace('&gt;', '&amp;gt;', $this->unbuffer())));
+        }
+      }
+    }
+  }
+  /**
+   * handle plain text
+   *
+   * @param void
+   * @return void
+   */
+  function handleText() {
+    if ($this->hasParent('pre') && strpos($this->parser->node, "\n") !== false) {
+      $this->parser->node = str_replace("\n", "\n".$this->indent, $this->parser->node);
+    }
+    if (!$this->hasParent('code') && !$this->hasParent('pre')) {
+      # entity decode
+      $this->parser->node = $this->decode($this->parser->node);
+      if (!$this->skipConversion) {
+        # escape some chars in normal Text
+        $this->parser->node = preg_replace($this->escapeInText['search'], $this->escapeInText['replace'], $this->parser->node);
+      }
+    } else {
+      $this->parser->node = str_replace(array('&quot;', '&apos'), array('"', '\''), $this->parser->node);
+    }
+    $this->out($this->parser->node);
+    $this->lastClosedTag = '';
+  }
+  /**
+   * handle <em> and <i> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_em() {
+    $this->out('*', true);
+  }
+  function handleTag_i() {
+    $this->handleTag_em();
+  }
+  /**
+   * handle <strong> and <b> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_strong() {
+    $this->out('**', true);
+  }
+  function handleTag_b() {
+    $this->handleTag_strong();
+  }
+  /**
+   * handle <h1> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_h1() {
+    $this->handleHeader(1);
+  }
+  /**
+   * handle <h2> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_h2() {
+    $this->handleHeader(2);
+  }
+  /**
+   * handle <h3> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_h3() {
+    $this->handleHeader(3);
+  }
+  /**
+   * handle <h4> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_h4() {
+    $this->handleHeader(4);
+  }
+  /**
+   * handle <h5> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_h5() {
+    $this->handleHeader(5);
+  }
+  /**
+   * handle <h6> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_h6() {
+    $this->handleHeader(6);
+  }
+  /**
+   * number of line breaks before next inline output
+   */
+  var $lineBreaks = 0;
+  /**
+   * handle header tags (<h1> - <h6>)
+   *
+   * @param int $level 1-6
+   * @return void
+   */
+  function handleHeader($level) {
+    if ($this->parser->isStartTag) {
+      $this->out(str_repeat('#', $level).' ', true);
+    } else {
+      $this->setLineBreaks(2);
+    }
+  }
+  /**
+   * handle <p> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_p() {
+    if (!$this->parser->isStartTag) {
+      $this->setLineBreaks(2);
+    }
+  }
+  /**
+   * handle <a> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_a() {
+    if ($this->parser->isStartTag) {
+      $this->buffer();
+      if (isset($this->parser->tagAttributes['title'])) {
+        $this->parser->tagAttributes['title'] = $this->decode($this->parser->tagAttributes['title']);
+      } else {
+        $this->parser->tagAttributes['title'] = null;
+      }
+      $this->parser->tagAttributes['href'] = $this->decode(trim($this->parser->tagAttributes['href']));
+      $this->stack();
+    } else {
+      $tag = $this->unstack();
+      $buffer = $this->unbuffer();
+
+      if (empty($tag['href']) && empty($tag['title'])) {
+        # empty links... testcase mania, who would possibly do anything like that?!
+        $this->out('['.$buffer.']()', true);
+        return;
+      }
+
+      if ($buffer == $tag['href'] && empty($tag['title'])) {
+        # <http://example.com>
+        $this->out('<'.$buffer.'>', true);
+        return;
+      }
+
+      $bufferDecoded = $this->decode(trim($buffer));
+      if (substr($tag['href'], 0, 7) == 'mailto:' && 'mailto:'.$bufferDecoded == $tag['href']) {
+        if (is_null($tag['title'])) {
+          # <mail@example.com>
+          $this->out('<'.$bufferDecoded.'>', true);
+          return;
+        }
+        # [mail@example.com][1]
+        # ...
+        #  [1]: mailto:mail@example.com Title
+        $tag['href'] = 'mailto:'.$bufferDecoded;
+      }
+      # [This link][id]
+      foreach ($this->stack['a'] as $tag2) {
+        if ($tag2['href'] == $tag['href'] && $tag2['title'] === $tag['title']) {
+          $tag['linkID'] = $tag2['linkID'];
+          break;
+        }
+      }
+      if (!isset($tag['linkID'])) {
+        $tag['linkID'] = count($this->stack['a']) + 1;
+        array_push($this->stack['a'], $tag);
+      }
+
+      $this->out('['.$buffer.']['.$tag['linkID'].']', true);
+    }
+  }
+  /**
+   * handle <img /> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_img() {
+    if (!$this->parser->isStartTag) {
+      return; # just to be sure this is really an empty tag...
+    }
+
+    if (isset($this->parser->tagAttributes['title'])) {
+      $this->parser->tagAttributes['title'] = $this->decode($this->parser->tagAttributes['title']);
+    } else {
+      $this->parser->tagAttributes['title'] = null;
+    }
+    if (isset($this->parser->tagAttributes['alt'])) {
+      $this->parser->tagAttributes['alt'] = $this->decode($this->parser->tagAttributes['alt']);
+    } else {
+      $this->parser->tagAttributes['alt'] = null;
+    }
+
+    if (empty($this->parser->tagAttributes['src'])) {
+      # support for "empty" images... dunno if this is really needed
+      # but there are some testcases which do that...
+      if (!empty($this->parser->tagAttributes['title'])) {
+        $this->parser->tagAttributes['title'] = ' '.$this->parser->tagAttributes['title'].' ';
+      }
+      $this->out('!['.$this->parser->tagAttributes['alt'].']('.$this->parser->tagAttributes['title'].')', true);
+      return;
+    } else {
+      $this->parser->tagAttributes['src'] = $this->decode($this->parser->tagAttributes['src']);
+    }
+
+    # [This link][id]
+    $link_id = false;
+    if (!empty($this->stack['a'])) {
+      foreach ($this->stack['a'] as $tag) {
+        if ($tag['href'] == $this->parser->tagAttributes['src']
+            && $tag['title'] === $this->parser->tagAttributes['title']) {
+          $link_id = $tag['linkID'];
+          break;
+        }
+      }
+    } else {
+      $this->stack['a'] = array();
+    }
+    if (!$link_id) {
+      $link_id = count($this->stack['a']) + 1;
+      $tag = array(
+        'href' => $this->parser->tagAttributes['src'],
+        'linkID' => $link_id,
+        'title' => $this->parser->tagAttributes['title']
+      );
+      array_push($this->stack['a'], $tag);
+    }
+
+    $this->out('!['.$this->parser->tagAttributes['alt'].']['.$link_id.']', true);
+  }
+  /**
+   * handle <code> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_code() {
+    if ($this->hasParent('pre')) {
+      # ignore code blocks inside <pre>
+      return;
+    }
+    if ($this->parser->isStartTag) {
+      $this->buffer();
+    } else {
+      $buffer = $this->unbuffer();
+      # use as many backticks as needed
+      preg_match_all('#`+#', $buffer, $matches);
+      if (!empty($matches[0])) {
+        rsort($matches[0]);
+
+        $ticks = '`';
+        while (true) {
+          if (!in_array($ticks, $matches[0])) {
+            break;
+          }
+          $ticks .= '`';
+        }
+      } else {
+        $ticks = '`';
+      }
+      if ($buffer[0] == '`' || substr($buffer, -1) == '`') {
+        $buffer = ' '.$buffer.' ';
+      }
+      $this->out($ticks.$buffer.$ticks, true);
+    }
+  }
+  /**
+   * handle <pre> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_pre() {
+    if ($this->keepHTML && $this->parser->isStartTag) {
+      # check if a simple <code> follows
+      if (!preg_match('#^\s*<code\s*>#Us', $this->parser->html)) {
+        # this is no standard markdown code block
+        $this->handleTagToText();
+        return;
+      }
+    }
+    $this->indent('    ');
+    if (!$this->parser->isStartTag) {
+      $this->setLineBreaks(2);
+    } else {
+      $this->parser->html = ltrim($this->parser->html);
+    }
+  }
+  /**
+   * handle <blockquote> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_blockquote() {
+    $this->indent('> ');
+  }
+  /**
+   * handle <ul> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_ul() {
+    if ($this->parser->isStartTag) {
+      $this->stack();
+      if (!$this->keepHTML && $this->lastClosedTag == $this->parser->tagName) {
+        $this->out("\n".$this->indent.'<!-- -->'."\n".$this->indent."\n".$this->indent);
+      }
+    } else {
+      $this->unstack();
+      if ($this->parent() != 'li' || preg_match('#^\s*(</li\s*>\s*<li\s*>\s*)?<(p|blockquote)\s*>#sU', $this->parser->html)) {
+        # dont make Markdown add unneeded paragraphs
+        $this->setLineBreaks(2);
+      }
+    }
+  }
+  /**
+   * handle <ul> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_ol() {
+    # same as above
+    $this->parser->tagAttributes['num'] = 0;
+    $this->handleTag_ul();
+  }
+  /**
+   * handle <li> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_li() {
+    if ($this->parent() == 'ol') {
+      $parent =& $this->getStacked('ol');
+      if ($this->parser->isStartTag) {
+        $parent['num']++;
+        $this->out($parent['num'].'.'.str_repeat(' ', 3 - strlen($parent['num'])), true);
+      }
+      $this->indent('    ', false);
+    } else {
+      if ($this->parser->isStartTag) {
+        $this->out('*   ', true);
+      }
+      $this->indent('    ', false);
+    }
+    if (!$this->parser->isStartTag) {
+      $this->setLineBreaks(1);
+    }
+  }
+  /**
+   * handle <hr /> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_hr() {
+    if (!$this->parser->isStartTag) {
+      return; # just to be sure this really is an empty tag
+    }
+    $this->out('* * *', true);
+    $this->setLineBreaks(2);
+  }
+  /**
+   * handle <br /> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_br() {
+    $this->out("  \n".$this->indent, true);
+    $this->parser->html = ltrim($this->parser->html);
+  }
+  /**
+   * node stack, e.g. for <a> and <abbr> tags
+   *
+   * @var array<array>
+   */
+  var $stack = array();
+  /**
+   * add current node to the stack
+   * this only stores the attributes
+   *
+   * @param void
+   * @return void
+   */
+  function stack() {
+    if (!isset($this->stack[$this->parser->tagName])) {
+      $this->stack[$this->parser->tagName] = array();
+    }
+    array_push($this->stack[$this->parser->tagName], $this->parser->tagAttributes);
+  }
+  /**
+   * remove current tag from stack
+   *
+   * @param void
+   * @return array
+   */
+  function unstack() {
+    if (!isset($this->stack[$this->parser->tagName]) || !is_array($this->stack[$this->parser->tagName])) {
+      trigger_error('Trying to unstack from empty stack. This must not happen.', E_USER_ERROR);
+    }
+    return array_pop($this->stack[$this->parser->tagName]);
+  }
+  /**
+   * get last stacked element of type $tagName
+   *
+   * @param string $tagName
+   * @return array
+   */
+  function & getStacked($tagName) {
+    // no end() so it can be referenced
+    return $this->stack[$tagName][count($this->stack[$tagName])-1];
+  }
+  /**
+   * set number of line breaks before next start tag
+   *
+   * @param int $number
+   * @return void
+   */
+  function setLineBreaks($number) {
+    if ($this->lineBreaks < $number) {
+      $this->lineBreaks = $number;
+    }
+  }
+  /**
+   * stores current buffers
+   *
+   * @var array<string>
+   */
+  var $buffer = array();
+  /**
+   * buffer next parser output until unbuffer() is called
+   *
+   * @param void
+   * @return void
+   */
+  function buffer() {
+    array_push($this->buffer, '');
+  }
+  /**
+   * end current buffer and return buffered output
+   *
+   * @param void
+   * @return string
+   */
+  function unbuffer() {
+    return array_pop($this->buffer);
+  }
+  /**
+   * append string to the correct var, either
+   * directly to $this->output or to the current
+   * buffers
+   *
+   * @param string $put
+   * @return void
+   */
+  function out($put, $nowrap = false) {
+    if (empty($put)) {
+      return;
+    }
+    if (!empty($this->buffer)) {
+      $this->buffer[count($this->buffer) - 1] .= $put;
+    } else {
+      if ($this->bodyWidth && !$this->parser->keepWhitespace) { # wrap lines
+        // get last line
+        $pos = strrpos($this->output, "\n");
+        if ($pos === false) {
+          $line = $this->output;
+        } else {
+          $line = substr($this->output, $pos);
+        }
+
+        if ($nowrap) {
+          if ($put[0] != "\n" && $this->strlen($line) + $this->strlen($put) > $this->bodyWidth) {
+            $this->output .= "\n".$this->indent.$put;
+          } else {
+            $this->output .= $put;
+          }
+          return;
+        } else {
+          $put .= "\n"; # make sure we get all lines in the while below
+          $lineLen = $this->strlen($line);
+          while ($pos = strpos($put, "\n")) {
+            $putLine = substr($put, 0, $pos+1);
+            $put = substr($put, $pos+1);
+            $putLen = $this->strlen($putLine);
+            if ($lineLen + $putLen < $this->bodyWidth) {
+              $this->output .= $putLine;
+              $lineLen = $putLen;
+            } else {
+              $split = preg_split('#^(.{0,'.($this->bodyWidth - $lineLen).'})\b#', $putLine, 2, PREG_SPLIT_OFFSET_CAPTURE | PREG_SPLIT_DELIM_CAPTURE);
+              $this->output .= rtrim($split[1][0])."\n".$this->indent.$this->wordwrap(ltrim($split[2][0]), $this->bodyWidth, "\n".$this->indent, false);
+            }
+          }
+          $this->output = substr($this->output, 0, -1);
+          return;
+        }
+      } else {
+        $this->output .= $put;
+      }
+    }
+  }
+  /**
+   * current indentation
+   *
+   * @var string
+   */
+  var $indent = '';
+  /**
+   * indent next output (start tag) or unindent (end tag)
+   *
+   * @param string $str indentation
+   * @param bool $output add indendation to output
+   * @return void
+   */
+  function indent($str, $output = true) {
+    if ($this->parser->isStartTag) {
+      $this->indent .= $str;
+      if ($output) {
+        $this->out($str, true);
+      }
+    } else {
+      $this->indent = substr($this->indent, 0, -strlen($str));
+    }
+  }
+  /**
+   * decode email addresses
+   *
+   * @author derernst@gmx.ch <http://www.php.net/manual/en/function.html-entity-decode.php#68536>
+   * @author Milian Wolff <http://milianw.de>
+   */
+  function decode($text, $quote_style = ENT_QUOTES) {
+    if (version_compare(PHP_VERSION, '5', '>=')) {
+      # UTF-8 is only supported in PHP 5.x.x and above
+      $text = html_entity_decode($text, $quote_style, 'UTF-8');
+    } else {
+      if (function_exists('html_entity_decode')) {
+        $text = html_entity_decode($text, $quote_style, 'ISO-8859-1');
+      } else {
+        static $trans_tbl;
+        if (!isset($trans_tbl)) {
+          $trans_tbl = array_flip(get_html_translation_table(HTML_ENTITIES, $quote_style));
+        }
+        $text = strtr($text, $trans_tbl);
+      }
+      $text = preg_replace_callback('~&#x([0-9a-f]+);~i', array(&$this, '_decode_hex'), $text);
+      $text = preg_replace_callback('~&#(\d{2,5});~', array(&$this, '_decode_numeric'), $text);
+    }
+    return $text;
+  }
+  /**
+   * callback for decode() which converts a hexadecimal entity to UTF-8
+   *
+   * @param array $matches
+   * @return string UTF-8 encoded
+   */
+  function _decode_hex($matches) {
+    return $this->unichr(hexdec($matches[1]));
+  }
+  /**
+   * callback for decode() which converts a numerical entity to UTF-8
+   *
+   * @param array $matches
+   * @return string UTF-8 encoded
+   */
+  function _decode_numeric($matches) {
+    return $this->unichr($matches[1]);
+  }
+  /**
+   * UTF-8 chr() which supports numeric entities
+   *
+   * @author grey - greywyvern - com <http://www.php.net/manual/en/function.chr.php#55978>
+   * @param array $matches
+   * @return string UTF-8 encoded
+   */
+  function unichr($dec) {
+    if ($dec < 128) {
+      $utf = chr($dec);
+    } else if ($dec < 2048) {
+      $utf = chr(192 + (($dec - ($dec % 64)) / 64));
+      $utf .= chr(128 + ($dec % 64));
+    } else {
+      $utf = chr(224 + (($dec - ($dec % 4096)) / 4096));
+      $utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
+      $utf .= chr(128 + ($dec % 64));
+    }
+    return $utf;
+  }
+  /**
+   * UTF-8 strlen()
+   *
+   * @param string $str
+   * @return int
+   *
+   * @author dtorop 932 at hotmail dot com <http://www.php.net/manual/en/function.strlen.php#37975>
+   * @author Milian Wolff <http://milianw.de>
+   */
+  function strlen($str) {
+    if (function_exists('mb_strlen')) {
+      return mb_strlen($str, 'UTF-8');
+    } else {
+      return preg_match_all('/[\x00-\x7F\xC0-\xFD]/', $str, $var_empty);
+    }
+  }
+  /**
+  * wordwrap for utf8 encoded strings
+  *
+  * @param string $str
+  * @param integer $len
+  * @param string $what
+  * @return string
+  */
+  function wordwrap($str, $width, $break, $cut = false){
+    if (!$cut) {
+      $regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){1,'.$width.'}\b#';
+    } else {
+      $regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.'}#';
+    }
+    $return = '';
+    while (preg_match($regexp, $str, $matches)) {
+      $string = $matches[0];
+      $str = ltrim(substr($str, strlen($string)));
+      if (!$cut && isset($str[0]) && in_array($str[0], array('.', '!', ';', ':', '?', ','))) {
+        $string .= $str[0];
+        $str = ltrim(substr($str, 1));
+      }
+      $return .= $string.$break;
+    }
+    return $return.ltrim($str);
+  }
+  /**
+   * check if current node has a $tagName as parent (somewhere, not only the direct parent)
+   *
+   * @param string $tagName
+   * @return bool
+   */
+  function hasParent($tagName) {
+    return in_array($tagName, $this->parser->openTags);
+  }
+  /**
+   * get tagName of direct parent tag
+   *
+   * @param void
+   * @return string $tagName
+   */
+  function parent() {
+    return end($this->parser->openTags);
+  }
+}
\ No newline at end of file
blob - /dev/null
blob + b3fffbd5cb71c7ab3abd2723be1b32c7fa8f077d (mode 755)
--- /dev/null
+++ cookbook/markdown-output/markdownify/markdownify_cli.php
@@ -0,0 +1,33 @@
+#!/usr/bin/php
+<?php
+require dirname(__FILE__) .'/markdownify_extra.php';
+
+function param($name, $default = false) {
+  if (!in_array('--'.$name, $_SERVER['argv']))
+    return $default;
+  reset($_SERVER['argv']);
+  while (each($_SERVER['argv'])) {
+    if (current($_SERVER['argv']) == '--'.$name)
+      break;
+  }
+  $value = next($_SERVER['argv']);
+  if ($value === false || substr($value, 0, 2) == '--')
+    return true;
+  else
+    return $value;
+}
+
+
+$input = stream_get_contents(STDIN);
+
+$linksAfterEachParagraph = param('links');
+$bodyWidth = param('width');
+$keepHTML = param('html', true);
+
+if (param('no_extra')) {
+  $parser = new Markdownify($linksAfterEachParagraph, $bodyWidth, $keepHTML);
+} else {
+  $parser = new Markdownify_Extra($linksAfterEachParagraph, $bodyWidth, $keepHTML);
+}
+
+echo $parser->parseString($input) ."\n";
\ No newline at end of file
blob - /dev/null
blob + e620499db93f9a68ca812dbfac41ae06071dca2d (mode 644)
--- /dev/null
+++ cookbook/markdown-output/markdownify/markdownify_extra.php
@@ -0,0 +1,496 @@
+<?php
+/**
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * Version 1.0.1 by Said Achmiz.
+ * - v1.0.1: Added ignoreForeignAttributes flag.
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * Class to convert HTML to Markdown with PHP Markdown Extra syntax support.
+ *
+ * @version 1.0.1 alpha
+ * @author Milian Wolff (<mail@milianw.de>, <http://milianw.de>)
+ * @license LGPL, see LICENSE_LGPL.txt and the summary below
+ * @copyright (C) 2007  Milian Wolff
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+/**
+ * standard Markdownify class
+ */
+require_once dirname(__FILE__).'/markdownify.php';
+
+class Markdownify_Extra extends Markdownify {
+  /**
+   * table data, including rows with content and the maximum width of each col
+   *
+   * @var array
+   */
+  var $table = array();
+  /**
+   * current col
+   *
+   * @var int
+   */
+  var $col = -1;
+  /**
+   * current row
+   *
+   * @var int
+   */
+  var $row = 0;
+  /**
+   * constructor, see Markdownify::Markdownify() for more information
+   */
+  function __construct($linksAfterEachParagraph = MDFY_LINKS_EACH_PARAGRAPH, $bodyWidth = MDFY_BODYWIDTH, $keepHTML = MDFY_KEEPHTML, $ignoreForeignAttributes = MDFY_IGNORE_FOREIGN_ATTRIBUTES) {
+    parent::__construct($linksAfterEachParagraph, $bodyWidth, $keepHTML, $ignoreForeignAttributes);
+
+    ### new markdownable tags & attributes
+    # header ids: # foo {bar}
+    $this->isMarkdownable['h1']['id'] = 'optional';
+    $this->isMarkdownable['h2']['id'] = 'optional';
+    $this->isMarkdownable['h3']['id'] = 'optional';
+    $this->isMarkdownable['h4']['id'] = 'optional';
+    $this->isMarkdownable['h5']['id'] = 'optional';
+    $this->isMarkdownable['h6']['id'] = 'optional';
+    # tables
+    $this->isMarkdownable['table'] = array();
+    $this->isMarkdownable['th'] = array(
+      'align' => 'optional',
+    );
+    $this->isMarkdownable['td'] = array(
+      'align' => 'optional',
+    );
+    $this->isMarkdownable['tr'] = array();
+    array_push($this->ignore, 'thead');
+    array_push($this->ignore, 'tbody');
+    array_push($this->ignore, 'tfoot');
+    # definition lists
+    $this->isMarkdownable['dl'] = array();
+    $this->isMarkdownable['dd'] = array();
+    $this->isMarkdownable['dt'] = array();
+    # footnotes
+    $this->isMarkdownable['fnref'] = array(
+      'target' => 'required',
+    );
+    $this->isMarkdownable['footnotes'] = array();
+    $this->isMarkdownable['fn'] = array(
+      'name' => 'required',
+    );
+    $this->parser->blockElements['fnref'] = false;
+    $this->parser->blockElements['fn'] = true;
+    $this->parser->blockElements['footnotes'] = true;
+    # abbr
+    $this->isMarkdownable['abbr'] = array(
+      'title' => 'required',
+    );
+    # build RegEx lookahead to decide wether table can pe parsed or not
+    $inlineTags = array_keys($this->parser->blockElements, false);
+    $colContents = '(?:[^<]|<(?:'.implode('|', $inlineTags).'|[^a-z]))+';
+    $this->tableLookaheadHeader = '{
+    ^\s*(?:<thead\s*>)?\s*                               # open optional thead
+      <tr\s*>\s*(?:                                    # start required row with headers
+        <th(?:\s+align=("|\')(?:left|center|right)\1)?\s*>   # header with optional align
+        \s*'.$colContents.'\s*                       # contents
+        </th>\s*                                     # close header
+      )+</tr>                                          # close row with headers
+    \s*(?:</thead>)?                                     # close optional thead
+    }sxi';
+    $this->tdSubstitute = '\s*'.$colContents.'\s*        # contents
+          </td>\s*';
+    $this->tableLookaheadBody = '{
+      \s*(?:<tbody\s*>)?\s*                            # open optional tbody
+        (?:<tr\s*>\s*                                # start row
+          %s                                       # cols to be substituted
+        </tr>)+                                      # close row
+      \s*(?:</tbody>)?                                 # close optional tbody
+    \s*</table>                                          # close table
+    }sxi';
+  }
+  /**
+   * handle header tags (<h1> - <h6>)
+   *
+   * @param int $level 1-6
+   * @return void
+   */
+  function handleHeader($level) {
+    static $id = null;
+    if ($this->parser->isStartTag) {
+      if (isset($this->parser->tagAttributes['id'])) {
+        $id = $this->parser->tagAttributes['id'];
+      }
+    } else {
+      if (!is_null($id)) {
+        $this->out(' {#'.$id.'}');
+        $id = null;
+      }
+    }
+    parent::handleHeader($level);
+  }
+  /**
+   * handle <abbr> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_abbr() {
+    if ($this->parser->isStartTag) {
+      $this->stack();
+      $this->buffer();
+    } else {
+      $tag = $this->unstack();
+      $tag['text'] = $this->unbuffer();
+      $add = true;
+      foreach ($this->stack['abbr'] as $stacked) {
+        if ($stacked['text'] == $tag['text']) {
+          /** TODO: differing abbr definitions, i.e. different titles for same text **/
+          $add = false;
+          break;
+        }
+      }
+      $this->out($tag['text']);
+      if ($add) {
+        array_push($this->stack['abbr'], $tag);
+      }
+    }
+  }
+  /**
+   * flush stacked abbr tags
+   *
+   * @param void
+   * @return void
+   */
+  function flushStacked_abbr() {
+    $out = array();
+    foreach ($this->stack['abbr'] as $k => $tag) {
+      if (!isset($tag['unstacked'])) {
+        array_push($out, ' *['.$tag['text'].']: '.$tag['title']);
+        $tag['unstacked'] = true;
+        $this->stack['abbr'][$k] = $tag;
+      }
+    }
+    if (!empty($out)) {
+      $this->out("\n\n".implode("\n", $out));
+    }
+  }
+  /**
+   * handle <table> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_table() {
+    if ($this->parser->isStartTag) {
+      # check if upcoming table can be converted
+      if ($this->keepHTML) {
+        if (preg_match($this->tableLookaheadHeader, $this->parser->html, $matches)) {
+          # header seems good, now check body
+          # get align & number of cols
+          preg_match_all('#<th(?:\s+align=("|\')(left|right|center)\1)?\s*>#si', $matches[0], $cols);
+          $regEx = '';
+          $i = 1;
+          $aligns = array();
+          foreach ($cols[2] as $align) {
+            $align = strtolower($align);
+            array_push($aligns, $align);
+            if (empty($align)) {
+              $align = 'left'; # default value
+            }
+            $td = '\s+align=("|\')'.$align.'\\'.$i;
+            $i++;
+            if ($align == 'left') {
+              # look for empty align or left
+              $td = '(?:'.$td.')?';
+            }
+            $td = '<td'.$td.'\s*>';
+            $regEx .= $td.$this->tdSubstitute;
+          }
+          $regEx = sprintf($this->tableLookaheadBody, $regEx);
+          if (preg_match($regEx, $this->parser->html, $matches, null, strlen($matches[0]))) {
+            # this is a markdownable table tag!
+            $this->table = array(
+              'rows' => array(),
+              'col_widths' => array(),
+              'aligns' => $aligns,
+            );
+            $this->row = 0;
+          } else {
+            # non markdownable table
+            $this->handleTagToText();
+          }
+        } else {
+          # non markdownable table
+          $this->handleTagToText();
+        }
+      } else {
+        $this->table = array(
+          'rows' => array(),
+          'col_widths' => array(),
+          'aligns' => array(),
+        );
+        $this->row = 0;
+      }
+    } else {
+      # finally build the table in Markdown Extra syntax
+      $separator = array();
+      # seperator with correct align identifikators
+      foreach($this->table['aligns'] as $col => $align) {
+        if (!$this->keepHTML && !isset($this->table['col_widths'][$col])) {
+          break;
+        }
+        $left = ' ';
+        $right = ' ';
+        switch ($align) {
+          case 'left':
+            $left = ':';
+            break;
+          case 'center':
+            $right = ':';
+            $left = ':';
+          case 'right':
+            $right = ':';
+            break;
+        }
+        array_push($separator, $left.str_repeat('-', $this->table['col_widths'][$col]).$right);
+      }
+      $separator = '|'.implode('|', $separator).'|';
+
+      $rows = array();
+      # add padding
+      array_walk_recursive($this->table['rows'], array(&$this, 'alignTdContent'));
+      $header = array_shift($this->table['rows']);
+      array_push($rows, '| '.implode(' | ', $header).' |');
+      array_push($rows, $separator);
+      foreach ($this->table['rows'] as $row) {
+        array_push($rows, '| '.implode(' | ', $row).' |');
+      }
+      $this->out(implode("\n".$this->indent, $rows));
+      $this->table = array();
+      $this->setLineBreaks(2);
+    }
+  }
+  /**
+   * properly pad content so it is aligned as whished
+   * should be used with array_walk_recursive on $this->table['rows']
+   *
+   * @param string &$content
+   * @param int $col
+   * @return void
+   */
+  function alignTdContent(&$content, $col) {
+    switch ($this->table['aligns'][$col]) {
+      default:
+      case 'left':
+        $content .= str_repeat(' ', $this->table['col_widths'][$col] - $this->strlen($content));
+        break;
+      case 'right':
+        $content = str_repeat(' ', $this->table['col_widths'][$col] - $this->strlen($content)).$content;
+        break;
+      case 'center':
+        $paddingNeeded = $this->table['col_widths'][$col] - $this->strlen($content);
+        $left = floor($paddingNeeded / 2);
+        $right = $paddingNeeded - $left;
+        $content = str_repeat(' ', $left).$content.str_repeat(' ', $right);
+        break;
+    }
+  }
+  /**
+   * handle <tr> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_tr() {
+    if ($this->parser->isStartTag) {
+      $this->col = -1;
+    } else {
+      $this->row++;
+    }
+  }
+  /**
+   * handle <td> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_td() {
+    if ($this->parser->isStartTag) {
+      $this->col++;
+      if (!isset($this->table['col_widths'][$this->col])) {
+        $this->table['col_widths'][$this->col] = 0;
+      }
+      $this->buffer();
+    } else {
+      $buffer = trim($this->unbuffer());
+      $this->table['col_widths'][$this->col] = max($this->table['col_widths'][$this->col], $this->strlen($buffer));
+      $this->table['rows'][$this->row][$this->col] = $buffer;
+    }
+  }
+  /**
+   * handle <th> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_th() {
+    if (!$this->keepHTML && !isset($this->table['rows'][1]) && !isset($this->table['aligns'][$this->col+1])) {
+      if (isset($this->parser->tagAttributes['align'])) {
+        $this->table['aligns'][$this->col+1] = $this->parser->tagAttributes['align'];
+      } else {
+        $this->table['aligns'][$this->col+1] = '';
+      }
+    }
+    $this->handleTag_td();
+  }
+  /**
+   * handle <dl> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_dl() {
+    if (!$this->parser->isStartTag) {
+      $this->setLineBreaks(2);
+    }
+  }
+  /**
+   * handle <dt> tags
+   *
+   * @param void
+   * @return void
+   **/
+  function handleTag_dt() {
+    if (!$this->parser->isStartTag) {
+      $this->setLineBreaks(1);
+    }
+  }
+  /**
+   * handle <dd> tags
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_dd() {
+    if ($this->parser->isStartTag) {
+      if (substr(ltrim($this->parser->html), 0, 3) == '<p>') {
+        # next comes a paragraph, so we'll need an extra line
+        $this->out("\n".$this->indent);
+      } elseif (substr($this->output, -2) == "\n\n") {
+        $this->output = substr($this->output, 0, -1);
+      }
+      $this->out(':   ');
+      $this->indent('    ', false);
+    } else {
+      # lookahead for next dt
+      if (substr(ltrim($this->parser->html), 0, 4) == '<dt>') {
+        $this->setLineBreaks(2);
+      } else {
+        $this->setLineBreaks(1);
+      }
+      $this->indent('    ');
+    }
+  }
+  /**
+   * handle <fnref /> tags (custom footnote references, see markdownify_extra::parseString())
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_fnref() {
+    $this->out('[^'.$this->parser->tagAttributes['target'].']');
+  }
+  /**
+   * handle <fn> tags (custom footnotes, see markdownify_extra::parseString()
+   * and markdownify_extra::_makeFootnotes())
+   *
+   * @param void
+   * @return void
+   */
+  function handleTag_fn() {
+    if ($this->parser->isStartTag) {
+      $this->out('[^'.$this->parser->tagAttributes['name'].']:');
+      $this->setLineBreaks(1);
+    } else {
+      $this->setLineBreaks(2);
+    }
+    $this->indent('    ');
+  }
+  /**
+   * handle <footnotes> tag (custom footnotes, see markdownify_extra::parseString()
+   *  and markdownify_extra::_makeFootnotes())
+   *
+   *  @param void
+   *  @return void
+   */
+  function handleTag_footnotes() {
+    if (!$this->parser->isStartTag) {
+      $this->setLineBreaks(2);
+    }
+  }
+  /**
+   * parse a HTML string, clean up footnotes prior
+   *
+   * @param string $HTML input
+   * @return string Markdown formatted output
+   */
+  function parseString($html) {
+    /** TODO: custom markdown-extra options, e.g. titles & classes **/
+    # <sup id="fnref:..."><a href"#fn..." rel="footnote">...</a></sup>
+    # => <fnref target="..." />
+    $html = preg_replace('@<sup id="fnref:([^"]+)">\s*<a href="#fn:\1" rel="footnote">\s*\d+\s*</a>\s*</sup>@Us', '<fnref target="$1" />', $html);
+    # <div class="footnotes">
+    # <hr />
+    # <ol>
+    #
+    # <li id="fn:...">...</li>
+    # ...
+    #
+    # </ol>
+    # </div>
+    # =>
+    # <footnotes>
+    #   <fn name="...">...</fn>
+    #   ...
+    # </footnotes>
+    $html = preg_replace_callback('#<div class="footnotes">\s*<hr />\s*<ol>\s*(.+)\s*</ol>\s*</div>#Us', array(&$this, '_makeFootnotes'), $html);
+    return parent::parseString($html);
+  }
+  /**
+   * replace HTML representation of footnotes with something more easily parsable
+   *
+   * @note this is a callback to be used in parseString()
+   *
+   * @param array $matches
+   * @return string
+   */
+  function _makeFootnotes($matches) {
+    # <li id="fn:1">
+    #   ...
+    #   <a href="#fnref:block" rev="footnote">&#8617;</a></p>
+    # </li>
+    # => <fn name="1">...</fn>
+    # remove footnote link
+    $fns = preg_replace('@\s*(&#160;\s*)?<a href="#fnref:[^"]+" rev="footnote"[^>]*>&#8617;</a>\s*@s', '', $matches[1]);
+    # remove empty paragraph
+    $fns = preg_replace('@<p>\s*</p>@s', '', $fns);
+    # <li id="fn:1">...</li> -> <footnote nr="1">...</footnote>
+    $fns = str_replace('<li id="fn:', '<fn name="', $fns);
+
+    $fns = '<footnotes>'.$fns.'</footnotes>';
+    return preg_replace('#</li>\s*(?=(?:<fn|</footnotes>))#s', '</fn>$1', $fns);
+  }
+}
\ No newline at end of file
blob - /dev/null
blob + 1a8ecacda89efc17ee1afbb8afbde6fb3472c3d7 (mode 644)
--- /dev/null
+++ cookbook/markdown-output/markdownify/parsehtml/parsehtml.php
@@ -0,0 +1,618 @@
+<?php
+/**
+ * parseHTML is a HTML parser which works with PHP 4 and above.
+ * It tries to handle invalid HTML to some degree.
+ *
+ * @version 1.0 beta
+ * @author Milian Wolff (mail@milianw.de, http://milianw.de)
+ * @license LGPL, see LICENSE_LGPL.txt and the summary below
+ * @copyright (C) 2007  Milian Wolff
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+class parseHTML {
+  /**
+   * tags which are always empty (<br /> etc.)
+   *
+   * @var array<string>
+   */
+  var $emptyTags = array(
+    'br',
+    'hr',
+    'input',
+    'img',
+    'area',
+    'link',
+    'meta',
+    'param',
+  );
+  /**
+   * tags with preformatted text
+   * whitespaces wont be touched in them
+   *
+   * @var array<string>
+   */
+  var $preformattedTags = array(
+    'script',
+    'style',
+    'pre',
+    'code',
+  );
+  /**
+   * supress HTML tags inside preformatted tags (see above)
+   *
+   * @var bool
+   */
+  var $noTagsInCode = false;
+  /**
+   * html to be parsed
+   *
+   * @var string
+   */
+  var $html = '';
+  /**
+   * node type:
+   *
+   * - tag (see isStartTag)
+   * - text (includes cdata)
+   * - comment
+   * - doctype
+   * - pi (processing instruction)
+   *
+   * @var string
+   */
+  var $nodeType = '';
+  /**
+   * current node content, i.e. either a
+   * simple string (text node), or something like
+   * <tag attrib="value"...>
+   *
+   * @var string
+   */
+  var $node = '';
+  /**
+   * wether current node is an opening tag (<a>) or not (</a>)
+   * set to NULL if current node is not a tag
+   * NOTE: empty tags (<br />) set this to true as well!
+   *
+   * @var bool | null
+   */
+  var $isStartTag = null;
+  /**
+   * wether current node is an empty tag (<br />) or not (<a></a>)
+   *
+   * @var bool | null
+   */
+  var $isEmptyTag = null;
+  /**
+   * tag name
+   *
+   * @var string | null
+   */
+  var $tagName = '';
+  /**
+   * attributes of current tag
+   *
+   * @var array (attribName=>value) | null
+   */
+  var $tagAttributes = null;
+  /**
+   * wether the current tag is a block element
+   *
+   * @var bool | null
+   */
+  var $isBlockElement = null;
+
+  /**
+   * keep whitespace
+   *
+   * @var int
+   */
+  var $keepWhitespace = 0;
+  /**
+   * list of open tags
+   * count this to get current depth
+   *
+   * @var array
+   */
+  var $openTags = array();
+  /**
+   * list of block elements
+   *
+   * @var array
+   * TODO: what shall we do with <del> and <ins> ?!
+   */
+  var $blockElements = array (
+    # tag name => <bool> is block
+    # block elements
+    'address' => true,
+    'blockquote' => true,
+    'center' => true,
+    'del' => true,
+    'dir' => true,
+    'div' => true,
+    'dl' => true,
+    'fieldset' => true,
+    'form' => true,
+    'h1' => true,
+    'h2' => true,
+    'h3' => true,
+    'h4' => true,
+    'h5' => true,
+    'h6' => true,
+    'hr' => true,
+    'ins' => true,
+    'isindex' => true,
+    'menu' => true,
+    'noframes' => true,
+    'noscript' => true,
+    'ol' => true,
+    'p' => true,
+    'pre' => true,
+    'table' => true,
+    'ul' => true,
+    # set table elements and list items to block as well
+    'thead' => true,
+    'tbody' => true,
+    'tfoot' => true,
+    'td' => true,
+    'tr' => true,
+    'th' => true,
+    'li' => true,
+    'dd' => true,
+    'dt' => true,
+    # header items and html / body as well
+    'html' => true,
+    'body' => true,
+    'head' => true,
+    'meta' => true,
+    'link' => true,
+    'style' => true,
+    'title' => true,
+    # unfancy media tags, when indented should be rendered as block
+    'map' => true,
+    'object' => true,
+    'param' => true,
+    'embed' => true,
+    'area' => true,
+    # inline elements
+    'a' => false,
+    'abbr' => false,
+    'acronym' => false,
+    'applet' => false,
+    'b' => false,
+    'basefont' => false,
+    'bdo' => false,
+    'big' => false,
+    'br' => false,
+    'button' => false,
+    'cite' => false,
+    'code' => false,
+    'del' => false,
+    'dfn' => false,
+    'em' => false,
+    'font' => false,
+    'i' => false,
+    'img' => false,
+    'ins' => false,
+    'input' => false,
+    'iframe' => false,
+    'kbd' => false,
+    'label' => false,
+    'q' => false,
+    'samp' => false,
+    'script' => false,
+    'select' => false,
+    'small' => false,
+    'span' => false,
+    'strong' => false,
+    'sub' => false,
+    'sup' => false,
+    'textarea' => false,
+    'tt' => false,
+    'var' => false,
+  );
+  /**
+   * get next node, set $this->html prior!
+   *
+   * @param void
+   * @return bool
+   */
+  function nextNode() {
+    if (empty($this->html)) {
+      # we are done with parsing the html string
+      return false;
+    }
+    static $skipWhitespace = true;
+    if ($this->isStartTag && !$this->isEmptyTag) {
+      array_push($this->openTags, $this->tagName);
+      if (in_array($this->tagName, $this->preformattedTags)) {
+        # dont truncate whitespaces for <code> or <pre> contents
+        $this->keepWhitespace++;
+      }
+    }
+
+    if ($this->html[0] == '<') {
+      $token = substr($this->html, 0, 9);
+      if (substr($token, 0, 2) == '<?') {
+        # xml prolog or other pi's
+        /** TODO **/
+        #trigger_error('this might need some work', E_USER_NOTICE);
+        $pos = strpos($this->html, '>');
+        $this->setNode('pi', $pos + 1);
+        return true;
+      }
+      if (substr($token, 0, 4) == '<!--') {
+        # comment
+        $pos = strpos($this->html, '-->');
+        if ($pos === false) {
+          # could not find a closing -->, use next gt instead
+          # this is firefox' behaviour
+          $pos = strpos($this->html, '>') + 1;
+        } else {
+          $pos += 3;
+        }
+        $this->setNode('comment', $pos);
+
+        $skipWhitespace = true;
+        return true;
+      }
+      if ($token == '<!DOCTYPE') {
+        # doctype
+        $this->setNode('doctype', strpos($this->html, '>')+1);
+
+        $skipWhitespace = true;
+        return true;
+      }
+      if ($token == '<![CDATA[') {
+        # cdata, use text node
+
+        # remove leading <![CDATA[
+        $this->html = substr($this->html, 9);
+
+        $this->setNode('text', strpos($this->html, ']]>')+3);
+
+        # remove trailing ]]> and trim
+        $this->node = substr($this->node, 0, -3);
+        $this->handleWhitespaces();
+
+        $skipWhitespace = true;
+        return true;
+      }
+      if ($this->parseTag()) {
+        # seems to be a tag
+        # handle whitespaces
+        if ($this->isBlockElement) {
+          $skipWhitespace = true;
+        } else {
+          $skipWhitespace = false;
+        }
+        return true;
+      }
+    }
+    if ($this->keepWhitespace) {
+      $skipWhitespace = false;
+    }
+    # when we get here it seems to be a text node
+    $pos = strpos($this->html, '<');
+    if ($pos === false) {
+      $pos = strlen($this->html);
+    }
+    $this->setNode('text', $pos);
+    $this->handleWhitespaces();
+    if ($skipWhitespace && $this->node == ' ') {
+      return $this->nextNode();
+    }
+    $skipWhitespace = false;
+    return true;
+  }
+  /**
+   * parse tag, set tag name and attributes, see if it's a closing tag and so forth...
+   *
+   * @param void
+   * @return bool
+   */
+  function parseTag() {
+    static $a_ord, $z_ord, $special_ords;
+    if (!isset($a_ord)) {
+      $a_ord = ord('a');
+      $z_ord = ord('z');
+      $special_ords = array(
+        ord(':'), // for xml:lang
+        ord('-'), // for http-equiv
+      );
+    }
+
+    $tagName = '';
+
+    $pos = 1;
+    $isStartTag = $this->html[$pos] != '/';
+    if (!$isStartTag) {
+      $pos++;
+    }
+    # get tagName
+    while (isset($this->html[$pos])) {
+      $pos_ord = ord(strtolower($this->html[$pos]));
+      if (($pos_ord >= $a_ord && $pos_ord <= $z_ord) || (!empty($tagName) && is_numeric($this->html[$pos]))) {
+        $tagName .= $this->html[$pos];
+        $pos++;
+      } else {
+        $pos--;
+        break;
+      }
+    }
+
+    $tagName = strtolower($tagName);
+    if (empty($tagName) || !isset($this->blockElements[$tagName])) {
+      # something went wrong => invalid tag
+      $this->invalidTag();
+      return false;
+    }
+    if ($this->noTagsInCode && end($this->openTags) == 'code' && !($tagName == 'code' && !$isStartTag)) {
+      # we supress all HTML tags inside code tags
+      $this->invalidTag();
+      return false;
+    }
+
+    # get tag attributes
+    /** TODO: in html 4 attributes do not need to be quoted **/
+    $isEmptyTag = false;
+    $attributes = array();
+    $currAttrib = '';
+    while (isset($this->html[$pos+1])) {
+      $pos++;
+      # close tag
+      if ($this->html[$pos] == '>' || $this->html[$pos].$this->html[$pos+1] == '/>') {
+        if ($this->html[$pos] == '/') {
+          $isEmptyTag = true;
+          $pos++;
+        }
+        break;
+      }
+
+      $pos_ord = ord(strtolower($this->html[$pos]));
+      if ( ($pos_ord >= $a_ord && $pos_ord <= $z_ord) || in_array($pos_ord, $special_ords)) {
+        # attribute name
+        $currAttrib .= $this->html[$pos];
+      } elseif (in_array($this->html[$pos], array(' ', "\t", "\n"))) {
+        # drop whitespace
+      } elseif (in_array($this->html[$pos].$this->html[$pos+1], array('="', "='"))) {
+        # get attribute value
+        $pos++;
+        $await = $this->html[$pos]; # single or double quote
+        $pos++;
+        $value = '';
+        while (isset($this->html[$pos]) && $this->html[$pos] != $await) {
+          $value .= $this->html[$pos];
+          $pos++;
+        }
+        $attributes[$currAttrib] = $value;
+        $currAttrib = '';
+      } else {
+        $this->invalidTag();
+        return false;
+      }
+    }
+    if ($this->html[$pos] != '>') {
+      $this->invalidTag();
+      return false;
+    }
+
+    if (!empty($currAttrib)) {
+      # html 4 allows something like <option selected> instead of <option selected="selected">
+      $attributes[$currAttrib] = $currAttrib;
+    }
+    if (!$isStartTag) {
+      if (!empty($attributes) || $tagName != end($this->openTags)) {
+        # end tags must not contain any attributes
+        # or maybe we did not expect a different tag to be closed
+        $this->invalidTag();
+        return false;
+      }
+      array_pop($this->openTags);
+      if (in_array($tagName, $this->preformattedTags)) {
+        $this->keepWhitespace--;
+      }
+    }
+    $pos++;
+    $this->node = substr($this->html, 0, $pos);
+    $this->html = substr($this->html, $pos);
+    $this->tagName = $tagName;
+    $this->tagAttributes = $attributes;
+    $this->isStartTag = $isStartTag;
+    $this->isEmptyTag = $isEmptyTag || in_array($tagName, $this->emptyTags);
+    if ($this->isEmptyTag) {
+      # might be not well formed
+      $this->node = preg_replace('# */? *>$#', ' />', $this->node);
+    }
+    $this->nodeType = 'tag';
+    $this->isBlockElement = $this->blockElements[$tagName];
+    return true;
+  }
+  /**
+   * handle invalid tags
+   *
+   * @param void
+   * @return void
+   */
+  function invalidTag() {
+    $this->html = substr_replace($this->html, '&lt;', 0, 1);
+  }
+  /**
+   * update all vars and make $this->html shorter
+   *
+   * @param string $type see description for $this->nodeType
+   * @param int $pos to which position shall we cut?
+   * @return void
+   */
+  function setNode($type, $pos) {
+    if ($this->nodeType == 'tag') {
+      # set tag specific vars to null
+      # $type == tag should not be called here
+      # see this::parseTag() for more
+      $this->tagName = null;
+      $this->tagAttributes = null;
+      $this->isStartTag = null;
+      $this->isEmptyTag = null;
+      $this->isBlockElement = null;
+
+    }
+    $this->nodeType = $type;
+    $this->node = substr($this->html, 0, $pos);
+    $this->html = substr($this->html, $pos);
+  }
+  /**
+   * check if $this->html begins with $str
+   *
+   * @param string $str
+   * @return bool
+   */
+  function match($str) {
+    return substr($this->html, 0, strlen($str)) == $str;
+  }
+  /**
+   * truncate whitespaces
+   *
+   * @param void
+   * @return void
+   */
+  function handleWhitespaces() {
+    if ($this->keepWhitespace) {
+      # <pre> or <code> before...
+      return;
+    }
+    # truncate multiple whitespaces to a single one
+    $this->node = preg_replace('#\s+#s', ' ', $this->node);
+  }
+  /**
+   * normalize self::node
+   *
+   * @param void
+   * @return void
+   */
+  function normalizeNode() {
+    $this->node = '<';
+    if (!$this->isStartTag) {
+      $this->node .= '/'.$this->tagName.'>';
+      return;
+    }
+    $this->node .= $this->tagName;
+    foreach ($this->tagAttributes as $name => $value) {
+      $this->node .= ' '.$name.'="'.str_replace('"', '&quot;', $value).'"';
+    }
+    if ($this->isEmptyTag) {
+      $this->node .= ' /';
+    }
+    $this->node .= '>';
+  }
+}
+
+/**
+ * indent a HTML string properly
+ *
+ * @param string $html
+ * @param string $indent optional
+ * @return string
+ */
+function indentHTML($html, $indent = "  ", $noTagsInCode = false) {
+  $parser = new parseHTML;
+  $parser->noTagsInCode = $noTagsInCode;
+  $parser->html = $html;
+  $html = '';
+  $last = true; # last tag was block elem
+  $indent_a = array();
+  while($parser->nextNode()) {
+    if ($parser->nodeType == 'tag') {
+      $parser->normalizeNode();
+    }
+    if ($parser->nodeType == 'tag' && $parser->isBlockElement) {
+      $isPreOrCode = in_array($parser->tagName, array('code', 'pre'));
+      if (!$parser->keepWhitespace && !$last && !$isPreOrCode) {
+        $html = rtrim($html)."\n";
+      }
+      if ($parser->isStartTag) {
+        $html .= implode($indent_a);
+        if (!$parser->isEmptyTag) {
+          array_push($indent_a, $indent);
+        }
+      } else {
+        array_pop($indent_a);
+        if (!$isPreOrCode) {
+          $html .= implode($indent_a);
+        }
+      }
+      $html .= $parser->node;
+      if (!$parser->keepWhitespace && !($isPreOrCode && $parser->isStartTag)) {
+        $html .= "\n";
+      }
+      $last = true;
+    } else {
+      if ($parser->nodeType == 'tag' && $parser->tagName == 'br') {
+        $html .= $parser->node."\n";
+        $last = true;
+        continue;
+      } elseif ($last && !$parser->keepWhitespace) {
+        $html .= implode($indent_a);
+        $parser->node = ltrim($parser->node);
+      }
+      $html .= $parser->node;
+
+      if (in_array($parser->nodeType, array('comment', 'pi', 'doctype'))) {
+        $html .= "\n";
+      } else {
+        $last = false;
+      }
+    }
+  }
+  return $html;
+}
+/*
+# testcase / example
+error_reporting(E_ALL);
+
+$html = '<p>Simple block on one line:</p>
+
+<div>foo</div>
+
+<p>And nested without indentation:</p>
+
+<div>
+<div>
+<div>
+foo
+</div>
+<div style=">"/>
+</div>
+<div>bar</div>
+</div>
+
+<p>And with attributes:</p>
+
+<div>
+    <div id="foo">
+    </div>
+</div>
+
+<p>This was broken in 1.0.2b7:</p>
+
+<div class="inlinepage">
+<div class="toggleableend">
+foo
+</div>
+</div>';
+#$html = '<a href="asdfasdf"       title=\'asdf\' foo="bar">asdf</a>';
+echo indentHTML($html);
+die();
+*/
blob - /dev/null
blob + 3fdf156c1dbff552a155d3b2e330b8d14054f10d (mode 644)
Binary files /dev/null and cookbook/markdown-output.zip differ
blob - /dev/null
blob + f59aedc915b4a85ca181c8a62710494978ea3e8e (mode 644)
--- /dev/null
+++ cookbook/markdownpmw.php
@@ -0,0 +1,85 @@
+<?php
+
+/**
+ * Use Markdown Markup in PmWiki
+ * 
+ * @author Sebastian Siedentopf <schlaefer@macnews.de>
+ * @version 2021-11-12
+ * @link http://www.pmwiki.org/wiki/Cookbook/MarkdownMarkupExtension 
+ * @copyright by the respective authors 2006
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
+ * @package markdownpmw
+ * 
+ * Version 0.2 and later by Said Achmiz
+ */
+
+$RecipeInfo['MarkdownMarkupExtension']['Version'] = '2021-11-12';
+
+SDV($MarkdownMarkupParserOptions, array());
+SDV($MarkdownMarkupMarkdownExtraEnabled, false);
+SDV($MarkdownMarkupUseClassicParser, false);
+SDV($MarkdownMarkupDirectiveArgumentsEnabled, false);
+
+Markup("markdown", '<include', "/\\(:markdown(?:\\s+([^\\n]+))?(?:\\s*)?:\\)(.*?)[\\n]?\\(:markdownend:\\)/s", 
+	"MarkupPmWikiConversion");
+	
+function MarkupPmWikiConversion($m) {
+	global $MarkdownMarkupDirectiveArgumentsEnabled, $MarkdownMarkupParserOptions, 
+		$MarkdownMarkupMarkdownExtraEnabled, $MarkdownMarkupUseClassicParser, 
+		$MarkdownMarkupClassicParserAvailable;
+
+	$args = ParseArgs($m[1]);
+	$options = $MarkdownMarkupParserOptions;
+	$options['extra'] = $MarkdownMarkupMarkdownExtraEnabled;
+	$options['classic'] = $MarkdownMarkupUseClassicParser;
+	if ($MarkdownMarkupDirectiveArgumentsEnabled)
+		$options = array_merge($options, array_slice($args, 1));
+
+	$text = $m[2];
+	$astr = array (
+			"<:vspace>" => "\n\n",
+			"(:nl:)" => "\n",
+			"&gt;" => ">",
+			"&lt;" => "<",
+		);
+	$pstr = array(
+// 			"/<p>/" => "<p class='vspace'>",
+// 			"/&amp;(.*?);/" => "&\\1;",
+		);
+		
+	$text = str_replace(array_keys($astr), $astr, $text);
+	
+	if ($options['classic']) {
+		if (!file_exists("markdown.php"))
+			return Keep("<p style='color: red; font-weight: bold;'>Classic parser not available.</p>\n");
+
+		define(MARKDOWN_PARSER_CLASS, ($options['extra'] ? 'MarkdownExtra_Parser' : 'Markdown_Parser'));			
+		include_once("markdown.php");
+		
+		$text = Markdown($text);
+	} else {
+		if ($options['extra']) {
+			include_once("Michelf/MarkdownExtra.inc.php");
+		} else {
+			include_once("Michelf/Markdown.inc.php");
+		}
+
+		$parser_options = array_slice($options, 2);
+		if (empty($parser_options)) {
+			$text = $options['extra'] ? 
+					Michelf\MarkdownExtra::defaultTransform($text) : 
+					Michelf\Markdown::defaultTransform($text);
+		} else {
+			$parser =  $options['extra'] ? new Michelf\MarkdownExtra : new Michelf\Markdown;
+			foreach ($parser_options as $md_opt => $md_opt_value) {
+				$parser->{$md_opt} = $md_opt_value;
+			}
+			$text = $parser->transform($text);
+		}
+		$text = preg_replace(array_keys($pstr), $pstr, $text); 
+	}
+		
+	return Keep($text);
+}
+
+?>
\ No newline at end of file
blob - /dev/null
blob + 3b349eebddd2a45aeac6d06e00fef79640107ecd (mode 644)
--- /dev/null
+++ docs/.htaccess
@@ -0,0 +1 @@
+AddType text/plain .php
blob - /dev/null
blob + 881874c04988387f3c9b02cfa03a13c202605ade (mode 644)
--- /dev/null
+++ docs/COPYING.txt
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
blob - /dev/null
blob + 39b3e8253f3e738aa8648d28c61df6e8dd2a74f3 (mode 644)
--- /dev/null
+++ docs/DOCUMENTATION.txt
@@ -0,0 +1,10 @@
+Where is the documentation?

+

+PmWiki maintains its documentation as wiki pages.

+If you already have PmWiki installed, then a local copy of

+the documentation is available through PmWiki itself --

+see the "PmWiki.DocumentationIndex" page on your site.

+

+The documentation is also available online at

+https://www.pmwiki.org/wiki/PmWiki/DocumentationIndex .

+

blob - /dev/null
blob + 125adaaaf2a542554acb312b8c3e6a6ac9cb3626 (mode 644)
--- /dev/null
+++ docs/INSTALL.txt
@@ -0,0 +1,39 @@
+This is the INSTALL.txt file for PmWiki.  This document provides

+convenient steps so an administrator can have a PmWiki site up and

+running quickly.  More extensive information about installing PmWiki

+is available at https://www.pmwiki.org/wiki/PmWiki/Installation .

+

+Once your site is up and running you will be able to read the bundled

+documentation pages.

+

+Here are some quick steps to start you on your path toward a complete,

+customized installation:

+

+1a) Put the software in a location accessible by your webserver.

+

+1b) PmWiki can also be run if no webserver is installed.  See

+    https://pmwiki.org/wiki/Cookbook/Standalone

+

+2) Point your browser to pmwiki.php.

+

+3) You may see an error message saying that PmWiki needs to have

+   a writable wiki.d/ directory.  If so, follow the directions to

+   establish one.  This directory will hold your wiki page files.

+

+4) If you want a directory index file, create a file called index.php

+   in the main directory that contains the following single line of

+   text, purposefully without a closing "?>":

+

+<?php include('pmwiki.php');

+

+5) Sitewide configuration settings will go in a "local configuration

+   file" named local/config.php.  Copy the well-commented sample

+   configuration file from docs/sample-config.php to the local/

+   subdirectory, then rename the copy to config.php.  Edit your

+   new local/config.php file to suit your preferences.

+

+That's it.  Next you'll probably want to browse your new site and

+read the bundled documentation.  A good place to start is the

+PmWiki.InitialSetupTasks page.

+

+Enjoy!

blob - /dev/null
blob + 82ea6ef095ebae8bdd5f7677642e9c11abdb97ef (mode 644)
--- /dev/null
+++ docs/UPGRADE.txt
@@ -0,0 +1,50 @@
+This UPGRADE.txt file is a command-line syntax reminder for

+experienced PmWiki administrators.  For full documentation on

+upgrading Pmwiki, see the bundled PmWiki.Upgrades page or visit

+

+  https://www.pmwiki.org/wiki/PmWiki/Upgrades

+

+See also these related pages:

+

+  https://www.pmwiki.org/wiki/PmWiki/BackupAndRestore

+  https://www.pmwiki.org/wiki/PmWiki/Subversion

+

+The examples assume your PmWiki site is in a ./pmwiki/

+directory (a directory named "pmwiki" immediately below the

+working directory).

+

+Backing up (always a good idea!):

+

+  tar -zcvf ~/pmwiki-backup.tar.gz pmwiki

+  zip -9r  ~/pmwiki-backup.zip pmwiki

+

+Or, to keep backups organized by date:

+

+  tar -zcvf ~/pmwiki-site-`date +%Y%m%d%M`.tar.gz pmwiki

+  zip -9r  ~/pmwiki-site-`date +%Y%m%d%M`.zip pmwiki

+

+The latest release is available here:

+

+  https://www.pmwiki.org/pub/pmwiki/pmwiki-latest.tgz

+  https://www.pmwiki.org/pub/pmwiki/pmwiki-latest.zip

+

+Example download commands:

+

+  wget https://www.pmwiki.org/pub/pmwiki/pmwiki-latest.tgz

+  lftpget https://www.pmwiki.org/pub/pmwiki/pmwiki-latest.tgz

+  links https://www.pmwiki.org/pub/pmwiki/pmwiki-latest.tgz

+  lynx https://www.pmwiki.org/pub/pmwiki/pmwiki-latest.tgz

+

+Expanding the archive:

+

+  tar -zxvf pmwiki-latest.tgz  # for the gzipped tarball

+  unzip pmwiki-latest.zip      # for the .zip archive

+

+Copying the files (two ways to do it):

+

+  cp -av pmwiki-2.1.x/. pmwiki

+  cp -Rpv pmwiki-2.1.x/. pmwiki

+

+Subversion upgrade:

+

+  svn export svn://pmwiki.org/pmwiki/tags/latest pmwiki --force

blob - /dev/null
blob + fdc7482af8a707957d907b8d41b8226da58ab29c (mode 644)
--- /dev/null
+++ docs/sample-config.php
@@ -0,0 +1,166 @@
+<?php if (!defined('PmWiki')) exit();
+##  This is a sample config.php file.  To use this file, copy it to
+##  local/config.php, then edit it for whatever customizations you want.
+##  Also, be sure to take a look at https://www.pmwiki.org/wiki/Cookbook
+##  for more details on the customizations that can be added to PmWiki.
+
+##  $WikiTitle is the name that appears in the browser's title bar.
+$WikiTitle = 'PmWiki';
+
+##  $ScriptUrl is the URL for accessing wiki pages with a browser.
+##  $PubDirUrl is the URL for the pub directory.
+# $ScriptUrl = 'https://www.mydomain.com/path/to/pmwiki.php';
+# $PubDirUrl = 'https://www.mydomain.com/path/to/pub';
+
+##  If you want to use URLs of the form .../pmwiki.php/Group/PageName
+##  instead of .../pmwiki.php?p=Group.PageName, try setting
+##  $EnablePathInfo below.  Note that this doesn't work in all environments,
+##  it depends on your webserver and PHP configuration.  You might also
+##  want to check https://www.pmwiki.org/wiki/Cookbook/CleanUrls more
+##  details about this setting and other ways to create nicer-looking urls.
+# $EnablePathInfo = 1;
+
+##  $PageLogoUrl is the URL for a logo image -- you can change this
+##  to your own logo if you wish.
+# $PageLogoUrl = "$PubDirUrl/skins/pmwiki/pmwiki-32.gif";
+
+##  If you want to have a custom skin, then set $Skin to the name
+##  of the directory (in pub/skins/) that contains your skin files.
+##  See PmWiki.Skins and Cookbook.Skins.
+$Skin = 'pmwiki-responsive';
+
+##  You'll probably want to set an administrative password that you
+##  can use to get into password-protected pages.  Also, by default
+##  the "attr" passwords for the PmWiki and Main groups are locked, so
+##  an admin password is a good way to unlock those.  See PmWiki.Passwords
+##  and PmWiki.PasswordsAdmin.
+# $DefaultPasswords['admin'] = pmcrypt('secret');
+
+##  Unicode (UTF-8) allows the display of all languages and all alphabets.
+##  Highly recommended for new wikis.
+include_once("scripts/xlpage-utf-8.php");
+
+##  If you're running a publicly available site and allow anyone to
+##  edit without requiring a password, you probably want to put some
+##  blocklists in place to avoid wikispam.  See PmWiki.Blocklist.
+# $EnableBlocklist = 1;                    # enable manual blocklists
+# $EnableBlocklist = 10;                   # enable automatic blocklists
+
+##  PmWiki comes with graphical user interface buttons for editing;
+##  to enable these buttons, set $EnableGUIButtons to 1.
+# $EnableGUIButtons = 1;
+
+##  This enables a message if editors have modified a page but try to
+##  move away from the edit form before saving the text.
+$EnableNotSavedWarning = 1; # 1: warn editors; 0: disable warning
+
+##  You can enable syntax highlighting for the documentation and/or
+##  for the edit form. 
+# $EnablePmSyntax = 1; # or 2, see documentation
+
+##  For a basic table of contents, see page PmWiki/TableOfContents
+# $PmTOC['Enable'] = 1;
+
+##  To enable markup syntax from the Creole common wiki markup language
+##  (http://www.wikicreole.org/), include it here:
+# include_once("scripts/creole.php");
+
+##  Some sites may want leading spaces on markup lines to indicate
+##  "preformatted text blocks", set $EnableWSPre=1 if you want to do
+##  this.  Setting it to a higher number increases the number of
+##  space characters required on a line to count as "preformatted text".
+# $EnableWSPre = 1;   # lines beginning with space are preformatted (default)
+# $EnableWSPre = 4;   # lines with 4 or more spaces are preformatted
+# $EnableWSPre = 0;   # disabled
+
+##  If you want uploads enabled on your system, set $EnableUpload=1.
+##  You'll also need to set a default upload password, or else set
+##  passwords on individual groups and pages.  For more information
+##  see PmWiki.UploadsAdmin.
+# $EnableUpload = 1;
+# $DefaultPasswords['upload'] = pmcrypt('secret');
+$UploadPermAdd = 0; # Recommended for most new installations
+
+##  Setting $EnableDiag turns on the ?action=diag and ?action=phpinfo
+##  actions, which often helps others to remotely troubleshoot
+##  various configuration and execution problems.
+# $EnableDiag = 1;                         # enable remote diagnostics
+
+##  By default, PmWiki doesn't allow browsers to cache pages.  Setting
+##  $EnableIMSCaching=1; will re-enable browser caches in a somewhat
+##  smart manner.  Note that you may want to have caching disabled while
+##  adjusting configuration files or layout templates.
+# $EnableIMSCaching = 1;                   # allow browser caching
+
+##  Set $SpaceWikiWords if you want WikiWords to automatically
+##  have spaces before each sequence of capital letters.
+# $SpaceWikiWords = 1;                     # turn on WikiWord spacing
+
+##  Set $EnableWikiWords if you want to allow WikiWord links.
+##  For more options with WikiWords, see scripts/wikiwords.php .
+# $EnableWikiWords = 1;                    # enable WikiWord links
+
+##  $DiffKeepDays specifies the minimum number of days to keep a page's
+##  revision history.  The default is 3650 (approximately 10 years).
+# $DiffKeepDays=30;                        # keep page history at least 30 days
+
+##  By default, viewers are prevented from seeing the existence
+##  of read-protected pages in search results and page listings,
+##  but this can be slow as PmWiki has to check the permissions
+##  of each page.  Setting $EnablePageListProtect to zero will
+##  speed things up considerably, but it will also mean that
+##  viewers may learn of the existence of read-protected pages.
+##  (It does not enable them to access the contents of the pages.)
+# $EnablePageListProtect = 0;
+
+##  The refcount.php script enables ?action=refcount, which helps to
+##  find missing and orphaned pages.  See PmWiki.RefCount.
+# if ($action == 'refcount') include_once("scripts/refcount.php");
+
+##  The feeds.php script enables ?action=rss, ?action=atom, ?action=rdf,
+##  and ?action=dc, for generation of syndication feeds in various formats.
+# if ($action == 'rss')  include_once("scripts/feeds.php");  # RSS 2.0
+# if ($action == 'atom') include_once("scripts/feeds.php");  # Atom 1.0
+# if ($action == 'dc')   include_once("scripts/feeds.php");  # Dublin Core
+# if ($action == 'rdf')  include_once("scripts/feeds.php");  # RSS 1.0
+
+##  By default, pages in the Category group are manually created.
+##  Uncomment the following line to have blank category pages
+##  automatically created whenever a link to a non-existent
+##  category page is saved.  (The page is created only if
+##  the author has edit permissions to the Category group.)
+# $AutoCreate['/^Category\\./'] = array('ctime' => $Now);
+
+##  PmWiki allows a great deal of flexibility for creating custom markup.
+##  To add support for '*bold*' and '~italic~' markup (the single quotes
+##  are part of the markup), uncomment the following lines.
+##  (See PmWiki.CustomMarkup and the Cookbook for details and examples.)
+# Markup("'~", "<'''''", "/'~(.*?)~'/", "<i>$1</i>");        # '~italic~'
+# Markup("'*", "<'''''", "/'\\*(.*?)\\*'/", "<b>$1</b>");    # '*bold*'
+
+##  If you want to have to approve links to external sites before they
+##  are turned into links, uncomment the line below.  See PmWiki.UrlApprovals.
+##  Also, setting $UnapprovedLinkCountMax limits the number of unapproved
+##  links that are allowed in a page (useful to control wikispam).
+# $UnapprovedLinkCountMax = 10;
+# include_once("scripts/urlapprove.php");
+
+##  The following lines make additional editing buttons appear in the
+##  edit page for subheadings, lists, tables, etc.
+# $GUIButtons['h2'] = array(400, '\\n!! ', '\\n', '$[Heading]',
+#                     '$GUIButtonDirUrlFmt/h2.gif"$[Heading]"');
+# $GUIButtons['h3'] = array(402, '\\n!!! ', '\\n', '$[Subheading]',
+#                     '$GUIButtonDirUrlFmt/h3.gif"$[Subheading]"');
+# $GUIButtons['indent'] = array(500, '\\n->', '\\n', '$[Indented text]',
+#                     '$GUIButtonDirUrlFmt/indent.gif"$[Indented text]"');
+# $GUIButtons['outdent'] = array(510, '\\n-<', '\\n', '$[Hanging indent]',
+#                     '$GUIButtonDirUrlFmt/outdent.gif"$[Hanging indent]"');
+# $GUIButtons['ol'] = array(520, '\\n# ', '\\n', '$[Ordered list]',
+#                     '$GUIButtonDirUrlFmt/ol.gif"$[Ordered (numbered) list]"');
+# $GUIButtons['ul'] = array(530, '\\n* ', '\\n', '$[Unordered list]',
+#                     '$GUIButtonDirUrlFmt/ul.gif"$[Unordered (bullet) list]"');
+# $GUIButtons['hr'] = array(540, '\\n----\\n', '', '',
+#                     '$GUIButtonDirUrlFmt/hr.gif"$[Horizontal rule]"');
+# $GUIButtons['table'] = array(600,
+#                       '||border=1 width=80%\\n||!Hdr ||!Hdr ||!Hdr ||\\n||     ||     ||     ||\\n||     ||     ||     ||\\n', '', '',
+#                     '$GUIButtonDirUrlFmt/table.gif"$[Table]"');
blob - /dev/null
blob + cd57468d8e8453c929e5ffd94de879df8c2c6739 (mode 644)
Binary files /dev/null and favicon.ico differ
blob - /dev/null
blob + 9eb37fd0f6da0f04a68e70e82572e27f6266ff70 (mode 755)
--- /dev/null
+++ index.php
@@ -0,0 +1 @@
+<?php include('pmwiki.php'); 
blob - /dev/null
blob + f2c0ee84a78a7331c2463b33ad02b57abf476624 (mode 644)
--- /dev/null
+++ local/.htaccess
@@ -0,0 +1,19 @@
+# This file is local/.htaccess -- the default distribution contains this
+# file to prevent local/ scripts from being accessed directly by browsers
+# (this is a potential, albeit very unlikely, security hole).
+#
+# If you alter or replace this file, it will likely be overwritten when
+# you upgrade from one version of PmWiki to another.  Be sure to save
+# a copy of your alterations in another location so you can restore them,
+# and you might try changing this file to be read-only to prevent a PmWiki
+# upgrade from overwriting your altered version.
+
+<IfModule !mod_authz_host.c>
+  Order Deny,Allow
+  Deny from all
+</IfModule>
+
+<IfModule mod_authz_host.c>
+  Require all denied
+</IfModule>
+
blob - /dev/null
blob + bbf76b6e2389cfea1373b492d9087e644976d60a (mode 644)
--- /dev/null
+++ local/localmap.txt
@@ -0,0 +1,4 @@
+RFC:         https://tools.ietf.org/html/rfc
+
+planetofnix:	https://www.planetofnix.com/wiki/pmwiki.php?n=
+
blob - /dev/null
blob + 184233ef8de1411b062952ec1d2eaed5c365b5b4 (mode 755)
--- /dev/null
+++ pmwiki.php
@@ -0,0 +1,3028 @@
+<?php
+/*
+    PmWiki
+    Copyright 2001-2023 Patrick R. Michaud
+    pmichaud@pobox.com
+    http://www.pmichaud.com/
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+    ----
+    Note from Pm:  Trying to understand the PmWiki code?  Wish it had 
+    more comments?  If you want help with any of the code here,
+    write me at <pmichaud@pobox.com> with your question(s) and I'll
+    provide explanations (and add comments) that answer them.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+    $Id: pmwiki.php 4370 2023-02-12 08:26:08Z petko $
+*/
+error_reporting(E_ALL ^ E_NOTICE);
+StopWatch('PmWiki');
+@ini_set('magic_quotes_runtime', 0);
+@ini_set('magic_quotes_sybase', 0);
+if (@ini_get('pcre.backtrack_limit') < 1000000) 
+  @ini_set('pcre.backtrack_limit', 1000000);
+if (ini_get('register_globals')) 
+  foreach($_REQUEST as $k=>$v) { 
+    if (preg_match('/^(GLOBALS|_SERVER|_GET|_POST|_COOKIE|_FILES|_ENV|_REQUEST|_SESSION|FarmD|WikiDir)$/i', $k)) exit();
+    ${$k}=''; unset(${$k}); 
+  }
+$UnsafeGlobals = array_keys($GLOBALS); $GCount=0; $FmtV=array();
+$FmtV['$TokenName'] = 'pmtoken';
+define('PmWiki',1);
+SDV($WorkDir,'wiki.d');
+SDV($FarmD,dirname(__FILE__));
+if (strpos($FarmD, 'phar://')===0) $IsFarmArchive = 1;
+elseif (preg_match('/\\w\\w:/', $FarmD)) exit();
+@include_once("$FarmD/scripts/version.php");
+$GroupPattern = '[[:upper:]][\\w]*(?:-\\w+)*';
+$NamePattern = '[[:upper:]\\d][\\w]*(?:-\\w+)*';
+$BlockPattern = 'form|div|table|t[rdh]|p|[uo]l|d[ltd]|h[1-6r]|pre|blockquote';
+$WikiWordPattern = '[[:upper:]][[:alnum:]]*(?:[[:upper:]][[:lower:]0-9]|[[:lower:]0-9][[:upper:]])[[:alnum:]]*';
+$WikiDir = new PageStore('wiki.d/{$FullName}');
+$WikiLibDirs = array(&$WikiDir,new PageStore('$FarmD/wikilib.d/{$FullName}'));
+$PageFileEncodeFunction = 'PUE'; # only used if $WikiDir->encodefilenames is set
+$PageFileDecodeFunction = 'urldecode';
+$LocalDir = 'local';
+$InterMapFiles = array("$FarmD/scripts/intermap.txt",
+  "$FarmD/local/farmmap.txt", '$SiteGroup.InterMap', 'local/localmap.txt');
+$Newline = "\263";                                 # deprecated, 2.0.0
+$KeepToken = "\034\034";
+$Now=time();
+define('READPAGE_CURRENT', $Now+604800);
+$TimeFmt = '%B %d, %Y, at %I:%M %p';
+$TimeISOFmt = '%Y-%m-%dT%H:%M:%S';
+$TimeISOZFmt = '%Y-%m-%dT%H:%M:%SZ';
+$MessagesFmt = array();
+$BlockMessageFmt = "<h3 class='wikimessage'>$[This post has been blocked by the administrator]</h3>";
+$EditFields = array('text');
+$EditFunctions = array('AutoCheckToken', 'EditTemplate', 'RestorePage', 'ReplaceOnSave',
+  'SaveAttributes', 'PostPage', 'PostRecentChanges', 'AutoCreateTargets',
+  'PreviewPage');
+$EnablePost = 1;
+$ChangeSummary = substr(preg_replace('/[\\x00-\\x1f]|=\\]/', '', 
+        stripmagic(@$_REQUEST['csum'])), 0, 100);
+$AsSpacedFunction = 'AsSpaced';
+$SpaceWikiWords = 0;
+$RCDelimPattern = '  ';
+$RecentChangesFmt = array(
+  '$SiteGroup.AllRecentChanges' => 
+    '* [[{$Group}.{$Name}]]  . . . $CurrentLocalTime $[by] $AuthorLink: [=$ChangeSummary=]',
+  '$Group.RecentChanges' =>
+    '* [[{$Group}/{$Name}]]  . . . $CurrentLocalTime $[by] $AuthorLink: [=$ChangeSummary=]');
+$UrlScheme = (@$_SERVER['HTTPS']=='on' || @$_SERVER['SERVER_PORT']==443)
+             ? 'https' : 'http';
+$ScriptUrl = $UrlScheme.'://'.strval(@$_SERVER['HTTP_HOST']).strval(@$_SERVER['SCRIPT_NAME']);
+$PubDirUrl = preg_replace('#/[^/]*$#', '/pub', $ScriptUrl, 1);
+SDV($FarmPubDirPrefix, 'PmFarmPubDirUrl');
+if (@$IsFarmArchive) SDV($FarmPubDirUrl, "$ScriptUrl/$FarmPubDirPrefix");
+$HTMLVSpace = "<vspace>";
+$HTMLPNewline = '';
+$MarkupFrame = array();
+$MarkupFrameBase = array('cs' => array(), 'vs' => '', 'ref' => 0,
+  'closeall' => array(), 'is' => array(),
+  'escape' => 1);
+$WikiWordCountMax = 1000000;
+$WikiWordCount['PmWiki'] = 1;
+$TableRowIndexMax = 1;
+$UrlExcludeChars = '<>"{}|\\\\^`()[\\]\'';
+$QueryFragPattern = "[?#][^\\s$UrlExcludeChars]*";
+$SuffixPattern = '(?:-?[[:alnum:]]+)*';
+$LinkPageSelfFmt = "<a class='selflink' href='\$LinkUrl' title='\$LinkAlt'>\$LinkText</a>";
+$LinkPageExistsFmt = "<a class='wikilink' href='\$LinkUrl' title='\$LinkAlt'>\$LinkText</a>";
+$LinkPageCreateFmt = 
+  "<a class='createlinktext' rel='nofollow' title='\$LinkAlt'
+    href='{\$PageUrl}?action=edit'>\$LinkText</a><a rel='nofollow' 
+    class='createlink' href='{\$PageUrl}?action=edit'>?</a>";
+$UrlLinkFmt = 
+  "<a class='urllink' href='\$LinkUrl' title='\$LinkAlt' rel='nofollow'>\$LinkText</a>";
+umask(002);
+$CookiePrefix = '';
+$SiteGroup = 'Site';
+$SiteAdminGroup = 'SiteAdmin';
+$DefaultGroup = 'Main';
+$DefaultName = 'HomePage';
+$GroupHeaderFmt = '(:include {$Group}.GroupHeader self=0 basepage={*$FullName}:)(:nl:)';
+$GroupFooterFmt = '(:nl:)(:include {$Group}.GroupFooter self=0 basepage={*$FullName}:)';
+$PagePathFmt = array('{$Group}.$1','$1.$1','$1.{$DefaultName}');
+$PageAttributes = array(
+  'passwdread' => '$[Set new read password:]',
+  'passwdedit' => '$[Set new edit password:]',
+  'passwdattr' => '$[Set new attribute password:]');
+$XLLangs = array('en');
+if (preg_match('/^C$|\.UTF-?8/i',setlocale(LC_ALL,0)))
+  setlocale(LC_ALL,'en_US');
+$FmtP = array();
+$FmtPV = array(
+  # '$ScriptUrl'    => 'PUE($ScriptUrl)',   ## $ScriptUrl is special
+  '$PageUrl'      => 
+    'PUE(($EnablePathInfo) 
+         ? "$ScriptUrl/$group/$name"
+         : "$ScriptUrl?n=$group.$name")',
+  '$FullName'     => '"$group.$name"',
+  '$Groupspaced'  => '$AsSpacedFunction($group)',
+  '$Namespaced'   => '$AsSpacedFunction($name)',
+  '$Group'        => '$group',
+  '$Name'         => '$name',
+  '$Titlespaced'  => 'FmtPageTitle(@$page["title"], $name, 1)',
+  '$Title'        => 'FmtPageTitle(@$page["title"], $name, 0)',
+  '$LastModifiedBy' => '@$page["author"]',
+  '$LastModifiedHost' => '@$page["host"]',
+  '$LastModified' => 'PSFT($GLOBALS["TimeFmt"], $page["time"])',
+  '$LastModifiedSummary' => '@$page["csum"]',
+  '$LastModifiedTime' => '$page["time"]',
+  '$Description'  => '@$page["description"]',
+  '$SiteGroup'    => '$GLOBALS["SiteGroup"]',
+  '$SiteAdminGroup' => '$GLOBALS["SiteAdminGroup"]',
+  '$VersionNum'   => '$GLOBALS["VersionNum"]',
+  '$Version'      => '$GLOBALS["Version"]',
+  '$WikiTitle'    => '$GLOBALS["WikiTitle"]',
+  '$PageLogoUrl'  => 'strval(@$GLOBALS["PageLogoUrl"])',
+  '$Author'       => 'NoCache($GLOBALS["Author"])',
+  '$AuthId'       => 'NoCache($GLOBALS["AuthId"])',
+  '$DefaultGroup' => '$GLOBALS["DefaultGroup"]',
+  '$DefaultName'  => '$GLOBALS["DefaultName"]',
+  '$BaseName'     => 'MakeBaseName($pn)',
+  '$Action'       => '$GLOBALS["action"]',
+  '$PasswdRead'   => 'PasswdVar($pn, "read")',
+  '$PasswdEdit'   => 'PasswdVar($pn, "edit")',
+  '$PasswdAttr'   => 'PasswdVar($pn, "attr")',
+  '$EnabledIMap'  => 'implode("|", array_keys($GLOBALS["IMap"]))', # PmSyntax
+  '$GroupHomePage' => 'FmtGroupHome($pn,$group,$var)',
+  '$GroupHomePageName' => 'FmtGroupHome($pn,$group,$var)',
+  '$GroupHomePageTitle' => 'FmtGroupHome($pn,$group,$var)',
+  '$GroupHomePageTitlespaced' => 'FmtGroupHome($pn,$group,$var)',
+  );
+$SaveProperties = array('title', 'description', 'keywords');
+$PageTextVarPatterns = array(
+  'var:'        => '/^(:*[ \\t]*(\\w[-\\w]*)[ \\t]*:[ \\t]?)(.*)($)/m',
+  '(:var:...:)' => '/(\\(: *(\\w[-\\w]*) *:(?!\\))\\s?)(.*?)(:\\))/s'
+  );
+
+$WikiTitle = 'PmWiki';
+$Charset = 'ISO-8859-1';
+$HTTPHeaders = array(
+  "Expires: Tue, 01 Jan 2002 00:00:00 GMT",
+  "Cache-Control: no-store, no-cache, must-revalidate",
+  "Content-type: text/html; charset=ISO-8859-1;");
+$HTTPHeaders['XFO'] = 'X-Frame-Options: SAMEORIGIN';
+$HTTPHeaders['CSP'] = "Content-Security-Policy: frame-ancestors 'self'; base-uri 'self'; object-src 'none';";
+$HTTPHeaders['XSSP'] = 'X-XSS-Protection: 1; mode=block';
+
+$CacheActions = array('browse','diff','print');
+$EnableHTMLCache = 0;
+$NoHTMLCache = 0;
+$HTMLTagAttr = '';
+$HTMLDoctypeFmt = 
+  "<!DOCTYPE html 
+    PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
+    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
+  <html xmlns='http://www.w3.org/1999/xhtml' \$HTMLTagAttr><head>\n";
+$HTMLStylesFmt['pmwiki'] = "
+  ul, ol, pre, dl, p { margin-top:0px; margin-bottom:0px; }
+  code.escaped { white-space: pre; }
+  .vspace { margin-top:1.33em; }
+  .indent { margin-left:40px; }
+  .outdent { margin-left:40px; text-indent:-40px; }
+  a.createlinktext { text-decoration:none; border-bottom:1px dotted gray; }
+  a.createlink { text-decoration:none; position:relative; top:-0.5em;
+    font-weight:bold; font-size:smaller; border-bottom:none; }
+  img { border:0px; }
+  ";
+$HTMLHeaderFmt['styles'] = array(
+  "<style type='text/css'><!--",&$HTMLStylesFmt,"\n--></style>");
+$HTMLBodyFmt = "</head>\n<body>";
+$HTMLStartFmt = array('headers:',&$HTMLDoctypeFmt,&$HTMLHeaderFmt,
+  &$HTMLBodyFmt);
+$HTMLEndFmt = "\n</body>\n</html>";
+$PageStartFmt = array(&$HTMLStartFmt,"\n<div id='contents'>\n");
+$PageEndFmt = array('</div>',&$HTMLEndFmt);
+
+$HandleActions = array(
+  'browse' => 'HandleBrowse', 'print' => 'HandleBrowse',
+  'edit' => 'HandleEdit', 'source' => 'HandleSource', 
+  'attr' => 'HandleAttr', 'postattr' => 'HandlePostAttr',
+  'logout' => 'HandleLogoutA', 'login' => 'HandleLoginA');
+$HandleAuth = array(
+  'browse' => 'read', 'source' => 'read', 'print' => 'read',
+  'edit' => 'edit', 'attr' => 'attr', 'postattr' => 'attr',
+  'logout' => 'read', 'login' => 'login');
+$ActionTitleFmt = array(
+  'edit' => '| $[Edit]',
+  'attr' => '| $[Attributes]',
+  'login' => '| $[Login]');
+$DefaultPasswords = array('admin'=>'@lock','read'=>'','edit'=>'','attr'=>'');
+$AuthCascade = array('edit'=>'read', 'attr'=>'edit');
+$AuthList = array('' => 1, 'nopass:' => 1, '@nopass' => 1);
+$SessionEncode = 'base64_encode';
+$SessionDecode = 'base64_decode';
+
+$CallbackFnTemplates = array(
+  'default' => '%s',
+  'return' => 'return %s;',
+  'markup_e' => 'extract($GLOBALS["MarkupToHTML"]); return %s;',
+  'qualify'  => 'extract($GLOBALS["tmp_qualify"]); return %s;',
+);
+
+$Conditions['enabled'] = '(boolean)@$GLOBALS[$condparm]';
+$Conditions['false'] = 'false';
+$Conditions['true'] = 'true';
+$Conditions['group'] = 
+  "(boolean)MatchPageNames(\$pagename, FixGlob(\$condparm, '$1$2.*'))";
+$Conditions['name'] = 
+  "(boolean)MatchPageNames(\$pagename, FixGlob(\$condparm, '$1*.$2'))";
+$Conditions['match'] = 'preg_match("!$condparm!",$pagename)';
+$Conditions['authid'] = 'NoCache(@$GLOBALS["AuthId"] > "")';
+$Conditions['equal'] = 'CompareArgs($condparm) == 0';
+function CompareArgs($arg) 
+  { $arg = ParseArgs($arg); return strcmp(@$arg[''][0], @$arg[''][1]); }
+
+$Conditions['auth'] = 'NoCache(CondAuth($pagename, $condparm))';
+function CondAuth($pagename, $condparm) {
+  global $AuthList, $HandleAuth;
+  @list($level, $pn) = explode(' ', $condparm, 2);
+  if (@$level && $level[0] == '@') { # user belongs to @group1,@group2
+    $keys = MatchNames(array_keys((array)@$AuthList), $level, true);
+    foreach($keys as $k) {
+      if (@$AuthList[$k] == 1 && $AuthList["-$k"] != 1) return true;
+    }
+    return false;
+  }
+  $pn = ($pn > '') ? MakePageName($pagename, $pn) : $pagename;
+  if (@$HandleAuth[$level]>'') $level = $HandleAuth[$level];
+  return (boolean)RetrieveAuthPage($pn, $level, false, READPAGE_CURRENT);
+}
+$Conditions['exists'] = 'CondExists($condparm)';
+## This is an optimized version of the earlier conditional
+## especially for pagelists
+function CondExists($condparm, $caseinsensitive = true) {
+  static $ls = false;
+  if (!$ls) $ls = ListPages();
+  $condparm = str_replace(array('[[',']]'), array('', ''), $condparm);
+  $glob = FixGlob($condparm, '$1*.$2');
+  return (boolean)MatchPageNames($ls, $glob, $caseinsensitive);
+}
+
+## CondExpr handles complex conditions (expressions)
+## Portions Copyright 2005 by D. Faure (dfaure@cpan.org)
+function CondExpr($pagename, $condname, $condparm) {
+  global $CondExprOps;
+  SDV($CondExprOps, 'and|x?or|&&|\\|\\||[!()]');
+  if ($condname == '(' || $condname == '[')
+    $condparm = preg_replace('/[\\]\\)]\\s*$/', '', $condparm);
+  $condparm = str_replace('&amp;&amp;', '&&', $condparm);
+  $terms = preg_split("/(?<!\\S)($CondExprOps)(?!\\S)/i", $condparm, -1,
+                      PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+  foreach($terms as $i => $t) {
+    $t = trim($t);
+    if (preg_match("/^($CondExprOps)$/i", $t)) continue;
+    if ($t) $terms[$i] = CondText($pagename, "if $t", 'TRUE') ? '1' : '0';
+  }
+  
+  ## PITS:01480, (:if [ {$EmptyPV} and ... ]:) 
+  $code = preg_replace('/(^\\s*|(and|x?or|&&|\\|\\||!)\\s+)(?=and|x?or|&&|\\|\\|)/', 
+    '$1 0 ', trim(implode(' ', $terms))); 
+
+  return @eval("return( $code );");
+}
+$Conditions['expr'] = 'CondExpr($pagename, $condname, $condparm)';
+$Conditions['('] = 'CondExpr($pagename, $condname, $condparm)';
+$Conditions['['] = 'CondExpr($pagename, $condname, $condparm)';
+
+$MarkupTable['_begin']['seq'] = 'B';
+$MarkupTable['_end']['seq'] = 'E';
+Markup('fulltext','>_begin');
+Markup('split','>fulltext',"\n",
+  '$RedoMarkupLine=1; return explode("\n",$x);');
+Markup('directives','>split');
+Markup('inline','>directives');
+Markup('links','>inline');
+Markup('block','>links');
+Markup('style','>block');
+Markup('closeall', '_begin',
+  '/^\\(:closeall:\\)$/', "MarkupMarkupClose");
+function MarkupMarkupClose() { return '<:block>' . MarkupClose(); }
+
+$ImgExtPattern="\\.(?:gif|jpg|jpeg|a?png|svgz?|GIF|JPG|JPEG|A?PNG|SVGZ?|webp|WEBP)";
+$ImgTagFmt="<img src='\$LinkUrl' alt='\$LinkAlt' title='\$LinkAlt' />";
+
+$BlockMarkups = array(
+  'block' => array('','','',0),
+  'ul' => array('<ul><li>','</li><li>','</li></ul>',1),
+  'dl' => array('<dl>','</dd>','</dd></dl>',1),
+  'ol' => array('<ol><li>','</li><li>','</li></ol>',1),
+  'p' => array('<p>','','</p>',0),
+  'indent' => 
+     array("<div class='indent'>","</div><div class='indent'>",'</div>',1),
+  'outdent' => 
+     array("<div class='outdent'>","</div><div class='outdent'>",'</div>',1),
+  'pre' => array('<pre>','','</pre>',0),
+  'table' => array("<table width='100%'>",'','</table>',0));
+
+foreach(array('http:','https:','mailto:','ftp:','news:','gopher:','nap:',
+    'file:', 'tel:', 'geo:') as $m)
+  { $LinkFunctions[$m] = 'LinkIMap';  $IMap[$m]="$m$1"; }
+$LinkFunctions['<:page>'] = 'LinkPage';
+
+$q = preg_replace('/(\\?|%3f)([-\\w]+=)/i', '&$2', strval(@$_SERVER['QUERY_STRING']));
+if ($q != @$_SERVER['QUERY_STRING']) {
+  unset($_GET);
+  parse_str($q, $_GET);
+  $_REQUEST = array_merge($_REQUEST, $_GET, $_POST);
+}
+
+if (isset($_GET['action'])) $action = $_GET['action'];
+elseif (isset($_POST['action'])) $action = $_POST['action'];
+else $action = 'browse';
+
+$pagename = strval(@$_REQUEST['n']);
+if (!$pagename) $pagename = strval(@$_REQUEST['pagename']);
+if (!$pagename && 
+    preg_match('!^'.preg_quote(strval(@$_SERVER['SCRIPT_NAME']),'!').'/?([^?]*)!',
+      strval(@$_SERVER['REQUEST_URI']),$match))
+  $pagename = urldecode($match[1]);
+if (preg_match('/[\\x80-\\xbf]/',$pagename)) 
+  $pagename=pm_recode($pagename, 'UTF-8', 'WINDOWS-1252');
+$pagename = preg_replace('![^[:alnum:]\\x80-\\xff]+$!','',$pagename);
+$pagename_unfiltered = $pagename;
+$pagename = preg_replace('![${}\'"\\\\]+!', '', $pagename);
+$FmtPV['$RequestedPage'] = 'PHSC($GLOBALS["pagename_unfiltered"], ENT_QUOTES)';
+$Cursor['*'] = &$pagename;
+if (function_exists("date_default_timezone_get") ) { # fix PHP5.3 warnings
+  @date_default_timezone_set(@date_default_timezone_get());
+}
+
+$DenyHtaccessContent = <<<EOF
+<IfModule !mod_authz_host.c>
+  Order Deny,Allow
+  Deny from all
+</IfModule>
+
+<IfModule mod_authz_host.c>
+  Require all denied
+</IfModule>
+
+EOF;
+
+SDVA($ServeFileExts, array(
+  'gif' => 'image/gif', 'png' => 'image/png', 'svg' => 'image/svg+xml',
+  'README' => 'text/plain', 'txt' => 'text/plain',
+  'css' => 'text/css', 'js' => 'application/javascript', 
+));
+function pm_servefile($basedir, $path, $cachecontrol='no-cache') {
+  global $ServeFileExts;
+  header("X-Sent-Via: pm_servefile");
+  $ext = preg_replace('!^.*[./]!', '', $path);
+  if (!isset($ServeFileExts[$ext]) || preg_match('/[?#${}]|\\.\\./', $path)) {
+    http_response_code(403);
+    die('Forbidden');
+  }
+  $filepath = "$basedir/$path";
+  if(!file_exists($filepath)) {
+    http_response_code(404);
+    die('File not found');
+  }
+  
+  header("Cache-Control: $cachecontrol");
+  header('Expires: ');
+  $filelastmod = gmdate('D, d M Y H:i:s \G\M\T', filemtime($filepath));
+  if (@$_SERVER['HTTP_IF_MODIFIED_SINCE'] == $filelastmod)
+    { http_response_code(304); exit(); }
+  header("Last-Modified: $filelastmod");
+  header("Content-Type: {$ServeFileExts[$ext]}");
+  $length = filesize($filepath);
+  header("Content-Length: $length");
+  readfile($filepath);
+  exit;
+}
+
+if (strpos($pagename, "$FarmPubDirPrefix/")===0) {
+  $path = substr($pagename, strlen("$FarmPubDirPrefix/"));
+  pm_servefile("$FarmD/pub", $path);
+  exit;
+}
+
+if (file_exists("$FarmD/local/farmconfig.php")) 
+  include_once("$FarmD/local/farmconfig.php");
+if (IsEnabled($EnableLocalConfig,1)) {
+  if (file_exists("$LocalDir/config.php")) 
+    include_once("$LocalDir/config.php");
+  elseif (file_exists('config.php'))
+    include_once('config.php');
+}
+
+SDV($CurrentTime, PSFT($TimeFmt, $Now));
+SDV($CurrentLocalTime, PSFT("@$TimeISOZFmt", $Now, null, 'GMT'));
+SDV($CurrentTimeISO, PSFT($TimeISOFmt, $Now));
+
+if (IsEnabled($EnableStdConfig,1))
+  include_once("$FarmD/scripts/stdconfig.php");
+
+if (isset($PostConfig) && is_array($PostConfig)) {
+  asort($PostConfig, SORT_NUMERIC);
+  foreach ($PostConfig as $k=>$v) {
+    if (!$k || !$v || $v<50) continue;
+    if (function_exists($k)) $k($pagename);
+    elseif (file_exists($k)) include_once($k);
+  }
+}
+
+function pmsetcookie($name, $val="", $exp=0, $path="", $dom="", $secure=null, $httponly=null, $samesite=null) {
+  global $EnableCookieSecure, $EnableCookieHTTPOnly, $SetCookieFunction, $CookieSameSite;
+  if (IsEnabled($SetCookieFunction))
+    return $SetCookieFunction($name, $val, $exp, $path, $dom, $secure, $httponly, $samesite);
+  if (is_null($secure))   $secure   = IsEnabled($EnableCookieSecure,   false);
+  if (is_null($httponly)) $httponly = IsEnabled($EnableCookieHTTPOnly, false);
+  if (is_null($samesite)) $samesite = IsEnabled($CookieSameSite, 'Lax');
+  
+  if (PHP_VERSION_ID>=70300) {
+    return setcookie($name, $val, array(
+       'expires' => $exp, 
+       'path' => $path, 
+       'domain' => $dom, 
+       'secure' => $secure, 
+       'httponly' => $httponly,
+       'samesite' => $samesite
+    ));
+  }
+  if (!$path) $path = '/';
+  setcookie($name, $val, $exp, "$path; SameSite=$samesite", $dom, $secure, $httponly);
+}
+function pm_session_start($a = array()) {
+  global $EnableCookieSecure, $EnableCookieHTTPOnly, $CookieSameSite;
+  if (function_exists('session_status')) {
+    if (session_status() === PHP_SESSION_ACTIVE) return true;
+  }
+  
+  if (!headers_sent()){
+    $params = session_get_cookie_params();
+    if (isset($EnableCookieSecure) && !isset($a['secure']))
+      $a['secure'] = $EnableCookieSecure;
+    if (isset($EnableCookieHTTPOnly) && !isset($a['httponly']))
+      $a['httponly'] = $EnableCookieHTTPOnly;
+    if (!isset($a['samesite'])) $a['samesite'] = IsEnabled($CookieSameSite, 'Lax');
+    SDVA($a, $params);
+  
+    if (PHP_VERSION_ID < 70300) {
+      if (!$a['path']) $a['path'] = '/';
+      $a['path'] .= "; SameSite={$a['samesite']}";
+      session_set_cookie_params(
+        $a['lifetime'],
+        $a['path'],
+        $a['domain'],
+        $a['secure'],
+        $a['httponly']
+      );
+    }
+    else {
+      session_set_cookie_params($a);
+    }
+  }
+  return @session_start();
+}
+
+
+foreach((array)$InterMapFiles as $f) {
+  $f = FmtPageName($f, $pagename);
+  if (($v = @file($f))) 
+    $v = preg_replace('/^\\s*(?>\\w[-\\w]*)(?!:)/m', '$0:', implode('', $v));
+  else if (@PageExists($f)) {
+    $p = ReadPage($f, READPAGE_CURRENT);
+    $v = @$p['text'];
+  } else continue;
+  if (!preg_match_all("/^\\s*(\\w[-\\w]*:)[^\\S\n]+(\\S*)/m", $v, 
+                      $match, PREG_SET_ORDER)) continue;
+  foreach($match as $m) {
+    if (strpos($m[2], '$1') === false) $m[2] .= '$1';
+    $LinkFunctions[$m[1]] = 'LinkIMap';
+    $IMap[$m[1]] = FmtPageName($m[2], $pagename);
+  }
+}
+
+$keys = array_keys($AuthCascade);
+while ($keys) {
+  $k = array_shift($keys); $t = $AuthCascade[$k];
+  if (in_array($t, $keys)) 
+    { unset($AuthCascade[$k]); $AuthCascade[$k] = $t; array_push($keys, $k); }
+}
+
+$LinkPattern = implode('|',array_keys($LinkFunctions));  # after InterMaps
+SDV($LinkPageCreateSpaceFmt,$LinkPageCreateFmt);
+$ActionTitle = FmtPageName(@$ActionTitleFmt[$action], $pagename);
+
+
+if (!@$HandleActions[$action] || !function_exists($HandleActions[$action])) 
+  $action='browse';
+if (IsEnabled($EnableActions, 1)) HandleDispatch($pagename, $action);
+Lock(0);
+return;
+
+##  HandleDispatch() is used to dispatch control to the appropriate
+##  action handler with the appropriate permissions.
+##  If a message is supplied, it is added to $MessagesFmt.
+function HandleDispatch($pagename, $action, $msg=NULL) {
+  global $MessagesFmt, $HandleActions, $HandleAuth;
+  if ($msg) $MessagesFmt[] = "<div class='wikimessage'>$msg</div>";
+  $fn = $HandleActions[$action];
+  $auth = @$HandleAuth[$action];
+  if (!$auth) $auth = 'read';
+  return $fn($pagename, $auth);
+}
+
+## helper functions
+function stripmagic($x) {
+  if(is_null($x)) return '';
+  $fn = 'get_magic_quotes_gpc';
+  if (!function_exists($fn)) return $x;
+  if (is_array($x)) {
+    foreach($x as $k=>$v) $x[$k] = stripmagic($v);
+    return $x;
+  }
+  $x = strval($x);
+  return @$fn() ? stripslashes($x) : $x;
+}
+function pre_r(&$x)
+  { return '<pre>'.PHSC(print_r($x, true)).'</pre>'; }
+function PSS($x) 
+  { return str_replace('\\"','"',$x); }
+function PVS($x) 
+  { return preg_replace("/\n[^\\S\n]*(?=\n)/", "\n<:vspace>", $x); }
+function PVSE($x) { return PVS(PHSC($x, ENT_NOQUOTES)); }
+function PZZ($x,$y='') { return ''; }
+function PRR($x=NULL) 
+  { if ($x || is_null($x)) $GLOBALS['RedoMarkupLine']++; return $x; }
+function PUE($x)
+  { return $x? preg_replace_callback('/[\\x80-\\xff \'"<>]/', "cb_pue", $x) : ''; }
+function cb_pue($m) { return '%'.dechex(ord($m[0])); }
+function PQA($x, $keep=true, $styletoclass=false) {
+  global $EnableUnsafeInlineStyle;
+  if (!@$x) return ''; # PHP 8.1
+  $out = '';
+  $s = array();
+  $x = MarkupRestore($x);
+  if (preg_match_all('/([a-zA-Z][-\\w]*)\\s*=\\s*("[^"]*"|\'[^\']*\'|\\S*)/',
+                     $x, $attr, PREG_SET_ORDER)) {
+    foreach($attr as $a) {
+      if (preg_match('/^on/i', $a[1])) continue;
+      $val = preg_replace('/^([\'"]?)(.*)\\1$/', '$2', $a[2]);
+      $s[$a[1]] = $val;
+    }
+    foreach($s as $key=>$val) {
+      $val = PHSC($val, ENT_QUOTES, null, false);
+      if ($keep) $val = Keep($val);
+      $out .= "$key='$val' ";
+    }
+  }
+  return $out;
+}
+function SDV(&$v,$x) { if (!isset($v)) $v=$x; }
+function SDVA(&$var,$val) 
+  { foreach($val as $k=>$v) if (!isset($var[$k])) $var[$k]=$v; }
+function IsEnabled(&$var,$f=0)
+  { return (isset($var)) ? $var : $f; }
+function SetTmplDisplay($var, $val) 
+  { NoCache(); $GLOBALS['TmplDisplay'][$var] = $val; }
+function NoCache($x = '') { $GLOBALS['NoHTMLCache'] |= 1; return $x; }
+function ParseArgs($x, $optpat = '(?>(\\w+)[:=])') {
+  $z = array();
+  preg_match_all("/($optpat|[-+])?(\"[^\"]*\"|'[^']*'|\\S+)/",
+    strval($x), $terms, PREG_SET_ORDER);
+  foreach($terms as $t) {
+    $v = preg_replace('/^([\'"])?(.*)\\1$/', '$2', $t[3]);
+    if ($t[2]) { $z['#'][] = $t[2]; $z[$t[2]] = $v; }
+    else { $z['#'][] = $t[1]; $z[$t[1]][] = $v; }
+    $z['#'][] = $v;
+  }
+  return $z;
+}
+function PHSC($x, $flags=ENT_COMPAT, $enc=null, $dbl_enc=true) { # for PHP 5.4
+  if (is_null($enc)) $enc = "ISO-8859-1"; # single-byte charset
+  if (! is_array($x)) return @htmlspecialchars($x, $flags, $enc, $dbl_enc);
+  foreach($x as $k=>$v) $x[$k] = PHSC($v, $flags, $enc, $dbl_enc);
+  return $x;
+}
+function PSFT($fmt, $stamp=null, $locale=null, $tz=null) { # strftime() replacement
+  global $Now, $FTimeFmt, $TimeFmt, $EnableFTimeNew;
+  static $cached;
+  if (!@$cached) {
+    SDV($FTimeFmt, $TimeFmt);
+    $cached['dloc'] = setlocale(LC_TIME, 0);
+    $cached['dtz'] = date_default_timezone_get();
+    $cached['dtzo'] = timezone_open($cached['dtz']);
+    $cached['formats'] = array(
+      '%d' => 'd',
+      '%e' => ' j', # day " 1"-"31"
+      '%u' => 'N',
+      '%w' => 'w',
+      '%m' => 'm',
+      '%s' => 'U',
+      '%n' => "\n",
+      '%t' => "\t",
+      '%V' => 'W', # ISO-8601 week number, starts Monday, first week with 4+ weekdays
+      
+      '%H' => 'H',
+      '%I' => 'h', # hour 01-12
+      '%k' => ' G', # hour " 1"-"23"
+      '%l' => ' g', # hour " 1"-"12"
+      '%M' => 'i',
+      '%S' => 's',
+      '%R' => 'H:i',
+      '%T' => 'H:i:s',
+      '%r' => 'h:i:s A',
+      '%D' => 'm/d/y',
+      '%F' => 'Y-m-d',
+      
+      '%G' => 'o', # ISO-8601 year (like %V)
+      '%y' => 'y', # 21
+      '%Y' => 'Y', # 2021
+      
+      '%Z' => 'T', # tz: EST
+      '%z' => 'O', # tz offset: -0500
+    );
+    if (extension_loaded('intl')) {
+      $full = IntlDateFormatter::FULL;
+      $long = IntlDateFormatter::LONG;
+      $short = IntlDateFormatter::SHORT;
+      $none = IntlDateFormatter::NONE;
+      $medium = IntlDateFormatter::MEDIUM;
+      
+      $cached['iformats'] = array(
+        '%a' => array($full, $full, 'EEE'),  # Mon
+        '%A' => array($full, $full, 'EEEE'), # Monday
+        '%h' => array($full, $full, 'MMM'),  # Jan
+        '%b' => array($full, $full, 'MMM'),  # Jan
+        '%B' => array($full, $full, 'MMMM'), # January
+        '%p' => array($full, $full, 'aa'), # AM/PM
+        '%P' => array($full, $full, 'aa'), # am/pm (no lowercase for intl am/pm)
+        '%c' => array($long, $short), # date time
+        '%x' => array($short, $none), # date
+        '%X' => array($none, $medium),# time
+      );
+    }
+    else {
+      $cached['iformats'] = array();
+      $cached['formats'] += array(
+        '%a' => 'D', # Mon
+        '%A' => 'l', # Monday
+        '%h' => 'M', # Jan
+        '%b' => 'M', # Jan
+        '%B' => 'F', # January
+        '%p' => 'a', # AM/PM
+        '%P' => 'A', # am/pm
+        '%c' => 'D M j H:i:s Y', # date time
+        '%x' => 'm/d/y', # date
+        '%X' => 'H:i:s', # time
+      );
+    }
+    $cached['new'] = isset($EnableFTimeNew) 
+      ? $EnableFTimeNew
+      : (PHP_VERSION_ID>=80100);
+  }
+
+  if (@$fmt == '') $fmt = $FTimeFmt;
+  $stamp = is_numeric($stamp)? intval($stamp) : $Now;
+  
+  if(preg_match('/(?<!%)(%L)/', $fmt)) {
+    $gmt = PSFT('@%Y-%m-%dT%H:%M:%SZ', $stamp, null, 'GMT');
+    $fmt = preg_replace('/(?<!%)(%L)/', $gmt, $fmt);
+  }
+
+  if (! $cached['new']) {
+    if (@$locale) 
+      setlocale(LC_TIME, preg_split('/[, ]+/', $locale, -1, PREG_SPLIT_NO_EMPTY));
+    if (@$tz) @date_default_timezone_set($tz);
+    $fmt = str_replace(array('%F', '%s', '%o'), 
+        array('%Y-%m-%d', $stamp, date('S', $stamp)), 
+      $fmt);
+    $ret = strftime($fmt, $stamp);
+    if ($tz) date_default_timezone_set($cached['dtz']);
+    if (@$locale) setlocale(LC_TIME, $cached['dloc']);
+    return $ret;
+  }
+  
+  $timestamp = date_create("@$stamp");
+  if ($tz) {
+    $tzo = @timezone_open($tz);
+    if (!@$tzo) unset($tz);
+  }
+  if (!@$tz) { # need to set it otherwise resets to GMT
+    $tz = $cached['dtz'];
+    $tzo = $cached['dtzo'];
+  }
+  date_timezone_set($timestamp, $tzo);
+  
+  $vars = array(
+    'tz' => $tz,
+    'timestamp' => $timestamp,
+    'formats' =>  $cached['formats'],
+    'iformats' =>  $cached['iformats'],
+  );
+  if ($locale) $vars['locale'] = substr($locale, 0, 5);
+  
+  $cb = new PPRC($vars);
+  $fmt = preg_replace_callback('/(?<!%)(%[a-zA-Z])/', array($cb, 'ftime'), $fmt);
+  return str_replace('%%', '%', $fmt);
+}
+function cb_PSFT($fmt, $vars) {
+  extract($vars); # $timestamp, $tz, $locale, $formats, $iformats
+  
+  if (isset($formats[$fmt])) {
+    $fmt = $timestamp->format($formats[$fmt]);
+    if ($fmt[0]==' ' && strlen($fmt)>2) $fmt = substr($fmt, 1);
+    return $fmt;
+  }
+  if ($fmt=='%o') { # ordinal, PITS:01418
+    if (!@$locale) $locale = 'C';
+    $f = numfmt_create($locale, NumberFormatter::ORDINAL);
+    $o = $f->format($timestamp->format('j'));
+    return preg_replace('/\\d+/', '', $o);
+  }
+  if ($fmt=='%j') return sprintf('%03d',$timestamp->format('z')+1);
+  if ($fmt=='%C') return floor($timestamp->format('Y')/100);
+  if ($fmt=='%g') return sprintf('%02d', $timestamp->format('o') % 100);
+  if ($fmt=='%U') return cb_PSFT_UW($timestamp, $tz, 'Sunday');
+  if ($fmt=='%W') return cb_PSFT_UW($timestamp, $tz, 'Monday');
+
+  if (isset($iformats[$fmt])) {
+    $ifmt = $iformats[$fmt];
+    return datefmt_create(@$locale, $ifmt[0], $ifmt[1], $tz, null, @$ifmt[2])->format($timestamp);
+  }
+  return $fmt;
+}
+function cb_PSFT_UW($timestamp, $tz, $day) { # helper for %U %W
+  $first = strtotime(sprintf("%d-01 $day", $timestamp->format('Y')));
+  $stamp1 = date_create("@$first");
+  date_timezone_set($stamp1, timezone_open($tz));
+  $days = $timestamp->format('z') - $stamp1->format('z');
+  return sprintf('%02d', floor($days/7)+1);
+}
+
+# Only called by old addon|skin|recipe needing update, see pmwiki.org/Troubleshooting
+function PCCF($code, $template = 'default', $args = '$m') {
+  global $CallbackFnTemplates, $CallbackFunctions, $PCCFOverrideFunction;
+  if ($PCCFOverrideFunction && is_callable($PCCFOverrideFunction))
+    return $PCCFOverrideFunction($code, $template, $args);
+
+  if (!isset($CallbackFnTemplates[$template]))
+    Abort("No \$CallbackFnTemplates[$template]).");
+  $code = sprintf($CallbackFnTemplates[$template], $code);
+  if (!isset($CallbackFunctions[$code])) {
+    $fn = create_function($args, $code); # called by old addon|skin|recipe needing update, see pmwiki.org/Troubleshooting
+    if ($fn) $CallbackFunctions[$code] = $fn;
+    else StopWatch("Failed to create callback function: ".PHSC($code));
+  }
+  return $CallbackFunctions[$code];
+}
+function PPRE($pat, $rep, $x) {
+  if (! function_exists('create_function')) return $x;
+  $lambda = PCCF("return $rep;");
+  return preg_replace_callback($pat, $lambda, $x);
+}
+function PPRA($array, $x) {
+  if ($x==='' || is_null($x)) return '';
+  foreach((array)$array as $pat => $rep) {
+    # skip broken patterns rather than crash the PHP installation
+    $oldpat = preg_match('!^/.+/[^/]*e[^/]*$!', $pat);
+    if ($oldpat && PHP_VERSION_ID >= 50500) continue;
+    
+    $fmt = $x; # for $FmtP
+    if (is_callable($rep) && $rep != '_') 
+      $x = preg_replace_callback($pat,$rep,$x);
+    else
+      $x = preg_replace($pat,$rep,$x);# simple text OR called by old addon|skin|recipe needing update, see pmwiki.org/Troubleshooting
+  }
+  return $x;
+}
+function PRCB($pat, $repl, $subj, $vars=null, $limit=-1, &$count=null, $flags=0) {
+  if (isset($vars)) {
+    $cb = new PPRC($vars, $repl);
+    $repl = array($cb, 'callback');
+  }
+  return preg_replace_callback($pat, $repl, $subj, $limit, $count, $flags);
+}
+## callback functions
+class PPRC { # PmWiki preg replace callbacks + pass local vars
+  var $vars;
+  var $cb;
+  function __construct($vars = null, $cb = null) {
+    if (!is_null($vars)) $this->vars = $vars;
+    if (!is_null($cb)) $this->cb = $cb;
+    
+  }
+  function pagevar($m) { # called from FmtPageName
+    $pagename = $this->vars;
+    return PageVar($pagename, $m[1]);
+  }
+  function ftime($m) { # called from PSFT
+    $vars = $this->vars;
+    return cb_PSFT($m[0], $vars);
+  }
+  function callback($m) {
+    $cb = $this->cb;
+    return $cb($m, $this->vars);
+  }
+}
+
+# restores kept/protected strings
+function cb_expandkpv($m) { return @$GLOBALS['KPV'][$m[1]]; }
+
+# make a string upper or lower case in various patterns
+function cb_toupper($m) { return strtoupper($m[1]); }
+function cb_tolower($m) { return strtolower($m[1]); }
+
+function pmcrypt($str, $salt=null) {
+  if ($salt && preg_match('/^(-?@|\\*$)/',  $salt)) return false;
+  if (!is_null($salt)) return crypt($str, $salt);
+
+  if (function_exists('password_hash'))
+    return password_hash($str, PASSWORD_DEFAULT);
+  return crypt($str);
+}
+
+# generate or check a random one-time token to prevent CSRF
+function pmtoken($token = null) {
+  global $SessionMaxTokens, $PmTokenFn;
+  if (IsEnabled($PmTokenFn) && function_exists($PmTokenFn))
+    return $PmTokenFn($token);
+  pm_session_start();
+  if (!isset($_SESSION['pmtokens'])) $_SESSION['pmtokens'] = array();
+  if (is_null($token)) { # create a one-time token
+    $len = mt_rand(20,30);
+    $token = "";
+    while(strlen($token)<$len) {
+      $token .= chr(mt_rand(32,126));
+    }
+    if (count($_SESSION['pmtokens']))
+      $id = max(array_keys($_SESSION['pmtokens']))+1;
+    else $id = 0;
+    $_SESSION['pmtokens'][$id] = $token;
+    if (IsEnabled($SessionMaxTokens, 0)) {
+      $max = $SessionMaxTokens;
+      $_SESSION['pmtokens'] = array_slice($_SESSION['pmtokens'], -$max, $max, true);
+    }
+    return "$id:" . md5($token);
+  }
+  # else: check a token, if correct, delete it
+  @list($id, $hash) = explode(':', $token);
+  $id = intval($id);
+  if (isset($_SESSION['pmtokens'][$id]) && $hash == md5($_SESSION['pmtokens'][$id])) {
+    unset($_SESSION['pmtokens'][$id]);
+    return true;
+  }
+  return false;
+}
+
+function PmNonce() {
+  if (function_exists('random_bytes')) {
+    $nonce = bin2hex(random_bytes(5));
+  }
+  else $nonce = mt_rand();
+  return $nonce;
+}
+
+
+
+function StopWatch($x) { 
+  global $StopWatch, $EnableStopWatch;
+  if (!$EnableStopWatch) return;
+  static $wstart = 0, $ustart = 0;
+  list($usec,$sec) = explode(' ',microtime());
+  $wtime = ($sec+$usec); 
+  if (!$wstart) $wstart = $wtime;
+  if ($EnableStopWatch != 2) 
+    { $StopWatch[] = sprintf("%05.2f %s", $wtime-$wstart, $x); return; }
+  $dat = getrusage();
+  $utime = ($dat['ru_utime.tv_sec']+$dat['ru_utime.tv_usec']/1000000);
+  if (!$ustart) $ustart=$utime;
+  $StopWatch[] = 
+    sprintf("%05.2f %05.2f %s", $wtime-$wstart, $utime-$ustart, $x);
+}
+
+
+## DRange converts a variety of string formats into date (ranges).
+## It returns the start and end timestamps (+1 second) of the specified date.
+function DRange($when) {
+  global $Now;
+  ##  unix/posix @timestamp dates
+  if (preg_match('/^\\s*@(\\d+)\\s*(.*)$/', $when, $m)) {
+    $t0 = $m[2] ? strtotime($m[2], $m[1]) : $m[1];
+    return array($t0, $t0+1);
+  }
+  ##  ISO-8601 dates
+  $dpat = '/
+    (?<!\\d)                 # non-digit
+    (19\\d\\d|20[0-3]\\d)    # year ($1)
+    ([-.\\/]?)               # date separator ($2)
+    (0\\d|1[0-2])            # month ($3)
+    (?: \\2                  # repeat date separator
+      ([0-2]\\d|3[0-1])      # day ($4)
+      (?: T                  # time marker
+        ([01]\\d|2[0-4])     # hour ($5)
+        ([.:]?)              # time separator ($6)
+        ([0-5]\\d)           # minute ($7)
+        (?: \\6              # repeat time separator
+          ([0-5]\\d|60)      # seconds ($8)
+        )?                   # optional :ss
+      )?                     # optional Thh:mm:ss
+    )?                       # optional -ddThh:mm:ss
+    (?!\d)                   # non-digit
+    /x';
+  if (preg_match($dpat, $when, $m) &&
+    !preg_match('/[+-]\\s*\\d+\\s*(sec(ond)?|min(ute)?|forth?night|day|week(day)?|month|year)s?/i', $when)) {
+    $n = $m;
+    ##  if no time given, assume range of 1 day (except when full month)
+    if (@$m[4]>'' && @$m[5] == '') { @$n[4]++; }
+    ##  if no day given, assume 1st of month and full month range
+    if (@$m[4] == '') { $m[4] = 1; $n[4] = 1; $n[3]++; }
+    ##  if no seconds given, assume range of 1 minute (except when full day)
+    if (@$m[7]>'' && @$m[8] == '') { @$n[7]++; }
+    $t0 = @mktime($m[5], $m[7], $m[8], $m[3], $m[4], $m[1]);
+    $t1 = @mktime($n[5], $n[7], $n[8], $n[3], $n[4], $n[1]);
+    return array($t0, $t1);
+  }
+  ##  now, today, tomorrow, yesterday
+  NoCache();
+  if ($when == 'now') return array($Now, $Now+1);
+  $m = localtime(time());
+  if ($when == 'tomorrow') { $m[3]++; $when = 'today'; }
+  if ($when == 'yesterday') { $m[3]--; $when = 'today'; }
+  if ($when == 'today') 
+    return array(mktime(0, 0, 0, $m[4]+1, $m[3]  , $m[5]+1900),
+                 mktime(0, 0, 0, $m[4]+1, $m[3]+1, $m[5]+1900));
+  if (preg_match('/^\\s*$/', $when)) return array(-1, -1);
+  $t0 = strtotime($when);
+  $t1 = strtotime("+1 day", $t0);
+  return array($t0, $t1);
+}
+
+## FmtDateTimeZ converts a GMT datetime like @2022-01-08T10:07:08Z 
+## into a <time> element formatted according to $TimeFmt
+function FmtDateTimeZ($m) {
+  global $TimeFmt, $TimeISOZFmt;
+  $time = strtotime(substr($m[0], 1)); # "@"
+  $iso = PSFT($TimeISOZFmt, $time, null, 'GMT');
+  $text = PSFT($TimeFmt, $time);
+  return "<time datetime='$iso'>$text</time>";
+}
+
+## DiffTimeCompact subtracts 2 timestamps and outputs a compact
+## human-readable delay in hours, days, weeks, months or years
+function DiffTimeCompact($time, $time2=null, $precision=1) {
+  if (is_null($time2)) $time2 = $GLOBALS['Now'];
+  $suffix = explode(',', XL('h,d,w,m,y'));
+  $x = $hours = abs($time2 - $time)/3600;
+  if ($x<24) return round($x,$precision).$suffix[0];
+  $x /= 24;   if ($x<14) return round($x,$precision).$suffix[1];
+  $x /= 7;    if ($x< 9) return round($x,$precision).$suffix[2];
+  $x = $hours/2/365.2425; if ($x<24) return round($x,$precision).$suffix[3];
+  return round($hours/24/365.2425,$precision).$suffix[4];
+}
+
+## FileSizeCompact outputs a human readable file size
+## with an appropriate suffix.
+## Note: unreliable filemtime()/stat() over 2GB @ 32bit
+function FileSizeCompact($n, $precision=1) {
+  if (!(float)$n) return 0;
+  $units = 'bkMGTPEZY';
+  $b = log((float)$n, 1024);
+  $fb = floor($b);
+  return round(pow(1024,$b-$fb),$precision).@$units[$fb];
+}
+
+## AsSpaced converts a string with WikiWords into a spaced version
+## of that string.  (It can be overridden via $AsSpacedFunction.)
+function AsSpaced($text) {
+  $text = preg_replace("/([[:lower:]\\d])([[:upper:]])/", '$1 $2', $text);
+  $text = preg_replace('/([^-\\d])(\\d[-\\d]*( |$))/','$1 $2',$text);
+  return preg_replace("/([[:upper:]])([[:upper:]][[:lower:]\\d])/",
+    '$1 $2', $text);
+}
+
+## Lock is used to make sure only one instance of PmWiki is running when
+## files are being written.  It does not "lock pages" for editing.
+function Lock($op) { 
+  global $WorkDir, $LockFile, $EnableReadOnly;
+  if ($op > 0 && IsEnabled($EnableReadOnly, 0))
+    Abort('Cannot modify site -- $EnableReadOnly is set', 'readonly');
+  SDV($LockFile, "$WorkDir/.flock");
+  mkdirp(dirname($LockFile));
+  static $lockfp,$curop;
+  if (!$lockfp) $lockfp = @fopen($LockFile, "w");
+  if (!$lockfp) { 
+    if ($op <= 0) return;
+    @unlink($LockFile); 
+    $lockfp = fopen($LockFile,"w") or
+      Abort('Cannot acquire lockfile', 'flock');
+    fixperms($LockFile);
+  }
+  if ($op<0) { flock($lockfp,LOCK_UN); fclose($lockfp); $lockfp=0; $curop=0; }
+  elseif ($op==0) { flock($lockfp,LOCK_UN); $curop=0; }
+  elseif ($op==1 && $curop<1) 
+    { session_write_close(); flock($lockfp,LOCK_SH); $curop=1; }
+  elseif ($op==2 && $curop<2) 
+    { session_write_close(); flock($lockfp,LOCK_EX); $curop=2; }
+}
+
+## mkdirp creates a directory and its parents as needed, and sets
+## permissions accordingly.
+function mkdirp($dir) {
+  global $ScriptUrl;
+  if (file_exists($dir)) return;
+  if (!file_exists(dirname($dir))) mkdirp(dirname($dir));
+  if (mkdir($dir, 0777)) {
+    fixperms($dir);
+    if (@touch("$dir/xxx")) { unlink("$dir/xxx"); return; }
+    rmdir($dir);
+  }
+  $parent = realpath(dirname($dir)); 
+  $bdir = basename($dir);
+  $perms = decoct(fileperms($parent) & 03777);
+  $msg = "PmWiki needs to have a writable <tt>$dir/</tt> directory 
+    before it can continue.  You can create the directory manually 
+    by executing the following commands on your server:
+    <pre>    mkdir $parent/$bdir\n    chmod 777 $parent/$bdir</pre>
+    Then, <a href='{$ScriptUrl}'>reload this page</a>.";
+  $safemode = ini_get('safe_mode');
+  if (!$safemode) $msg .= "<br /><br />Or, for a slightly more 
+    secure installation, try executing <pre>    chmod 2777 $parent</pre> 
+    on your server and following <a target='_blank' href='$ScriptUrl'>
+    this link</a>.  Afterwards you can restore the permissions to 
+    their current setting by executing <pre>    chmod $perms $parent</pre>.";
+  Abort($msg);
+}
+
+## fixperms attempts to correct permissions on a file or directory
+## so that both PmWiki and the account (current dir) owner can manipulate it
+function fixperms($fname, $add = 0, $set = 0) {
+  clearstatcache();
+  if (!file_exists($fname)) Abort('?no such file');
+  if ($set) { # advanced admins, $UploadPermSet
+    if (fileperms($fname) != $set) @chmod($fname,$set);
+  }
+  else {
+    $bp = 0;
+    if (fileowner($fname)!=@fileowner('.') && @fileowner('.')!==0)
+      $bp = (is_dir($fname)) ? 007 : 006;
+    if (filegroup($fname)==@filegroup('.')) $bp <<= 3;
+    $bp |= $add;
+    if ($bp && (fileperms($fname) & $bp) != $bp)
+      @chmod($fname,fileperms($fname)|$bp);
+  }
+}
+
+## GlobToPCRE converts wildcard patterns into pcre patterns for
+## inclusion and exclusion.  Wildcards beginning with '-' or '!'
+## are treated as things to be excluded.
+function GlobToPCRE($pat) {
+  $pat = preg_quote($pat, '/');
+  $pat = str_replace(array('\\*', '\\?', '\\[', '\\]', '\\^', '\\-', '\\!'),
+                     array('.*',  '.',   '[',   ']',   '^', '-', '!'), $pat);
+  $excl = array(); $incl = array();
+  foreach(preg_split('/,+\s?/', $pat, -1, PREG_SPLIT_NO_EMPTY) as $p) {
+    if ($p[0] == '-' || $p[0] == '!') $excl[] = '^'.substr($p, 1).'$';
+    else $incl[] = "^$p$";
+  }
+  return array(implode('|', $incl), implode('|', $excl));
+}
+
+## FixGlob changes wildcard patterns without '.' to things like
+## '*.foo' (name matches) or 'foo.*' (group matches).
+function FixGlob($x, $rep = '$1*.$2') {
+  return preg_replace('/([\\s,][-!]?)([^\\/.\\s,]+)(?=[\\s,])/', $rep, ",$x,");
+}
+
+## MatchPageNames reduces $pagelist to those pages with names
+## matching the pattern(s) in $pat.  Patterns can be either
+## regexes to include ('/'), regexes to exclude ('!'), or
+## wildcard patterns (all others).
+function MatchPageNames($pagelist, $pat, $caseinsensitive = true) {
+  # Note: MatchNames() is the generic function matching patterns,
+  # works for attachments and other arrays. We can commit to 
+  # keep it generic, even if we someday change MatchPageNames().
+  return MatchNames($pagelist, $pat, $caseinsensitive);
+}
+function MatchNames($list, $pat, $caseinsensitive = true) {
+  global $Charset, $EnableRangeMatchUTF8;
+  # allow range matches in utf8; doesn't work on pmwiki.org and possibly elsewhere
+  $pcre8 = (IsEnabled($EnableRangeMatchUTF8,0) && $Charset=='UTF-8')? 'u' : '';
+  $insensitive = $caseinsensitive ? 'i' : '';
+  $list = (array)$list;
+  foreach((array)$pat as $p) {
+    if (count($list) < 1) break;
+    if (!$p) continue;
+    switch ($p[0]) {
+      case '/': 
+        $list = preg_grep($p, $list); 
+        break;
+      case '!':
+        $list = array_diff($list, preg_grep($p, $list)); 
+        break;
+      default:
+        list($inclp, $exclp) = GlobToPCRE(str_replace('/', '.', $p));
+        if ($exclp) 
+          $list = array_diff($list, preg_grep("/$exclp/$insensitive$pcre8", $list));
+        if ($inclp)
+          $list = preg_grep("/$inclp/$insensitive$pcre8", $list);
+    }
+  }
+  return $list;
+}
+  
+## ResolvePageName "normalizes" a pagename based on the current
+## settings of $DefaultPage and $PagePathFmt.  It's normally used
+## during initialization to fix up any missing or partial pagenames.
+function ResolvePageName($pagename) {
+  global $DefaultPage, $DefaultGroup, $DefaultName,
+    $GroupPattern, $NamePattern, $EnableFixedUrlRedirect;
+  SDV($DefaultPage, "$DefaultGroup.$DefaultName");
+  $pagename = preg_replace('!([./][^./]+)\\.html?$!', '$1', $pagename);
+  if ($pagename == '') return $DefaultPage;
+  $p = MakePageName($DefaultPage, $pagename);
+  if (!preg_match("/^($GroupPattern)[.\\/]($NamePattern)$/i", $p)) {
+    header('HTTP/1.1 404 Not Found');
+    Abort("\$[?invalid page name] \"$p\"");
+  }
+  if (preg_match("/^($GroupPattern)[.\\/]($NamePattern)$/i", $pagename))
+    return $p;
+  if (IsEnabled($EnableFixedUrlRedirect, 1)
+      && $p && (PageExists($p) || preg_match('/[\\/.]/', $pagename)))
+    { Redirect($p); exit(); }
+  return MakePageName($DefaultPage, "$pagename.$pagename");
+}
+
+## MakePageName is used to convert a string $str into a fully-qualified
+## pagename.  If $str doesn't contain a group qualifier, then 
+## MakePageName uses $basepage and $PagePathFmt to determine the 
+## group of the returned pagename.
+function MakePageName($basepage, $str) {
+  global $MakePageNameFunction, $PageNameChars, $PagePathFmt,
+    $MakePageNamePatterns, $MakePageNameSplitPattern;
+  if (@$MakePageNameFunction) return $MakePageNameFunction($basepage, $str);
+  
+  SDV($PageNameChars,'-[:alnum:]');
+  SDV($MakePageNamePatterns, array(
+    "/'/" => '',                      # strip single-quotes
+    "/[^$PageNameChars]+/" => ' ',    # convert everything else to space
+    '/((^|[^-\\w])\\w)/' => 'cb_toupper', # CamelCase
+    '/ /' => ''));
+  SDV($MakePageNameSplitPattern, '/[.\\/]/');
+  $str = preg_replace('/[#?].*$/', '', $str);
+  $m = preg_split($MakePageNameSplitPattern, $str);
+  if (count($m)<1 || count($m)>2 || $m[0]=='') return '';
+  ##  handle "Group.Name" conversions
+  if (@$m[1] > '') {
+    $group = PPRA($MakePageNamePatterns, $m[0]);
+    $name =  PPRA($MakePageNamePatterns, $m[1]);
+    return "$group.$name";
+  }
+  $name = PPRA($MakePageNamePatterns, $m[0]);
+  $isgrouphome = count($m) > 1;
+  foreach((array)$PagePathFmt as $pg) {
+    if ($isgrouphome && strncmp($pg, '$1.', 3) !== 0) continue;
+    $pn = FmtPageName(str_replace('$1', $name, $pg), $basepage);
+    if (PageExists($pn)) return $pn;
+  }
+  if ($isgrouphome) {
+    foreach((array)$PagePathFmt as $pg) 
+      if (strncmp($pg, '$1.', 3) == 0)
+        return FmtPageName(str_replace('$1', $name, $pg), $basepage);
+    return "$name.$name";
+  }
+  return preg_replace('/[^\\/.]+$/', $name, $basepage);
+}
+
+
+## MakeBaseName uses $BaseNamePatterns to return the "base" form
+## of a given pagename -- i.e., stripping any recipe-defined
+## prefixes or suffixes from the page.
+function MakeBaseName($pagename, $patlist = NULL) {
+  global $BaseNamePatterns;
+  if (is_null($patlist)) $patlist = (array)@$BaseNamePatterns;
+  foreach($patlist as $pat => $rep) 
+    $pagename = preg_replace($pat, $rep, $pagename); # TODO
+  return $pagename;
+}
+
+
+## PCache caches basic information about a page and its attributes--
+## usually everything except page text and page history.  This makes
+## for quicker access to certain values in PageVar below.
+function PCache($pagename, $page) {
+  global $PCache;
+  foreach($page as $k=>$v) 
+    if ($k!='text' && strpos($k,':')===false) $PCache[$pagename][$k]=$v;
+}
+
+## SetProperty saves a page property into $PCache.  For convenience
+## it returns the $value of the property just set.  If $sep is supplied,
+## then $value is appended to the current property (with $sep as
+## as separator) instead of replacing it. If $keep is suplied and the 
+## property already exists, then $value will be ignored.
+function SetProperty($pagename, $prop, $value, $sep=NULL, $keep=NULL) {
+  global $PCache, $KeepToken;
+  NoCache();
+  $prop = "=p_$prop";
+  $value = preg_replace_callback("/$KeepToken(\\d.*?)$KeepToken/",
+                        "cb_expandkpv", $value);
+  if (!is_null($sep) && isset($PCache[$pagename][$prop]))
+    $value = $PCache[$pagename][$prop] . $sep . $value;
+  if (is_null($keep) || !isset($PCache[$pagename][$prop]))
+    $PCache[$pagename][$prop] = $value;
+  return $PCache[$pagename][$prop];
+}
+
+
+## PageTextVar loads a page's text variables (defined by
+## $PageTextVarPatterns) into a page's $PCache entry, and returns
+## the property associated with $var.
+function PageTextVar($pagename, $var) {
+  global $PCache, $PageTextVarPatterns, $MaxPageTextVars,
+    $DefaultUnsetPageTextVars, $DefaultEmptyPageTextVars;
+  SDV($MaxPageTextVars, 500);
+  static $status;
+  if (@$status["$pagename:$var"]++ > $MaxPageTextVars) return '';
+  if (!@$PCache[$pagename]['=pagetextvars']) {
+    $pc = &$PCache[$pagename];
+    $pc['=pagetextvars'] = 1;
+    $page = RetrieveAuthPage($pagename, 'read', false, READPAGE_CURRENT);
+    if ($page) {
+      foreach((array)$PageTextVarPatterns as $pat) 
+        if (preg_match_all($pat, IsEnabled($pc['=preview'],strval(@$page['text'])),
+          $match, PREG_SET_ORDER)) {
+          foreach($match as $m) {
+            $t = preg_replace("/\\{\\$:{$m[2]}\\}/", '', $m[3]);
+            
+            $pc["=p_{$m[2]}"] = Qualify($pagename, $t);
+          }
+        }
+      }
+  }
+  if (! isset($PCache[$pagename]["=p_$var"]) && is_array($DefaultUnsetPageTextVars)) {
+    foreach($DefaultUnsetPageTextVars as $k=>$v) {
+      if (count(MatchNames($var, $k))) {
+        $PCache[$pagename]["=p_$var"] = $v;
+        break;
+      }
+    }
+    SDV($PCache[$pagename]["=p_$var"], ''); # to avoid re-loop
+  }
+  elseif (@$PCache[$pagename]["=p_$var"] === '' && is_array($DefaultEmptyPageTextVars)) {
+    foreach($DefaultEmptyPageTextVars as $k=>$v) {
+      if (count(MatchNames($var, $k))) {
+        $PCache[$pagename]["=p_$var"] = $v;
+        break;
+      }
+    }
+    SDV($PCache[$pagename]["=p_$var"], ''); # to avoid re-loop
+  }
+  return strval(@$PCache[$pagename]["=p_$var"]);
+}
+
+
+function PageVar($pagename, $var, $pn = '') {
+  global $Cursor, $PCache, $FmtPV, $AsSpacedFunction, $ScriptUrl,
+    $EnablePathInfo;
+  if ($var == '$ScriptUrl') return PUE($ScriptUrl);
+  if ($pn) {
+    $pn = isset($Cursor[$pn]) ? $Cursor[$pn] : MakePageName($pagename, $pn);
+  } else $pn = $pagename;
+  if ($pn) {
+    if (preg_match('/^(.+)[.\\/]([^.\\/]+)$/', $pn, $match)
+        && !isset($PCache[$pn]['time']) 
+        && (!@$FmtPV[$var] || strpos($FmtPV[$var], '$page') !== false)) {
+      $page = ReadPage($pn, READPAGE_CURRENT);
+      PCache($pn, $page);
+    }
+    @list($d, $group, $name) = $match;
+    $page = &$PCache[$pn];
+    if (@$FmtPV[$var] && strpos(@$FmtPV[$var], '$authpage') !== false) {
+      if (!isset($page['=auth']['read'])) {
+        $x = RetrieveAuthPage($pn, 'read', false, READPAGE_CURRENT);
+        if ($x) PCache($pn, $x);
+      }
+      if (@$page['=auth']['read']) $authpage = &$page;
+    }
+  } else { $group = ''; $name = ''; }
+  if (isset($FmtPV[$var])) return eval("return ({$FmtPV[$var]});");
+  if (strncmp($var, '$:', 2)==0) return PageTextVar($pn, substr($var, 2));
+  return '';
+}
+
+## FmtPageName handles $[internationalization] and $Variable 
+## substitutions in strings based on the $pagename argument.
+function FmtPageName($fmt, $pagename) {
+  # Perform $-substitutions on $fmt relative to page given by $pagename
+  global $GroupPattern, $NamePattern, $EnablePathInfo, $ScriptUrl,
+    $GCount, $UnsafeGlobals, $FmtV, $FmtP, $FmtPV, $PCache, $AsSpacedFunction;
+  if (! @$fmt) { return ''; }
+  if (strpos($fmt,'$')===false) return $fmt;
+  $fmt = preg_replace_callback('/\\$([A-Z]\\w*Fmt)\\b/','cb_expandglobal',$fmt);
+  $fmt = preg_replace_callback('/\\$\\[(?>([^\\]]+))\\]/',"cb_expandxlang",$fmt);
+  $fmt = str_replace('{$ScriptUrl}', '$ScriptUrl', $fmt);
+  $pprc = new PPRC($pagename);
+  $fmt = preg_replace_callback('/\\{\\*?(\\$[A-Z]\\w+)\\}/', 
+    array($pprc, 'pagevar'), $fmt);
+  if (strpos($fmt,'$')===false) return $fmt;
+  if ($FmtP) $fmt = PPRA($FmtP, $fmt); # FIXME
+  static $pv, $pvpat;
+  if ($pv != count($FmtPV)) {
+    $pvpat = str_replace('$', '\\$', implode('|', array_keys($FmtPV)));
+    $pv = count($FmtPV);
+  }
+  $fmt = preg_replace_callback("/($pvpat)\\b/", array($pprc, 'pagevar'), $fmt);
+  $fmt = preg_replace_callback('!\\$ScriptUrl/([^?#\'"\\s<>]+)!',
+    'cb_expandscripturl', $fmt);
+  if (strpos($fmt,'$')===false) return $fmt;
+  static $g;
+  if ($GCount != count($GLOBALS)+count($FmtV)) {
+    $g = array();
+    foreach($GLOBALS as $n=>$v) {
+      if (is_array($v) || is_object($v) ||
+        isset($FmtV["\$$n"]) || in_array($n,$UnsafeGlobals)) continue;
+      $g["\$$n"] = $v;
+    }
+    $GCount = count($GLOBALS)+count($FmtV);
+    krsort($g); reset($g);
+  }
+  $fmt = str_replace(array_keys($g),array_values($g),$fmt);
+  $fmt = preg_replace_callback('/(?>(\\$[[:alpha:]]\\w+))/',
+          "cb_expandfmtv", $fmt);
+  return $fmt;
+}
+function cb_expandglobal($m){ return @$GLOBALS[$m[1]]; }
+function cb_expandxlang ($m){ return NoCache(XL($m[1])); }
+function cb_expandfmtv ($m){ 
+  return isset($GLOBALS['FmtV'][$m[1]]) ? $GLOBALS['FmtV'][$m[1]] : $m[1];
+}
+function cb_expandscripturl($m) {
+  global $EnablePathInfo, $ScriptUrl;
+  return (@$EnablePathInfo) ? "$ScriptUrl/" . PUE($m[1])
+    : "$ScriptUrl?n=".str_replace('/','.',PUE($m[1]));
+}
+
+
+## FmtPageTitle returns the page title, or the page name.
+## It localizes standard technical pages (RecentChanges...)
+function FmtPageTitle($title, $name, $spaced=0) {
+  if ($title>'') return str_replace("$", "&#036;", $title);
+  global $SpaceWikiWords, $AsSpacedFunction;
+  if (preg_match("/^(Site(Admin)?
+    |(All)?(Site|Group)(Header|Footer|Attributes)
+    |(Side|Left|Right)Bar
+    |(Wiki)?Sand[Bb]ox
+    |(All)?Recent(Changes|Uploads)|(Auth|Edit)Form
+    |InterMap|PageActions|\\w+QuickReference|\\w+Templates
+    |NotifyList|AuthUser|ApprovedUrls|(Block|Auth)List
+    )$/x", $name) && $name != XL($name))
+      return XL($name);
+  return ($spaced || $SpaceWikiWords) ? $AsSpacedFunction($name) : $name;
+}
+
+## FmtGroupHome returns the homepage of any page ($Group or $DefaultName)
+function FmtGroupHome($pn,$group,$var) {
+  $gpn = MakePageName($pn, "$group.");
+  $pv = substr($var, 14);
+  if (!$pv) return $gpn;
+  return PageVar($gpn, "\$$pv");
+}
+
+## FmtTemplateVars uses $vars to replace all occurrences of 
+## {$$key} in $text with $vars['key'].
+function FmtTemplateVars($text, $vars, $pagename = NULL) {
+  global $FmtPV, $EnableUndefinedTemplateVars;
+  if ($pagename) {
+    $pat = implode('|', array_map('preg_quote', array_keys($FmtPV)));
+    $pprc = new PPRC($pagename);
+    $text = preg_replace_callback("/\\{\\$($pat)\\}/",
+              array($pprc, 'pagevar'), $text);
+  }
+  foreach(preg_grep('/^[\\w$]/', array_keys($vars)) as $k)
+    if (!is_array($vars[$k]))
+      $text = str_replace("{\$\$$k}", @$vars[$k], $text);
+  if (! IsEnabled($EnableUndefinedTemplateVars, 0))
+    $text = preg_replace("/\\{\\$\\$\\w+\\}/", '', $text);
+  return $text;
+}
+
+## The XL functions provide translation tables for $[i18n] strings
+## in FmtPageName().
+function XL($key) {
+  global $XL,$XLLangs;
+  foreach($XLLangs as $l) if (isset($XL[$l][$key])) return $XL[$l][$key];
+  return $key;
+}
+function XLSDV($lang,$a) {
+  global $XL;
+  foreach($a as $k=>$v) {
+    if (!isset($XL[$lang][$k])) {
+      if (preg_match('/^e_(rows|cols)$/', $k)) $v = intval($v);
+      elseif (preg_match('/^ak_/', $k)) $v = @$v[0];
+      $XL[$lang][$k]=$v;
+    }
+  }
+}
+function XLPage($lang,$p,$nohtml=false) {
+  global $TimeFmt,$XLLangs,$FarmD, $EnableXLPageScriptLoad;
+  $page = ReadPage($p, READPAGE_CURRENT);
+  if (!$page) return;
+  $text = preg_replace("/=>\\s*\n/",'=> ',@$page['text']);
+  foreach(explode("\n",$text) as $l)
+    if (preg_match('/^\\s*[\'"](.+?)[\'"]\\s*=>\\s*[\'"](.+)[\'"]/',$l,$m))
+      $xl[stripslashes($m[1])] = stripslashes($nohtml? PHSC($m[2]): $m[2]);
+  if (isset($xl)) {
+    if (IsEnabled($EnableXLPageScriptLoad, 0) && @$xl['xlpage-i18n']) {
+      $i18n = preg_replace('/[^-\\w]/','',$xl['xlpage-i18n']);
+      include_once("$FarmD/scripts/xlpage-$i18n.php");
+    }
+    if (@$xl['Locale']) setlocale(LC_ALL,$xl['Locale']);
+    if (@$xl['TimeFmt']) $TimeFmt=$xl['TimeFmt'];
+    if (!in_array($lang, $XLLangs)) array_unshift($XLLangs, $lang);
+    XLSDV($lang,$xl);
+  }
+}
+
+## CmpPageAttr is used with uksort to order a page's elements with
+## the latest items first.  This can make some operations more efficient.
+function CmpPageAttr($a, $b) {
+  @list($x, $agmt) = explode(':', $a);
+  @list($x, $bgmt) = explode(':', $b);
+  $nagmt = intval($agmt);
+  $nbgmt = intval($bgmt);
+  if ($agmt != $bgmt) 
+    return ($nagmt==0 || $nbgmt==0) ? $nagmt - $nbgmt : $nbgmt - $nagmt;
+  return strcmp($a, $b);
+}
+
+function pm_recode($s,$from,$to) {
+  static $able;
+  if (is_null($able)) {
+    # can we rely on iconv() or on mb_convert_encoding() ?
+    if (function_exists('iconv') && @iconv("UTF-8", "WINDOWS-1252//IGNORE", "te\xd0\xafst")=='test' )
+      $able = 'iconv';
+    elseif (function_exists('mb_convert_encoding') && @mb_convert_encoding("te\xd0\xafst", "WINDOWS-1252", "UTF-8")=="te?st")
+      $able = 'mb';
+    elseif (class_exists('UConverter')) $able = 'uc';
+    else $able = false;
+  }
+  $to = strtoupper($to);
+  $from = strtoupper($from);
+  switch ($able) {
+    case "iconv":
+      return @iconv($from,"$to//IGNORE",$s);
+    case "mb":
+      return @mb_convert_encoding($s,$to,$from);
+    case "uc":
+      if ($to == 'WINDOWS-1252') $to = 'ISO-8859-1';
+      if ($from == 'WINDOWS-1252') $from = 'ISO-8859-1';
+      return @UConverter::transcode($s,$to,$from);
+  }
+  if (function_exists('utf8_decode')) {
+    if ($to=='UTF-8' && $from=='WINDOWS-1252') return @utf8_decode($s);
+    if ($from=='UTF-8' && $to=='WINDOWS-1252') return @utf8_encode($s);
+  }
+  return $s;
+}
+
+## class PageStore holds objects that store pages via the native
+## filesystem.
+class PageStore {
+  var $dirfmt;
+  var $iswrite;
+  var $encodefilenames;
+  var $attr;
+  function __construct($d='$WorkDir/$FullName', $w=0, $a=NULL) { 
+    $this->dirfmt = $d; $this->iswrite = $w; $this->attr = (array)$a;
+    $GLOBALS['PageExistsCache'] = array();
+  }
+  function recodefn($s,$from,$to) {
+    return pm_recode($s,$from,$to);
+  }
+  function pagefile($pagename) {
+    global $FarmD;
+    $dfmt = $this->dirfmt;
+    if ($pagename > '') {
+      $pagename = str_replace('/', '.', $pagename);
+      if ($dfmt == 'wiki.d/{$FullName}')               # optimizations for
+        return $this->PFE("wiki.d/$pagename");         # standard locations
+      if ($dfmt == '$FarmD/wikilib.d/{$FullName}')     # 
+        return $this->PFE("$FarmD/wikilib.d/$pagename");
+      if ($dfmt == 'wiki.d/{$Group}/{$FullName}')
+        return $this->PFE(preg_replace('/([^.]+).*/', 'wiki.d/$1/$0', $pagename));
+    }
+    return $this->PFE(FmtPageName($dfmt, $pagename));
+  }
+  function PFE($f) { # pagefile_encode
+    if (!$this->encodefilenames) return $f;
+    global $PageFileEncodeFunction;
+    return $PageFileEncodeFunction($f);
+  }
+  function PFD($f) { # pagefile_decode
+    if (!$this->encodefilenames) return $f;
+    global $PageFileDecodeFunction;
+    return $PageFileDecodeFunction($f);
+  }
+  function read($pagename, $since=0) {
+    $newline = '';
+    $urlencoded = false;
+    $pagefile = $this->pagefile($pagename);
+    if ($pagefile && ($fp=@fopen($pagefile, "r"))) {
+      $page = $this->attr;
+      while (!feof($fp)) {
+        $line = @fgets($fp, 4096);
+        while (substr($line, -1, 1) != "\n" && !feof($fp)) 
+          { $line .= fgets($fp, 4096); }
+        $line = rtrim($line);
+        if ($urlencoded) $line = urldecode(str_replace('+', '%2b', $line));
+        @list($k,$v) = explode('=', $line, 2);
+        if (!$k) continue;
+        if ($k == 'version') { 
+          $ordered = (strpos($v, 'ordered=1') !== false); 
+          $urlencoded = (strpos($v, 'urlencoded=1') !== false); 
+          if (strpos($v, 'pmwiki-0.')!==false) $newline="\262";
+        }
+        if ($k == 'newline') { $newline = $v; continue; }
+        if ($since > 0 && preg_match('/:(\\d+)/', $k, $m) && $m[1] < $since) {
+          if (@$ordered) break;
+          continue;
+        }
+        if ($newline) $v = str_replace($newline, "\n", $v);
+        $page[$k] = $v;
+      }
+      fclose($fp);
+    }
+    return $this->recode($pagename, @$page);
+  }
+  function write($pagename,$page) {
+    global $Now, $Version, $Charset, $EnableRevUserAgent, $PageExistsCache, $DenyHtaccessContent;
+    $page['charset'] = $Charset;
+    $page['name'] = $pagename;
+    $page['time'] = $Now;
+    $page['host'] = strval(@$_SERVER['REMOTE_ADDR']);
+    $page['agent'] = strval(@$_SERVER['HTTP_USER_AGENT']);
+    if (IsEnabled($EnableRevUserAgent, 0)) $page["agent:$Now"] = $page['agent'];
+    $page['rev'] = intval(@$page['rev'])+1;
+    unset($page['version']); unset($page['newline']);
+    uksort($page, 'CmpPageAttr');
+    $s = false;
+    $pagefile = $this->pagefile($pagename);
+    $dir = dirname($pagefile); mkdirp($dir);
+    if (!file_exists("$dir/.htaccess") && $fp = @fopen("$dir/.htaccess", "w")) 
+      { fwrite($fp, $DenyHtaccessContent); fclose($fp); }
+    if ($pagefile && ($fp=fopen("$pagefile,new","w"))) {
+      $r0 = array('%', "\n", '<');
+      $r1 = array('%25', '%0a', '%3c');
+      $x = "version=$Version ordered=1 urlencoded=1\n";
+      $s = true && fputs($fp, $x); $sz = strlen($x);
+      foreach($page as $k=>$v) 
+        if ($k > '' && $k[0] != '=') {
+          $x = str_replace($r0, $r1, "$k=$v") . "\n";
+          $s = $s && fputs($fp, $x); $sz += strlen($x);
+        }
+      $s = fclose($fp) && $s;
+      $s = $s && (filesize("$pagefile,new") > $sz * 0.95);
+      if (file_exists($pagefile)) $s = $s && unlink($pagefile);
+      $s = $s && rename("$pagefile,new", $pagefile);
+    }
+    $s && fixperms($pagefile);
+    if (!$s)
+      Abort("Cannot write page to $pagename ($pagefile)...changes not saved");
+    PCache($pagename, $page);
+    unset($PageExistsCache[$pagename]); # PITS:01401
+  }
+  function exists($pagename) {
+    if (!$pagename) return false;
+    $pagefile = $this->pagefile($pagename);
+    return ($pagefile && file_exists($pagefile));
+  }
+  function delete($pagename) {
+    global $Now, $PageExistsCache;
+    $pagefile = $this->pagefile($pagename);
+    @rename($pagefile,"$pagefile,del-$Now");
+    unset($PageExistsCache[$pagename]); # PITS:01401
+  }
+  function ls($pats=NULL) {
+    global $GroupPattern, $NamePattern;
+    StopWatch("PageStore::ls begin {$this->dirfmt}");
+    $pats=(array)$pats; 
+    array_push($pats, "/^$GroupPattern\.$NamePattern$/");
+    $dir = $this->pagefile('$Group.$Name');
+    $maxslash = substr_count($dir, '/');
+    $dirlist = array(preg_replace('!/*[^/]*\\$.*$!','',$dir));
+    $out = array();
+    while (count($dirlist)>0) {
+      $dir = array_shift($dirlist);
+      $dfp = @opendir($dir); if (!$dfp) { continue; }
+      $dirslash = substr_count($dir, '/') + 1;
+      $o = array();
+      while ( ($pagefile = readdir($dfp)) !== false) {
+        if ($pagefile[0] == '.') continue;
+        if ($dirslash < $maxslash && is_dir("$dir/$pagefile"))
+          { array_push($dirlist,"$dir/$pagefile"); continue; }
+        if ($dirslash == $maxslash) $o[] = $this->PFD($pagefile);
+      }
+      closedir($dfp);
+      StopWatch("PageStore::ls merge {$this->dirfmt}");
+      $out = array_merge($out, MatchPageNames($o, $pats));
+    }
+    StopWatch("PageStore::ls end {$this->dirfmt}");
+    return $out;
+  }
+  function recode($pagename, $a) {
+    if (!$a) return false;
+    global $Charset, $PageRecodeFunction, $DefaultPageCharset, $EnableOldCharset;
+    if (@$PageRecodeFunction && function_exists($PageRecodeFunction)) 
+      return $PageRecodeFunction($a);
+    if (IsEnabled($EnableOldCharset)) $a['=oldcharset'] = @$a['charset'];
+    SDVA($DefaultPageCharset, array(''=>@$Charset)); # pre-2.2.31 RecentChanges
+    if (@$DefaultPageCharset[$a['charset']]>'')  # wrong pre-2.2.30 encs. *-2, *-9, *-13
+      $a['charset'] = $DefaultPageCharset[@$a['charset']];
+    if (!$a['charset'] || $Charset==$a['charset']) return $a;
+    $from = ($a['charset']=='ISO-8859-1') ? 'WINDOWS-1252' : $a['charset'];
+    $to = ($Charset=='ISO-8859-1') ? 'WINDOWS-1252' : $Charset;
+    if ($from != $to) {
+      foreach($a as $k=>$v) $a[$k] = $this->recodefn($v,$from,$to);
+    }
+    $a['charset'] = $Charset;
+    return $a;
+  }
+}
+
+function ReadPage($pagename, $since=0) {
+  # read a page from the appropriate directories given by $WikiReadDirsFmt.
+  global $WikiLibDirs,$Now;
+  foreach ($WikiLibDirs as $dir) {
+    $page = $dir->read($pagename, $since);
+    if ($page) break;
+  }
+  if (@!$page) $page = array('ctime' => $Now);
+  if (@!$page['time']) $page['time'] = $Now;
+  return $page;
+}
+
+function WritePage($pagename,$page) {
+  global $WikiLibDirs,$WikiDir,$LastModFile;
+  $WikiDir->iswrite = 1;
+  for($i=0; $i<count($WikiLibDirs); $i++) {
+    $wd = &$WikiLibDirs[$i];
+    if ($wd->iswrite && $wd->exists($pagename)) break;
+  }
+  if ($i >= count($WikiLibDirs)) $wd = &$WikiDir;
+  $wd->write($pagename,$page);
+  if ($LastModFile && !@touch($LastModFile)) 
+    { unlink($LastModFile); touch($LastModFile); fixperms($LastModFile); }
+}
+
+function PageExists($pagename) {
+  ##  note:  $PageExistsCache might change or disappear someday
+  global $WikiLibDirs, $PageExistsCache;
+  if (!isset($PageExistsCache[$pagename])) {
+    foreach((array)$WikiLibDirs as $dir)
+      if ($PageExistsCache[$pagename] = $dir->exists($pagename)) break;
+  }
+  return $PageExistsCache[$pagename];
+}
+
+function ListPages($pat=NULL) {
+  global $WikiLibDirs;
+  foreach((array)$WikiLibDirs as $dir) 
+    $out = array_unique(array_merge($dir->ls($pat),(array)@$out));
+  return $out;
+}
+
+function RetrieveAuthPage($pagename, $level, $authprompt=true, $since=0) {
+  global $AuthFunction;
+  SDV($AuthFunction,'PmWikiAuth');
+  if (!function_exists($AuthFunction)) return ReadPage($pagename, $since);
+  return $AuthFunction($pagename, $level, $authprompt, $since);
+}
+
+function Abort($msg, $info='') {
+  # exit pmwiki with an abort message
+  global $ScriptUrl, $Charset, $AbortFunction;
+  if (@$AbortFunction) return $AbortFunction($msg, $info);
+  if ($info) 
+    $info = "<p class='vspace'><a target='_blank' rel='nofollow' href='http://www.pmwiki.org/pmwiki/info/$info'>$[More information]</a></p>";
+  $msg = "<h3>$[PmWiki can't process your request]</h3>
+    <p class='vspace'>$msg</p>
+    <p class='vspace'>$[We are sorry for any inconvenience].</p>
+    $info
+    <p class='vspace'><a href='$ScriptUrl'>$[Return to] $ScriptUrl</a></p>";
+  @header("Content-type: text/html; charset=$Charset");
+  echo preg_replace_callback('/\\$\\[([^\\]]+)\\]/', "cb_expandxlang", $msg);
+  exit;
+}
+
+function Redirect($pagename, $urlfmt='$PageUrl', $redirecturl=null) {
+  # redirect the browser to $pagename
+  global $EnableRedirect, $RedirectDelay, $EnableStopWatch;
+  SDV($RedirectDelay, 0);
+  clearstatcache();
+  if (is_null($redirecturl)) $redirecturl = FmtPageName($urlfmt,$pagename);
+  if (IsEnabled($EnableRedirect,1) && 
+      (!isset($_REQUEST['redirect']) || $_REQUEST['redirect'])) {
+    header("Location: $redirecturl");
+    header("Content-type: text/html");
+    echo "<html><head>
+      <meta http-equiv='Refresh' Content='$RedirectDelay; URL=$redirecturl' />
+     <title>Redirect</title></head><body></body></html>";
+     exit;
+  }
+  echo "<a href='$redirecturl'>Redirect to $redirecturl</a>";
+  if (@$EnableStopWatch && function_exists('StopWatchHTML'))
+    StopWatchHTML($pagename, 1);
+  exit;
+}
+
+function PrintFmt($pagename,$fmt) {
+  global $HTTPHeaders,$FmtV;
+  if (is_array($fmt)) {
+    foreach($fmt as $f) PrintFmt($pagename,$f); 
+    return;
+  }
+  if ($fmt == 'headers:') {
+    foreach($HTTPHeaders as $h) (@$sent++) ? @header($h) : header($h);
+    return;
+  }
+  $fmt = strval($fmt);
+  $x = FmtPageName($fmt,$pagename);
+  if (strncmp($fmt, 'function:', 9) == 0 &&
+      preg_match('/^function:(\S+)\s*(.*)$/s', $x, $match) &&
+      function_exists($match[1]))
+    { $match[1]($pagename,$match[2]); return; }
+  if (strncmp($fmt, 'file:', 5) == 0 && preg_match("/^file:(.+)/s",$x,$match)) {
+    $filelist = preg_split('/[\\s]+/',$match[1],-1,PREG_SPLIT_NO_EMPTY);
+    foreach($filelist as $f) {
+      if (file_exists($f)) { include($f); return; }
+    }
+    return;
+  }
+  if (substr($x, 0, 7) == 'markup:')
+    { print MarkupToHTML($pagename, substr($x, 7)); return; }
+  if (substr($x, 0, 5) == 'wiki:')
+    { PrintWikiPage($pagename, substr($x, 5), 'read'); return; }
+  if (substr($x, 0, 5) == 'page:')
+    { PrintWikiPage($pagename, substr($x, 5), ''); return; }
+  echo $x;
+}
+
+function PrintWikiPage($pagename, $wikilist=NULL, $auth='read', $return=false) {
+  if (is_null($wikilist)) $wikilist=$pagename;
+  $pagelist = preg_split('/\s+/',$wikilist,-1,PREG_SPLIT_NO_EMPTY);
+  foreach($pagelist as $p) {
+    if (PageExists($p)) {
+      $page = ($auth) ? RetrieveAuthPage($p, $auth, false, READPAGE_CURRENT)
+              : ReadPage($p, READPAGE_CURRENT);
+      if (@$page['text']) {
+        $html = MarkupToHTML($pagename,Qualify($p, $page['text']));
+        if ($return) return $html;
+        echo $html;
+      }
+      return '';
+    }
+  }
+  return '';
+}
+
+function Keep($x, $pool=NULL) {
+  if (is_array($x)) $x = $x[0]; # used in many callbacks
+  # Keep preserves a string from being processed by wiki markups
+  global $BlockPattern, $KeepToken, $KPV, $KPCount;
+  $x = preg_replace_callback("/$KeepToken(\\d.*?)$KeepToken/", 'cb_expandkpv', $x);
+  if (is_null($pool) && preg_match("!</?($BlockPattern)\\b!", $x)) $pool = 'B';
+  $KPCount++; $KPV[$KPCount.$pool]=$x;
+  return $KeepToken.$KPCount.$pool.$KeepToken;
+}
+
+function KeepBlock($x, $pool=NULL) {
+  return '<:block>' . Keep($x, $pool);
+}
+
+##  MarkupEscape examines markup source and escapes any [@...@]
+##  and [=...=] sequences using Keep().  MarkupRestore undoes the
+##  effect of any MarkupEscape().
+function MarkupEscape($text) {
+  global $EscapePattern;
+  SDV($EscapePattern, '\\[([=@]).*?\\1\\]');
+  return preg_replace_callback("/$EscapePattern/s", "Keep", strval($text));
+}
+function MarkupRestore($text) {
+  global $KeepToken, $KPV;
+  if (is_null($text)) return '';
+  if (!$text) return $text;
+  return preg_replace_callback("/$KeepToken(\\d.*?)$KeepToken/", 'cb_expandkpv', $text);
+}
+
+
+##  Qualify() applies $QualifyPatterns to convert relative links
+##  and references into absolute equivalents.
+function Qualify($pagename, $text) {
+  global $QualifyPatterns, $KeepToken, $KPV, $tmp_qualify;
+  if (!@$QualifyPatterns) return $text;
+  $text = MarkupEscape($text);
+  $group = $tmp_qualify['group'] = PageVar($pagename, '$Group');
+  $name  = $tmp_qualify['name']  = PageVar($pagename, '$Name');
+  $tmp_qualify['pagename'] = $pagename;
+  $text = PPRA((array)$QualifyPatterns, $text);
+  return MarkupRestore($text);
+}
+
+
+function CondText($pagename,$condspec,$condtext) {
+  global $Conditions;
+  if (!preg_match("/^(\\S+)\\s*(!?)\\s*(\\S+)?\\s*(.*?)\\s*$/",
+    $condspec,$match)) return '';
+  @list($condstr,$condtype,$not,$condname,$condparm) = $match;
+  if (isset($Conditions[$condname])) {
+    $tf = @eval("return (".$Conditions[$condname].");");
+    if (!$tf xor $not) $condtext='';
+  }
+  return $condtext;
+}
+
+
+##  TextSection extracts a section of text delimited by page anchors.
+##  The $sections parameter can have the form
+##    #abc           - [[#abc]] to next anchor
+##    #abc#def       - [[#abc]] up to [[#def]]
+##    #abc#, #abc..  - [[#abc]] to end of text
+##    ##abc, #..#abc - beginning of text to [[#abc]]
+##  Returns the text unchanged if no sections are requested,
+##  or false if a requested beginning anchor isn't in the text.
+function TextSection($text, $sections, $args = NULL) {
+  if (!$text) return false; # PHP 8.1
+  $args = (array)$args;
+  $npat = '[[:alpha:]][-\\w.]*';
+  if (!preg_match("/#($npat)?(\\.\\.)?(#($npat)?)?/", $sections, $match))
+    return $text;
+  @list($x, $aa, $dots, $b, $bb) = $match;
+  if (!$dots && !$b) $bb = $npat;
+  if ($aa) {
+    $aa = preg_replace('/\\.\\.$/', '', $aa);
+    $pos = strpos($text, "[[#$aa]]");  if ($pos === false) return false;
+    if (@$args['anchors']) 
+      while ($pos > 0 && $text[$pos-1] != "\n") $pos--;
+    else $pos += strlen("[[#$aa]]");
+    $text = substr($text, $pos);
+  }
+  if ($bb)
+    $text = preg_replace("/(\n)[^\n]*\\[\\[#$bb\\]\\].*$/s", '$1', $text, 1);
+  return $text;
+}
+
+
+##  RetrieveAuthSection extracts a section of text from a page.
+##  If $pagesection starts with anything other than '#', it identifies
+##  the page to extract text from.  Otherwise RetrieveAuthSection looks
+##  in the pages given by $list, or in $pagename if $list is not specified.
+##  The selected page is placed in the global $RASPageName variable.
+##  The caller is responsible for calling Qualify() as needed.
+function RetrieveAuthSection($pagename, $pagesection, $list=NULL, $auth='read') {
+  global $RASPageName, $PCache;
+  if ($pagesection[0] != '#')
+    $list = array(MakePageName($pagename, $pagesection));
+  elseif (is_null($list)) $list = array($pagename);
+  foreach((array)$list as $t) {
+    $t = FmtPageName($t, $pagename);
+    if (!PageExists($t)) continue;
+    $tpage = RetrieveAuthPage($t, $auth, false, READPAGE_CURRENT);
+    if (!$tpage) continue;
+    $text = TextSection(IsEnabled($PCache[$t]['=preview'],strval(@$tpage['text'])),$pagesection);
+    if ($text !== false) { $RASPageName = $t; return $text; }
+  }
+  $RASPageName = '';
+  return false;
+}
+
+function IncludeText($pagename, $inclspec) {
+  global $MaxIncludes, $IncludeOpt, $InclCount, $PCache, $IncludedPages;
+  SDV($MaxIncludes,50);
+  SDVA($IncludeOpt, array('self'=>1));
+  if (@$InclCount[$pagename]++>=$MaxIncludes) return Keep($inclspec);
+  $args = array_merge($IncludeOpt, ParseArgs($inclspec));
+  while (count($args['#'])>0) {
+    $k = array_shift($args['#']); $v = array_shift($args['#']);
+    if ($k=='') {
+      if ($v[0] != '#') {
+        if (isset($itext)) continue;
+        $iname = MakePageName($pagename, $v);
+        if (!$args['self'] && $iname == $pagename) continue;
+        $ipage = RetrieveAuthPage($iname, 'read', false, READPAGE_CURRENT);
+        if (isset($PCache[$iname]['=preview'])) $itext = $PCache[$iname]['=preview'];
+        elseif (isset($ipage['text'])) $itext = $ipage['text'];
+      }
+      if (isset($itext))
+        $itext = TextSection($itext, $v, array('anchors' => 1));
+      continue;
+    }
+    $itext = strval(@$itext);
+    if (preg_match('/^(?:line|para)s?$/', $k)) {
+      preg_match('/^(\\d*)(\\.\\.(\\d*))?$/', $v, $match);
+      @list($x, $a, $dots, $b) = $match;
+      $upat = ($k[0] == 'p') ? ".*?(\n\\s*\n|$)" : "[^\n]*(?:\n|$)";
+      if (!$dots) { $b=$a; $a=0; }
+      if ($a>0) $a--;
+      $itext=preg_replace("/^(($upat){0,$b}).*$/s",'$1',$itext,1);
+      $itext=preg_replace("/^($upat){0,$a}/s",'',$itext,1);
+      continue;
+    }
+  }
+  $basepage = isset($args['basepage']) 
+              ? MakePageName($pagename, $args['basepage'])
+              : @$iname;
+  if ($basepage) $itext = Qualify(@$basepage, @$itext);
+  if (@$itext) @$IncludedPages[$iname]++;
+  return FmtTemplateVars(PVSE(@$itext), $args);
+}
+
+
+function RedirectMarkup($pagename, $opt) {
+  $k = Keep("(:redirect $opt:)");
+  global $MarkupFrame, $EnableRedirectQuiet;
+  if (!@$MarkupFrame[0]['redirect']) return $k;
+  $opt = ParseArgs($opt);
+  $to = @$opt['to']; if (!$to) $to = @$opt[''][0];
+  if (!$to) return $k;
+  if (preg_match('/^([^#]+)(#[A-Za-z][-\\w]*)$/', $to, $match)) 
+    { $to = $match[1]; $anchor = @$match[2]; }
+  $to = MakePageName($pagename, $to);
+  if (!PageExists($to)) return $k;
+  if ($to == $pagename) return '';
+  if (@$opt['from'] 
+      && !MatchPageNames($pagename, FixGlob($opt['from'], '$1*.$2')))
+    return '';
+  if (preg_match('/^30[1237]$/', @$opt['status'])) 
+     header("HTTP/1.1 {$opt['status']}");
+  Redirect($to, "{\$PageUrl}"
+    . (IsEnabled($EnableRedirectQuiet, 0) && IsEnabled($opt['quiet'], 0)
+      ? '' : "?from=$pagename")
+    . $anchor);
+  exit();
+}
+   
+
+function Block($b) {
+  global $BlockMarkups,$HTMLVSpace,$HTMLPNewline,$MarkupFrame;
+  $mf = &$MarkupFrame[0]; $cs = &$mf['cs']; $vspaces = &$mf['vs'];
+  $out = '';
+  if ($b == 'vspace') {
+    $vspaces .= "\n";
+    while (count($cs)>0 && @end($cs)!='pre' && @$BlockMarkups[@end($cs)][3]==0) 
+      { $c = array_pop($cs); $out .= $BlockMarkups[$c][2]; }
+    return $out;
+  }
+  @list($code, $depth, $icol) = explode(',', $b);
+  if (!$code) $depth = 1;
+  if (!is_numeric($depth)) $depth = @$depth? strlen($depth) : 0; # PHP8.1
+  if (!is_numeric($icol)) $icol = @$icol? strlen($icol) : 0; # PHP8.1
+  if ($depth > 0) $depth += @$mf['idep'];
+  if ($icol > 0) $mf['is'][$depth] = $icol + @$mf['icol'];
+  @$mf['idep'] = @$mf['icol'] = 0;
+  while (count($cs)>$depth) 
+    { $c = array_pop($cs); $out .= @$BlockMarkups[$c][2]; }
+  if (!$code) {
+    if (@end($cs) == 'p') { $out .= $HTMLPNewline; $code = 'p'; }
+    else if ($depth < 2) { $code = 'p'; $mf['is'][$depth] = 0; }
+    else { $out .= $HTMLPNewline; $code = 'block'; }
+  }
+  if ($depth>0 && $depth==count($cs) && $cs[$depth-1]!=$code)
+    { $c = array_pop($cs); $out .= $BlockMarkups[$c][2]; }
+  while (count($cs)>0 && @end($cs)!=$code &&
+      @$BlockMarkups[@end($cs)][3]==0)
+    { $c = array_pop($cs); $out .= $BlockMarkups[$c][2]; }
+  if ($vspaces) { 
+    $out .= (@end($cs) == 'pre') ? $vspaces : $HTMLVSpace; 
+    $vspaces=''; 
+  }
+  if ($depth==0) { return $out; }
+  if ($depth==count($cs)) { return $out.$BlockMarkups[$code][1]; }
+  while (count($cs)<$depth-1) { 
+    array_push($cs, 'dl'); $mf['is'][count($cs)] = 0;
+    $out .= $BlockMarkups['dl'][0].'<dd>'; 
+  }
+  if (count($cs)<$depth) {
+    array_push($cs,$code);
+    $out .= $BlockMarkups[$code][0];
+  }
+  return $out;
+}
+
+
+function MarkupClose($key = '') {
+  global $MarkupFrame;
+  $cf = & $MarkupFrame[0]['closeall'];
+  $out = '';
+  if ($key == '' || isset($cf[$key])) {
+    $k = array_keys((array)$cf);
+    while ($k) { 
+      $x = array_pop($k); $out .= $cf[$x]; unset($cf[$x]);
+      if ($x == $key) break;
+    }
+  }
+  return $out;
+}
+
+
+function FormatTableRow($x, $sep = '\\|\\|') {
+  global $TableCellAttrFmt, $TableCellAlignFmt, $TableRowAttrFmt,
+    $TableRowIndexMax, $MarkupFrame, $FmtV, $EnableSimpleTableRowspan;
+  static $rowcount;
+  SDV($TableCellAlignFmt, " align='%s'");
+
+  if (IsEnabled($EnableSimpleTableRowspan, 0)) {
+    $x = preg_replace("/\\|\\|__+(?=\\|\\|)/", '||', $x);
+    $x = preg_replace("/\\|\\|\\^\\^+(?=\\|\\|)/", '', $x);
+  }
+  $x = preg_replace("/$sep\\s*$/",'',$x);
+  $td = preg_split("/$sep/", $x); $y = '';
+  for($i=0;$i<count($td);$i++) {
+    if ($td[$i]=='') continue;
+    $FmtV['$TableCellCount'] = $i;
+    $attr = FmtPageName(@$TableCellAttrFmt, '');
+    if (IsEnabled($EnableSimpleTableRowspan, 0)) {
+      if (preg_match('/(\\+\\++)\\s*$/', $td[$i], $rspn)) {
+        $td[$i] = preg_replace('/\\+\\++(\\s*)$/', '$1', $td[$i]);
+        $attr .= " rowspan='".strlen($rspn[1])."'";
+      }
+    }
+    $td[$i] = preg_replace('/^(!?)\\s+$/', '$1&nbsp;', $td[$i]);
+    if (preg_match('/^!(.*?)!$/',$td[$i],$match))
+      { $td[$i]=$match[1]; $t='caption'; $attr=''; }
+    elseif (preg_match('/^!(.*)$/',$td[$i],$match)) 
+      { $td[$i]=$match[1]; $t='th'; }
+    else $t='td';
+    if (preg_match('/^\\s.*\\s$/',$td[$i])) {
+      if ($t!='caption') $attr .= sprintf($TableCellAlignFmt, 'center');
+    }
+    elseif (preg_match('/^\\s/',$td[$i])) { $attr .= sprintf($TableCellAlignFmt, 'right'); }
+    elseif (preg_match('/\\s$/',$td[$i])) { $attr .= sprintf($TableCellAlignFmt, 'left'); }
+    for ($colspan=1;$i+$colspan<count($td);$colspan++) 
+      if ($td[$colspan+$i]!='') break;
+    if ($colspan>1) { $attr .= " colspan='$colspan'"; }
+    $y .= "<$t $attr>".trim($td[$i])."</$t>";
+  }
+  if ($t=='caption') return "<:table,1>$y";
+  if (@$MarkupFrame[0]['cs'][0] != 'table') $rowcount = 0; else $rowcount++;
+  $FmtV['$TableRowCount'] = $rowcount + 1;
+  $FmtV['$TableRowIndex'] = ($rowcount % $TableRowIndexMax) + 1;
+  $trattr = FmtPageName(@$TableRowAttrFmt, '');
+  return "<:table,1><tr $trattr>$y</tr>";
+}
+
+function LinkIMap($pagename,$imap,$path,$alt,$txt,$fmt=NULL) {
+  global $FmtV, $IMap, $IMapLinkFmt, $UrlLinkFmt, $IMapLocalPath, $ScriptUrl, $AddLinkCSS;
+  SDVA($IMapLocalPath, array('Path:'=>1));
+  if (@$IMapLocalPath[$imap]) {
+    $path = preg_replace('/^(\\w+):/', "$1%3a", $path); # PITS:01260
+  }
+  $FmtV['$LinkUrl'] = PUE(str_replace('$1',$path,$IMap[$imap]));
+  $FmtV['$LinkText'] = $txt;
+  if (@$alt) $FmtV['$LinkAlt'] = Keep(str_replace(array('"',"'"),array('&#34;','&#39;'),$alt));
+  else $FmtV['$LinkAlt'] = '';
+  if (!$fmt) 
+    $fmt = (isset($IMapLinkFmt[$imap])) ? $IMapLinkFmt[$imap] : $UrlLinkFmt;
+  if (IsEnabled($AddLinkCSS['samedomain'])) {
+    $parsed_url = parse_url($FmtV['$LinkUrl']);
+    $parsed_wiki = parse_url($ScriptUrl);
+    if (! @$parsed_url['host'] || $parsed_url['host'] == $parsed_wiki['host']) {
+      $fmt = preg_replace('/(<a[^>]*class=["\'])/', "$1{$AddLinkCSS['samedomain']} ", $fmt);
+    }
+  }
+  # remove unused title attributes
+  if (!$alt) $fmt = preg_replace('/\\stitle=([\'"])\\$LinkAlt\\1/', '', $fmt);
+  return str_replace(array_keys($FmtV),array_values($FmtV),$fmt);
+}
+
+## These 2 functions hide e-mail addresses from spam bot harvesters
+## recover them for most users with a javascript utility,
+## while keeping them readable for users with JS disabled.
+## Based on Cookbook:DeObMail by Petko Yotov
+## To enable, set $LinkFunctions['mailto:'] = 'ObfuscateLinkIMap';
+function ObfuscateLinkIMap($pagename,$imap,$path,$title,$txt,$fmt=NULL) {
+  global $FmtV, $IMap, $IMapLinkFmt;
+  SDVA($IMapLinkFmt, array('obfuscate-mailto:' =>
+    "<span class='_pmXmail' title=\"\$LinkAlt\"><span class='_t'>\$LinkText</span><span class='_m'>\$LinkUrl</span></span>"));
+  $FmtV['$LinkUrl'] = cb_obfuscate_mail(str_replace('$1',$path,$IMap[$imap]));
+  $FmtV['$LinkText'] = cb_obfuscate_mail(preg_replace('/^mailto:/i', '', $txt));
+  if ($FmtV['$LinkText'] == preg_replace('/^mailto:/i', '', $FmtV['$LinkUrl'])) $FmtV['$LinkUrl'] = '';
+  else $FmtV['$LinkUrl'] = " -&gt; ".$FmtV['$LinkUrl'];
+  $FmtV['$LinkAlt'] = str_replace(array('"',"'"),array('&#34;','&#39;'),cb_obfuscate_mail($title, 0));
+  return str_replace(array_keys($FmtV),array_values($FmtV), $IMapLinkFmt['obfuscate-mailto:']);
+}
+
+function cb_obfuscate_mail($x, $wrap=1) {
+  $classes = array('.' => '_d', '@' => '_a');
+  $texts = array( '.' => XL(' [period] '), '@' => XL(' [snail] '));
+  foreach($classes as $k=>$v)
+    $x = preg_replace("/(\\w)".preg_quote($k)."(\\w)/",
+    ($wrap?
+      "$1<span class='$v'>{$texts[$k]}</span>$2"
+      : "$1{$texts[$k]}$2")
+      , $x);
+  return $x;
+}
+
+function LinkPage($pagename,$imap,$path,$alt,$txt,$fmt=NULL) {
+  global $QueryFragPattern, $LinkPageExistsFmt, $LinkPageSelfFmt,
+    $LinkPageCreateSpaceFmt, $LinkPageCreateFmt, $LinkTargets,
+    $EnableLinkPageRelative, $EnableLinkPlusTitlespaced, $AddLinkCSS,
+    $CategoryGroup, $LinkCategoryFmt;
+  if ($alt) $alt = str_replace(array('"',"'"),array('&#34;','&#39;'),$alt);
+  $path = preg_replace('/(#[-.:\\w]*)#.*$/', '$1', strval($path)); # PITS:01388
+  if (is_array($txt)) { # PITS:01392
+    $suffix = $txt[1];
+    $txt = $txt[0];
+  }
+  if (!$fmt && @$path[0] == '#') {
+    $path = preg_replace("/[^-.:\\w]/", '', $path);
+    if (trim($txt) == '+') $txt = PageVar($pagename, '$Title') . @$suffix;
+    if ($alt) $alt = " title='$alt'";
+    return ($path) ? "<a href='#$path'$alt>".str_replace("$", "&#036;", $txt)."</a>" : '';
+  }
+  if (preg_match('/^\\s*!/', $path)) {
+    $is_cat = true;
+    $path = preg_replace('/^\\s*!/', "$CategoryGroup/", $path);
+    $txt = preg_replace('/^\\s*!/', '', $txt);
+  }
+  if (!preg_match("/^\\s*([^#?]+)($QueryFragPattern)?$/",$path,$match))
+    return '';
+  $tgtname = MakePageName($pagename, $match[1]); 
+  if (!$tgtname) return '';
+  $qf = @$match[2]? $match[2] : '';
+  @$LinkTargets[$tgtname]++;
+  if (@$is_cat) {
+    $fmt = $LinkCategoryFmt;
+    $c = preg_replace('/^.*\\./', '!', $tgtname);
+    @$LinkTargets[$c]++;
+  }
+  if (!$fmt) {
+    if (!PageExists($tgtname) && !preg_match('/[&?]action=/', $qf))
+      $fmt = preg_match('/\\s/', $txt) 
+             ? $LinkPageCreateSpaceFmt : $LinkPageCreateFmt;
+    else
+      $fmt = ($tgtname == $pagename && $qf == '') 
+             ? $LinkPageSelfFmt : $LinkPageExistsFmt;
+  }
+  $url = PageVar($tgtname, '$PageUrl');
+  if (trim($txt) == '+') $txt = PageVar($tgtname, 
+    IsEnabled($EnableLinkPlusTitlespaced, 0) ? '$Titlespaced' : '$Title') . @$suffix;
+  $txt = str_replace("$", "&#036;", $txt);
+  if (@$EnableLinkPageRelative)
+    $url = preg_replace('!^[a-z]+://[^/]*!i', '', $url);
+  # remove unused title attributes
+  if (!$alt) $fmt = preg_replace('/\\stitle=([\'"])\\$LinkAlt\\1/', '', $fmt);
+  $fmt = str_replace(array('$LinkUrl', '$LinkText', '$LinkAlt'),
+                     array($url.PUE($qf), $txt, Keep($alt)), $fmt);
+  if (IsEnabled($AddLinkCSS['othergroup'])) {
+    list($cgroup, ) = explode('.', $pagename);
+    list($tgroup, ) = explode('.', $tgtname);
+    if ($cgroup != $tgroup) 
+      $fmt = preg_replace('/(<a[^>]*class=["\'])/', "$1{$AddLinkCSS['othergroup']} ", $fmt);
+  }
+  return FmtPageName($fmt,$tgtname);
+}
+
+function MakeLink($pagename,$tgt,$txt=NULL,$suffix=NULL,$fmt=NULL) {
+  global $LinkPattern,$LinkFunctions,$UrlExcludeChars,$ImgExtPattern,$ImgTagFmt,
+    $LinkTitleFunction;
+  if (preg_match("/^(.*)(?:\"(.*)\")\\s*$/",$tgt,$x)) list(,$tgt,$title) = $x;
+  $t = preg_replace('/[()]/','',trim($tgt));
+  $t = preg_replace('/<[^>]*>/','',$t);
+  $t = trim(MarkupRestore($t));
+  $txtr = trim(MarkupRestore(strval($txt)));
+  
+  preg_match("/^($LinkPattern)?(.+)$/",$t,$m);
+  if (!@$m[1]) $m[1]='<:page>';
+  if (preg_match("/(($LinkPattern)([^$UrlExcludeChars]+$ImgExtPattern))(\"(.*)\")?$/",$txtr,$tm)) 
+    $txt = $LinkFunctions[$tm[2]]($pagename,$tm[2],$tm[3],@$tm[5],
+      $tm[1],$ImgTagFmt);
+  else {
+    if (is_null($txt)) {
+      $txt = preg_replace('/\\([^)]*\\)/','',$tgt);
+      if ($m[1]=='<:page>') {
+        $txt = preg_replace('!/\\s*$!', '', $txt);
+        $txt = preg_replace('!^.*[^<]/!', '', $txt);
+      }
+    }
+    if ($m[1]=='<:page>' && trim($txt) == '+' && $suffix>'') { # PITS:01392
+      $txt = array(trim($txt), $suffix);
+    }
+    else $txt .= $suffix;
+  }
+  if (@$LinkTitleFunction) $title = $LinkTitleFunction($pagename,$m,$txt);
+  else $title = PHSC(MarkupRestore(@$title), ENT_QUOTES);
+  $out = $LinkFunctions[$m[1]]($pagename,$m[1],@$m[2],@$title,$txt,$fmt);
+  return preg_replace('/(<[^>]+)\\stitle=(""|\'\')/', '$1', $out);
+}
+
+function Markup($id, $when, $pat=NULL, $rep=NULL) {
+  global $MarkupTable, $EnableMarkupDiag, $ObsoleteMarkups;
+  unset($GLOBALS['MarkupRules']);
+  if (preg_match('/^([<>])?(.+)$/', $when, $m)) {
+    $MarkupTable[$id]['cmd'] = $when;
+    $MarkupTable[$m[2]]['dep'][$id] = $m[1];
+    if (!$m[1]) $m[1] = '=';
+    if (@$MarkupTable[$m[2]]['seq']) {
+      $MarkupTable[$id]['seq'] = $MarkupTable[$m[2]]['seq'].$m[1];
+      foreach((array)@$MarkupTable[$id]['dep'] as $i=>$m)
+        Markup($i,"$m$id");
+      unset($GLOBALS['MarkupTable'][$id]['dep']);
+    }
+  }
+  if ($pat && !isset($MarkupTable[$id]['pat'])) {
+    $oldpat = preg_match('!(^/.+/[^/]*)e([^/]*)$!', $pat, $mm);
+    if ($oldpat && PHP_VERSION_ID >= 50500) {
+      # disable old markup for recent PHP versions
+      $trace = TraceMarkup($id, true);
+      $rep = 'ObsoleteMarkup';
+      $pat = $mm[1].$mm[2];
+    }    
+    $MarkupTable[$id]['pat'] = $pat;
+    $MarkupTable[$id]['rep'] = $rep;
+    
+    if (IsEnabled($EnableMarkupDiag, 0) || isset($ObsoleteMarkups[$id])) {
+      $MarkupTable[$id]['dbg'] = isset($ObsoleteMarkups[$id])
+        ? $ObsoleteMarkups[$id]
+        : TraceMarkup($id, false);
+    }
+  }
+}
+
+function Markup_e($id, $when, $pat, $rep, $template = 'markup_e') {
+  if (!is_callable($rep)) {
+    if (PHP_VERSION_ID < 70200 || isset($GLOBALS['PCCFOverrideFunction']))
+      $rep = PCCF($rep, $template);
+    else {
+      TraceMarkup($id, true);
+      $rep = 'ObsoleteMarkup';
+    }
+  }
+  Markup($id, $when, $pat, $rep, 1);
+}
+
+function TraceMarkup($id, $obsolete = false) {
+  global $ObsoleteMarkups;
+  $trace = debug_backtrace();
+  foreach($trace as $t) {
+    if (! preg_match('/^Markup(_e)?$/i', $t['function'])) continue;
+    if ($t['args'][0] !== $id) continue;
+    $excl = $obsolete? "!" : " ";
+    $msg = "$excl File: {$t['file']}, line: {$t['line']}"
+      . ", pat: {$t['args'][2]}, rep: {$t['args'][3]}.";
+    if ($obsolete) $ObsoleteMarkups[$id] = $msg;
+    return $msg;
+  }
+}
+
+function ObsoleteMarkup($m) {
+  extract($GLOBALS['MarkupToHTML']);
+  global $ObsoleteMarkups;
+  $id = PHSC($markupid, ENT_QUOTES, null, false);
+  $txt = PHSC($m[0], ENT_QUOTES, null, false);
+  if (isset($ObsoleteMarkups[$markupid])) {
+    $dbg = PHSC($ObsoleteMarkups[$markupid], ENT_QUOTES, null, false);
+  }
+  else $dbg = '';
+  return Keep("<code title='Markup rule &quot;$id&quot; is obsolete and has been disabled. $dbg See pmwiki.org/Troubleshooting' 
+    class='obsolete-markup frame'>&#9888; $txt</code>");
+}
+
+function DisableMarkup() {
+  global $MarkupTable;
+  $idlist = func_get_args();
+  unset($GLOBALS['MarkupRules']);
+  while (count($idlist)>0) {
+    $id = array_shift($idlist);
+    if (is_array($id)) { $idlist = array_merge($idlist, $id); continue; }
+    $MarkupTable[$id] = array('cmd' => 'none', 'pat'=>'');
+  }
+}
+
+function mpcmp($a,$b) { return @strcmp($a['seq'].'=',$b['seq'].'='); }
+function BuildMarkupRules() {
+  global $MarkupTable,$MarkupRules,$LinkPattern;
+  if (!$MarkupRules) {
+    uasort($MarkupTable,'mpcmp');
+    foreach($MarkupTable as $id=>$m) 
+      if (@$m['pat'] && @$m['seq']) {
+        $MarkupRules[str_replace('\\L',strval(@$LinkPattern),$m['pat'])]
+          = array($m['rep'], $id);
+      }
+  }
+  return $MarkupRules;
+}
+
+
+function MarkupToHTML($pagename, $text, $opt = NULL) {
+  # convert wiki markup text to HTML output
+  global $MarkupRules, $MarkupFrame, $MarkupFrameBase, $WikiWordCount,
+    $K0, $K1, $RedoMarkupLine, $MarkupToHTML;
+  $MarkupToHTML['pagename'] = $pagename;
+
+  StopWatch('MarkupToHTML begin');
+  array_unshift($MarkupFrame, array_merge($MarkupFrameBase, (array)$opt));
+  $MarkupFrame[0]['wwcount'] = $WikiWordCount;
+  foreach((array)$text as $l) 
+    $lines[] = $MarkupFrame[0]['escape'] ? PVSE($l) : $l;
+  $lines[] = '(:closeall:)';
+  $out = '';
+  while (count($lines)>0) {
+    $x = array_shift($lines);
+    $RedoMarkupLine=0;
+    $markrules = BuildMarkupRules();
+    foreach($markrules as $p=>$r) {
+      list($r, $id) = (array)$r;
+      $MarkupToHTML['markupid'] = $id;
+      if ($p[0] == '/') {
+        if (is_callable($r)) $x = preg_replace_callback($p,$r,$x);
+        else $x=preg_replace($p,$r,$x); # simple text OR called by old addon|skin|recipe needing update, see pmwiki.org/Troubleshooting
+      }
+      elseif (strstr($x,$p)!==false) $x=eval($r);
+      if (isset($php_errormsg)) ### TODO: $php_errormsg removed since PHP 8
+        { echo "ERROR: pat=$p $php_errormsg"; unset($php_errormsg); }
+      if ($RedoMarkupLine) { $lines=array_merge((array)$x,$lines); continue 2; }
+    }
+    if ($x>'') $out .= "$x\n";
+  }
+  foreach((array)(@$MarkupFrame[0]['posteval']) as $v) eval($v);
+  array_shift($MarkupFrame);
+  StopWatch('MarkupToHTML end');
+  return $out;
+}
+   
+function HandleBrowse($pagename, $auth = 'read') {
+  # handle display of a page
+  global $DefaultPageTextFmt, $PageNotFoundHeaderFmt, $HTTPHeaders,
+    $EnableHTMLCache, $NoHTMLCache, $PageCacheFile, $LastModTime, $IsHTMLCached,
+    $FmtV, $HandleBrowseFmt, $PageStartFmt, $PageEndFmt, $PageRedirectFmt;
+  $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
+  if (!$page) Abort("?cannot read $pagename");
+  PCache($pagename,$page);
+  if (PageExists($pagename)) $text = $FmtV['$PageSourceText'] = @$page['text'];
+  else {
+    SDV($DefaultPageTextFmt,'(:include $[{$SiteGroup}.PageNotFound]:)');
+    $text = FmtPageName($DefaultPageTextFmt, $pagename);
+    SDV($PageNotFoundHeaderFmt, 'HTTP/1.1 404 Not Found');
+    SDV($HTTPHeaders['status'], $PageNotFoundHeaderFmt);
+  }
+  $opt = array();
+  SDV($PageRedirectFmt,"<p><i>($[redirected from] <a rel='nofollow' 
+    href='{\$PageUrl}?action=edit'>{\$FullName}</a>)</i></p>\n");
+  if (@!$_GET['from']) { $opt['redirect'] = 1; $PageRedirectFmt = ''; }
+  else {
+    $frompage = MakePageName($pagename, $_GET['from']);
+    $PageRedirectFmt = (!$frompage) ? ''
+      : FmtPageName($PageRedirectFmt, $frompage);
+  }
+  if (@$EnableHTMLCache && !$NoHTMLCache && $PageCacheFile && 
+      @filemtime($PageCacheFile) > $LastModTime) {
+    list($ctext) = unserialize(file_get_contents($PageCacheFile));
+    $FmtV['$PageText'] = "<!--cached-->$ctext";
+    $IsHTMLCached = 1;
+    StopWatch("HandleBrowse: using cached copy");
+  } else {
+    $IsHTMLCached = 0;
+    $text = '(:groupheader:)'.@$text.'(:groupfooter:)';
+    $t1 = time();
+    $FmtV['$PageText'] = MarkupToHTML($pagename, $text, $opt);
+    if (@$EnableHTMLCache > 0 && !$NoHTMLCache && $PageCacheFile
+        && (time() - $t1 + 1) >= $EnableHTMLCache) {
+      $fp = @fopen("$PageCacheFile,new", "x");
+      if ($fp) { 
+        StopWatch("HandleBrowse: caching page");
+        fwrite($fp, serialize(array($FmtV['$PageText']))); fclose($fp);
+        rename("$PageCacheFile,new", $PageCacheFile);
+      }
+    }
+  }
+  SDV($HandleBrowseFmt,array(&$PageStartFmt, &$PageRedirectFmt, '$PageText',
+    &$PageEndFmt));
+  PrintFmt($pagename,$HandleBrowseFmt);
+}
+
+
+## UpdatePage goes through all of the steps needed to update a page,
+## preserving page history, computing link targets, page titles, 
+## and other page attributes.  It does this by calling each entry
+## in $EditFunctions.  $pagename is the name of the page to be updated,
+## $page is the old version of the page (used for page history),
+## $new is the new version of the page to be saved, and $fnlist is
+## an optional list of functions to use instead of $EditFunctions.
+function UpdatePage(&$pagename, &$page, &$new, $fnlist = NULL) {
+  global $EditFunctions, $IsPagePosted;
+  StopWatch("UpdatePage: begin $pagename");
+  if (is_null($fnlist)) $fnlist = $EditFunctions;
+  $IsPagePosted = false;
+  foreach((array)$fnlist as $fn) {
+    StopWatch("UpdatePage: $fn ($pagename)");
+    $fn($pagename, $page, $new);
+  }
+  StopWatch("UpdatePage: end $pagename");
+  return $IsPagePosted;
+}
+
+# AutoCheckToken verifies if the posted content was sent
+# from the website forms, to prevent CSRF
+function AutoCheckToken() {
+  # TODO: Work in progress (Jan 2021), releasing for 
+  return true;
+    
+  global $EnablePost, $AutoCheckTokenActions, $EnablePmToken, 
+    $FmtV, $action, $BlockMessageFmt, $MessagesFmt;
+  
+  # a quick way to disable tokens
+  if (! IsEnabled($EnablePmToken, 1)) return true; 
+  
+  SDVA($AutoCheckTokenActions, array( # 1=POST, 2=GET, 0=disabled
+    'edit' => 1, 
+    'postattr' => 1,
+    'postupload' => 1,
+    'approvesites' => 2,
+    'approveurls' => 2,
+  ));
+  $tname = $FmtV['$TokenName'];
+  $x = @$AutoCheckTokenActions[$action];
+  if (!$x) return true;
+  elseif ($x==1) {
+    if ( count($_POST) < 1 || pmtoken(''.@$_POST[$tname]) ) return true;
+  }
+  elseif ($x==2 && pmtoken(''.@$_GET[$tname])) return true;
+  
+  $EnablePost = 0;
+  $MessagesFmt[] = $BlockMessageFmt;
+  $MessagesFmt[] = XL('Token invalid or missing.');
+  return false;
+}
+
+# EditTemplate allows a site administrator to pre-populate new pages
+# with the contents of another page.
+function EditTemplate($pagename, &$page, &$new) {
+  global $EditTemplatesFmt;
+  if (@$new['text'] > '') return;
+  if (@$_REQUEST['template'] && PageExists($_REQUEST['template'])) {
+    $p = RetrieveAuthPage($_REQUEST['template'], 'read', false,
+             READPAGE_CURRENT);
+    if ($p['text'] > '') $new['text'] = $p['text']; 
+    return;
+  }
+  foreach((array)$EditTemplatesFmt as $t) {
+    $p = RetrieveAuthPage(FmtPageName($t,$pagename), 'read', false,
+             READPAGE_CURRENT);
+    if (@$p['text'] > '') { $new['text'] = $p['text']; return; }
+  }
+}
+
+# RestorePage handles returning to the version of text as of
+# the version given by $restore or $_REQUEST['restore'].
+function RestorePage($pagename,&$page,&$new,$restore=NULL) {
+  if (is_null($restore)) $restore=@$_REQUEST['restore'];
+  if (!$restore) return;
+  $t = $page['text'];
+  $nl = (substr($t,-1)=="\n");
+  $t = explode("\n",$t);
+  if ($nl) array_pop($t);
+  krsort($page); reset($page);
+  foreach($page as $k=>$v) {
+    if ($k<$restore) break;
+    if (strncmp($k, 'diff:', 5) != 0) continue;
+    foreach(explode("\n",$v) as $x) {
+      if (preg_match('/^(\\d+)(,(\\d+))?([adc])(\\d+)/',$x,$match)) {
+        $a1 = $a2 = $match[1];
+        if ($match[3]) $a2=$match[3];
+        $b1 = $match[5];
+        if ($match[4]=='d') array_splice($t,$b1,$a2-$a1+1);
+        if ($match[4]=='c') array_splice($t,$b1-1,$a2-$a1+1);
+        continue;
+      }
+      if (strncmp($x,'< ',2) == 0) { $nlflag=true; continue; }
+      if (preg_match('/^> (.*)$/',$x,$match)) {
+        $nlflag=false;
+        array_splice($t,$b1-1,0,$match[1]); $b1++;
+      }
+      if ($x=='\\ No newline at end of file') $nl=$nlflag;
+    }
+  }
+  if ($nl) $t[]='';
+  $new['text']=implode("\n",$t);
+  $new['=preview'] = $new['text'];
+  PCache($pagename, $new);
+  return $new['text'];
+}
+
+## ReplaceOnSave performs text replacements on the text being posted.
+## Patterns held in $ROEPatterns are replaced on every edit request,
+## patterns held in $ROSPatterns are replaced only when the page
+## is being posted (as signaled by $EnablePost).
+function ReplaceOnSave($pagename,&$page,&$new) {
+  global $EnablePost, $ROSPatterns, $ROEPatterns;
+  $new['text'] = ProcessROESPatterns(@$new['text'], $ROEPatterns);
+  if ($EnablePost) {
+    $new['text'] = ProcessROESPatterns($new['text'], $ROSPatterns);
+  }
+  $new['=preview'] = $new['text'];
+  PCache($pagename, $new);
+}
+function ProcessROESPatterns($text, $patterns) {
+  global $EnableROSEscape;
+  if (IsEnabled($EnableROSEscape, 0)) $text = MarkupEscape($text);
+  $text = PPRA((array)@$patterns, $text);
+  if (IsEnabled($EnableROSEscape, 0)) $text = MarkupRestore($text);
+  return $text;
+}
+
+function SaveAttributes($pagename,&$page,&$new) {
+  global $EnablePost, $LinkTargets, $SaveAttrPatterns, $PCache,
+    $SaveProperties;
+  if (!$EnablePost) return;
+  $text = PPRA($SaveAttrPatterns, $new['text']);
+  $LinkTargets = array();
+  $new['=html'] = MarkupToHTML($pagename,$text);
+  $new['targets'] = implode(',',array_keys((array)$LinkTargets));
+  $p = & $PCache[$pagename];
+  foreach((array)$SaveProperties as $k) {
+    if (@$p["=p_$k"]) $new[$k] = $p["=p_$k"];
+    else unset($new[$k]);
+  }
+  unset($new['excerpt']);
+}
+
+function PostPage($pagename, &$page, &$new) {
+  global $DiffKeepDays, $DiffFunction, $DeleteKeyPattern, $EnablePost,
+    $Now, $Charset, $Author, $WikiDir, $IsPagePosted, $DiffKeepNum;
+  SDV($DiffKeepDays,3650);
+  SDV($DiffKeepNum,20);
+  SDV($DeleteKeyPattern,"^\\s*delete\\s*$");
+  $IsPagePosted = false;
+  if (!$EnablePost) return;
+  if (preg_match("/$DeleteKeyPattern/",$new['text'])) {
+    if (@$new['passwdattr']>'' && !CondAuth($pagename, 'attr'))
+      Abort('$[The page has an "attr" attribute and cannot be deleted.]');
+    else  $WikiDir->delete($pagename);
+    $IsPagePosted = true;
+    return;
+  }
+  $new['charset'] = $Charset; # kept for now, may be needed if custom PageStore
+  $new['author'] = @$Author;
+  $new["author:$Now"] = @$Author;
+  $new["host:$Now"] = strval(@$_SERVER['REMOTE_ADDR']);
+  $diffclass = preg_replace('/\\W/','',strval(@$_POST['diffclass']));
+  if ($page['time']>0 && function_exists(@$DiffFunction)) 
+    $new["diff:$Now:{$page['time']}:$diffclass"] =
+      $DiffFunction($new['text'],@$page['text']);
+  $keepgmt = $Now-$DiffKeepDays * 86400;
+  $keepnum = array(); 
+  $keys = array_keys($new);
+  foreach($keys as $k)
+    if (preg_match("/^\\w+:(\\d+)/",$k,$match)) {
+      $keepnum[$match[1]] = 1;
+      if (count($keepnum)>$DiffKeepNum && $match[1]<$keepgmt) 
+        unset($new[$k]);
+    }
+  WritePage($pagename,$new);
+  $IsPagePosted = true;
+}
+
+function PostRecentChanges($pagename,$page,$new,$Fmt=null) {
+  global $IsPagePosted, $RecentChangesFmt, $RCDelimPattern, $RCLinesMax,
+    $EnableRCDiffBytes, $Now, $EnableLocalTimes;
+  if (!$IsPagePosted && $Fmt==null) return;
+  if (is_null($Fmt)) $Fmt = $RecentChangesFmt;
+  foreach($Fmt as $rcfmt=>$pgfmt) {
+    $rcname = FmtPageName($rcfmt,$pagename);  if (!$rcname) continue;
+    $pgtext = FmtPageName($pgfmt,$pagename);  if (!$pgtext) continue;
+    if (@$seen[$rcname]++) continue;
+
+    if (IsEnabled($EnableRCDiffBytes, 0)) {
+      $pgtext = PPRA(array(
+        '/\\(([+-])(\\d+)\\)(\\s*=\\]\\s*)$/'=>'$3%diffmarkup%{$1($1$2)$1}%%', 
+        '/\\(\\+(0\\)\\+\\}%%)$/'=>'(&#177;$1'), $pgtext);
+    }
+    $rcpage = ReadPage($rcname);
+    $rcelim = preg_quote(preg_replace("/$RCDelimPattern.*$/",' ',$pgtext),'/');
+    $rcpage['text'] = preg_replace("/^.*$rcelim.*\n/m", '', @$rcpage['text']);
+    if (!preg_match("/$RCDelimPattern/",$rcpage['text'])) 
+      $rcpage['text'] .= "$pgtext\n";
+    else
+      $rcpage['text'] = preg_replace("/([^\n]*$RCDelimPattern.*\n)/",
+        str_replace("$", "\\$", $pgtext) . "\n$1", $rcpage['text'], 1);
+    if (@$RCLinesMax > 0) 
+      $rcpage['text'] = implode("\n", array_slice(
+          explode("\n", $rcpage['text'], $RCLinesMax + 1), 0, $RCLinesMax));
+    WritePage($rcname, $rcpage);
+  }
+}
+
+function AutoCreateTargets($pagename, &$page, &$new) {
+  global $IsPagePosted, $AutoCreate, $LinkTargets;
+  if (!$IsPagePosted) return;
+  foreach((array)@$AutoCreate as $pat => $init) {
+    if (is_null($init)) continue;
+    foreach(preg_grep($pat, array_keys((array)@$LinkTargets)) as $aname) {
+      if (PageExists($aname)) continue;
+      $x = RetrieveAuthPage($aname, 'edit', false, READPAGE_CURRENT);
+      if (!$x) continue;
+      WritePage($aname, $init);
+    }
+  }
+}
+
+function PreviewPage($pagename,&$page,&$new) {
+  global $IsPageSaved, $FmtV, $ROSPatterns, $PCache, 
+    $HTMLStylesFmt, $IncludedPages, $EnableListIncludedPages;
+  $text = ProcessROESPatterns($new['text'], $ROSPatterns);
+  $text = '(:groupheader:)'.$text.'(:groupfooter:)';
+  $IncludedPages = array();
+  $preview = MarkupToHTML($pagename,$text);
+  $incp = array_diff(array_keys($IncludedPages), array($pagename));
+  $cnt = count($incp);
+  if (IsEnabled($EnableListIncludedPages,0) && $cnt) {
+    $label = XL('Text or data included from other pages');
+    $edit = XL('Edit');
+    SDV($HTMLStylesFmt['inclpages'], 'details.inclpages {display: inline-block;}');
+    $out = "<br/><details class='inclpages'>"
+      . "<summary>($cnt) $label</summary><ul>\n";
+    sort($incp);
+    foreach($incp as $pn) {
+      $url = PageVar($pn, '$PageUrl');
+      $out .= "<li> <a class='wikilink' href='$url'>$pn</a> 
+        (<a class='wikilink' href='$url?action=edit'>$edit</a>)</li>\n";
+    }
+    $out .= "</ul></details>";
+    $FmtV['$IncludedPages'] = $out;
+  }
+  else $FmtV['$IncludedPages'] = '';
+  if (@$_REQUEST['preview']) {
+    $FmtV['$PreviewText'] = $preview;
+  }
+}
+
+function HandleEdit($pagename, $auth = 'edit') {
+  global $IsPagePosted, $EditFields, $ChangeSummary, $EditFunctions,
+    $EnablePost, $FmtV, $Now, $EditRedirectFmt, $EnableRCDiffBytes, 
+    $PageEditForm, $HandleEditFmt, $PageStartFmt, $PageEditFmt, $PageEndFmt;
+  SDV($EditRedirectFmt, '$FullName');
+  if (@$_POST['cancel']) 
+    { Redirect(FmtPageName($EditRedirectFmt, $pagename)); return; }
+  Lock(2);
+  $page = RetrieveAuthPage($pagename, $auth, true);
+  if (!$page) Abort("?cannot edit $pagename"); 
+  $new = $page;
+  foreach((array)$EditFields as $k) 
+    if (isset($_POST[$k])) $new[$k]=str_replace("\r",'',stripmagic($_POST[$k]));
+    
+  if (IsEnabled($EnableRCDiffBytes, 0) && isset($new['text'])) {
+    $bytes = strlen($new['text']) - strlen(strval(@$page['text']));
+    if ($bytes>=0) $bytes = "+$bytes";
+    $ChangeSummary = rtrim($ChangeSummary) . " ($bytes)";
+  }
+  $new['csum'] = $ChangeSummary;
+  if ($ChangeSummary) $new["csum:$Now"] = $ChangeSummary;
+  $EnablePost &= (bool)preg_grep('/^post/', array_keys(@$_POST));
+  $new['=preview'] = @$new['text'];
+  PCache($pagename, $new);
+  UpdatePage($pagename, $page, $new);
+  Lock(0);
+  if ($IsPagePosted && !@$_POST['postedit']) 
+    { Redirect(FmtPageName($EditRedirectFmt, $pagename)); return; }
+  $FmtV['$DiffClassMinor'] = 
+    (@$_POST['diffclass']=='minor') ?  "checked='checked'" : '';
+  $FmtV['$EditText'] = 
+    str_replace('$','&#036;',PHSC(@$new['text'],ENT_NOQUOTES));
+  $FmtV['$EditBaseTime'] = $Now;
+  $FmtV['$TokenValue'] = pmtoken();
+  if (@$PageEditForm) {
+    $efpage = FmtPageName($PageEditForm, $pagename);
+    $form = RetrieveAuthPage($efpage, 'read', false, READPAGE_CURRENT);
+    if (!$form || !@$form['text']) 
+      Abort("?unable to retrieve edit form $efpage", 'editform');
+    $FmtV['$EditForm'] = MarkupToHTML($pagename, $form['text']);
+  }
+  SDV($PageEditFmt, "<div id='wikiedit'>
+    <h2 class='wikiaction'>$[Editing {\$FullName}]</h2>
+    <form method='post' rel='nofollow' action='\$PageUrl?action=edit'>
+    <input type='hidden' name='action' value='edit' />
+    <input type='hidden' name='n' value='\$FullName' />
+    <input type='hidden' name='basetime' value='\$EditBaseTime' />
+    <input type='hidden' name='\$TokenName' value='\$TokenValue' />
+    \$EditMessageFmt
+    <textarea id='text' name='text' rows='25' cols='60'
+      >\$EditText</textarea><br />
+    <input type='submit' name='post' value=' $[Save] ' />");
+  SDV($HandleEditFmt, array(&$PageStartFmt, &$PageEditFmt, &$PageEndFmt));
+  PrintFmt($pagename, $HandleEditFmt);
+}
+
+function HandleSource($pagename, $auth = 'read') {
+  global $HTTPHeaders;
+  $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
+  if (!$page) Abort("?cannot source $pagename");
+  foreach ($HTTPHeaders as $h) {
+    $h = preg_replace('!^Content-type:\\s+text/html!i',
+             'Content-type: text/plain', $h);
+    header($h);
+  }
+  echo @$page['text'];
+}
+
+## PmWikiAuth provides password-protection of pages using PHP sessions.
+## It is normally called from RetrieveAuthPage.  Since RetrieveAuthPage
+## can be called a lot within a single page execution (i.e., for every
+## page accessed), we cache the results of site passwords and 
+## GroupAttribute pages to be able to speed up subsequent calls.
+function PmWikiAuth($pagename, $level, $authprompt=true, $since=0) {
+  global $DefaultPasswords, $GroupAttributesFmt, $AllowPassword,
+    $AuthCascade, $AuthId, $AuthList, $NoHTMLCache;
+  static $acache;
+  SDV($GroupAttributesFmt,'$Group/GroupAttributes');
+  SDV($AllowPassword,'nopass');
+  $page = ReadPage($pagename, $since);
+  if (!$page) { return false; }
+  if (!isset($acache)) 
+    SessionAuth($pagename, (@$_POST['authpw']) 
+                           ? array('authpw' => array($_POST['authpw'] => 1))
+                           : '');
+  if (@$AuthId) {
+    $AuthList["id:$AuthId"] = 1;
+    $AuthList["id:-$AuthId"] = -1;
+    $AuthList["id:*"] = 1;
+  }
+  ## To allow @_site_edit in GroupAttributes, we cache it first
+  if (!isset($acache['@site'])) {
+    foreach($DefaultPasswords as $k => $v) {
+      $x = array(2, array(), '');
+      $acache['@site'][$k] = IsAuthorized($v, 'site', $x);
+      $AuthList["@_site_$k"] = $acache['@site'][$k][0] ? 1 : 0;
+    }
+  }
+  $gn = FmtPageName($GroupAttributesFmt, $pagename);
+  if (!isset($acache[$gn])) {
+    $gp = ReadPage($gn, READPAGE_CURRENT);
+    foreach($DefaultPasswords as $k => $v) {
+      $acache[$gn][$k] = IsAuthorized(@$gp["passwd$k"], 'group',
+                                      $acache['@site'][$k]);
+    }
+  }
+  foreach($DefaultPasswords as $k => $v) 
+    list($page['=auth'][$k], $page['=passwd'][$k], $page['=pwsource'][$k]) =
+      IsAuthorized(@$page["passwd$k"], 'page', $acache[$gn][$k]);
+  foreach($AuthCascade as $k => $t) {
+    if ($page['=auth'][$k]+0 == 2) {
+      $page['=auth'][$k] = $page['=auth'][$t];
+      if ($page['=passwd'][$k] = $page['=passwd'][$t])         # assign
+        $page['=pwsource'][$k] = "cascade:$t";
+    }
+  }
+  if (@$page['=auth']['admin']) 
+    foreach($page['=auth'] as $lv=>$a) @$page['=auth'][$lv] = 3;
+  if (@$page['=passwd']['read']) $NoHTMLCache |= 2;
+  if ($level=='ALWAYS' || @$page['=auth'][$level]) return $page;
+  if (!$authprompt) return false;
+  $GLOBALS['AuthNeeded'] = (@$_POST['authpw']) 
+    ? $page['=pwsource'][$level] . ' ' . $level : '';
+  PCache($pagename, $page);
+  PrintAuthForm($pagename);
+  exit;
+}
+
+## Split from PmWikiAuth to allow for recipes to call it
+function PrintAuthForm($pagename) {
+  global $FmtV, $AuthPromptFmt, $PageStartFmt, $PageEndFmt;
+  $postvars = '';
+  foreach($_POST as $k=>$v) {
+    if ($k == 'authpw' || $k == 'authid') continue;
+    $k = PHSC(stripmagic($k), ENT_QUOTES);
+    if (is_array($v)) {
+      foreach($v as $vk=>$vv) {
+        $vk = PHSC(stripmagic($vk), ENT_QUOTES);
+        $vv = str_replace('$', '&#036;', 
+                PHSC(stripmagic($vv), ENT_COMPAT));
+        $postvars .= "<input type='hidden' name='{$k}[{$vk}]' value=\"$vv\" />\n"; 
+      }
+    }
+    else {
+      $v = str_replace('$', '&#036;', 
+              PHSC(stripmagic($v), ENT_COMPAT));
+      $postvars .= "<input type='hidden' name='$k' value=\"$v\" />\n";
+    }
+  }
+  $FmtV['$PostVars'] = $postvars;
+  $r = str_replace("'", '%37', stripmagic(strval(@$_SERVER['REQUEST_URI'])));
+  SDV($AuthPromptFmt,array(&$PageStartFmt,
+    "<p><b>$[Password required]</b></p>
+      <form name='authform' action='$r' method='post'>
+        $[Password]: <input tabindex='1' type='password' name='authpw' 
+          value='' autofocus='autofocus' />
+        <input type='submit' value='$[OK]' />\$PostVars</form>", &$PageEndFmt));
+  PrintFmt($pagename,$AuthPromptFmt);
+  exit;
+}
+
+
+function IsAuthorized($chal, $source, &$from) {
+  global $AuthList, $AuthPw, $AllowPassword;
+  if (!$chal) return $from;
+  $auth = 0; 
+  $passwd = array();
+  foreach((array)$chal as $c) {
+    $x = '';
+    $pwchal = preg_split('/([, ]|\\w+:)/', $c, -1, PREG_SPLIT_DELIM_CAPTURE);
+    foreach($pwchal as $pw) {
+      if ($pw == ',' || $pw == '') continue;
+      else if ($pw == ' ') { $x = ''; continue; }
+      else if (substr($pw, -1, 1) == ':') { $x = $pw; continue; }
+      else if ($pw[0] != '@' && $x > '') $pw = $x . $pw;
+      if (!$pw) continue;
+      $passwd[] = $pw;
+      if ($auth < 0) continue;
+      if ($x || $pw[0] == '@') {
+        if (@$AuthList[$pw]) $auth = $AuthList[$pw];
+        continue;
+      }
+      if ($AllowPassword && pmcrypt($AllowPassword, $pw) == $pw) # nopass
+        { $auth=1; continue; }
+      foreach((array)$AuthPw as $pwresp)                         # password
+        if (pmcrypt($pwresp, $pw) == $pw) { $auth=1; continue; }
+    }
+  }
+  if (!$passwd) return $from;
+  if ($auth < 0) $auth = 0;
+  return array($auth, $passwd, $source);
+}
+
+
+## SessionAuth works with PmWikiAuth to manage authorizations
+## as stored in sessions.  First, it can be used to set session
+## variables by calling it with an $auth argument.  It then
+## uses the authid, authpw, and authlist session variables
+## to set the corresponding values of $AuthId, $AuthPw, and $AuthList
+## as needed.
+function SessionAuth($pagename, $auth = NULL) {
+  global $AuthId, $AuthList, $AuthPw, $SessionEncode, $SessionDecode,
+    $EnableSessionPasswords, $EnableAuthPostRegenerateSID;
+  static $called;
+
+  @$called++;
+  $sn = session_name(); # in PHP5.3, $_REQUEST doesn't contain $_COOKIE
+  if (!$auth && ($called > 1 || (!@$_REQUEST[$sn] && !@$_COOKIE[$sn]))) return;
+
+  $sid = session_id();
+  pm_session_start();
+  if ($called == 1 && isset($_POST['authpw']) && $_POST['authpw']
+    && IsEnabled($EnableAuthPostRegenerateSID, true) && $sid) {
+    @session_regenerate_id();
+  }
+  
+  foreach((array)$auth as $k => $v) {
+    if ($k == 'authpw') {
+      foreach((array)$v as $pw => $pv) {
+        if ($SessionEncode) $pw = $SessionEncode($pw);
+        $_SESSION[$k][$pw] = $pv;
+      }
+    } 
+    else if ($k) $_SESSION[$k] = (array)$v + (array)@$_SESSION[$k];
+  }
+
+  if (!isset($AuthId)) $AuthId = @$_SESSION['authid'] ? @end($_SESSION['authid']) : '';
+  $AuthPw = array_map($SessionDecode, array_keys((array)@$_SESSION['authpw']));
+  if (!IsEnabled($EnableSessionPasswords, 1)) $_SESSION['authpw'] = array();
+  $AuthList = array_merge($AuthList, (array)@$_SESSION['authlist']);
+  
+  if (!$sid) @session_write_close();
+}
+
+
+function PasswdVar($pagename, $level) {
+  global $PCache, $PasswdVarAuth, $FmtV;
+  $page = $PCache[$pagename];
+  if (!isset($page['=passwd'][$level])) {
+    $page = RetrieveAuthPage($pagename, 'ALWAYS', false, READPAGE_CURRENT);
+    if ($page) PCache($pagename, $page);
+  }
+  SDV($PasswdVarAuth, 'attr');
+  if ($PasswdVarAuth && !@$page['=auth'][$PasswdVarAuth]) return XL('(protected)');
+  $pwsource = $page['=pwsource'][$level];
+  if (strncmp($pwsource, 'cascade:', 8) == 0) {
+    $FmtV['$PWCascade'] = substr($pwsource, 8);
+    return FmtPageName('$[(using $PWCascade password)]', $pagename);
+  }
+  $setting = PHSC(implode(' ', preg_replace('/^(?!@|\\w+:).+$/', '****',
+                                       (array)$page['=passwd'][$level])));
+  if ($pwsource == 'group' || $pwsource == 'site') {
+    $FmtV['$PWSource'] = $pwsource;
+    $setting = FmtPageName('$[(set by $PWSource)] ', $pagename)
+       . PHSC($setting);
+  }
+  return $setting;
+}
+
+
+function PrintAttrForm($pagename) {
+  global $PageAttributes, $PCache, $FmtV;
+  $FmtV['$TokenValue'] = pmtoken();
+  echo FmtPageName("<form action='\$PageUrl' method='post'>
+    <input type='hidden' name='action' value='postattr' />
+    <input type='hidden' name='\$TokenName' value='\$TokenValue' />
+    <input type='hidden' name='n' value='\$FullName' />
+    <table>",$pagename);
+  $page = $PCache[$pagename];
+  foreach($PageAttributes as $attr=>$p) {
+    if (!$p) continue;
+    if (strncmp($attr, 'passwd', 6) == 0) {
+      $setting = PageVar($pagename, '$Passwd'.ucfirst(substr($attr, 6)));
+      $value = '';
+    } else { $setting = $value = PHSC(@$page[$attr]); }
+    $prompt = FmtPageName($p,$pagename);
+    echo "<tr><td>$prompt</td>
+      <td><input type='text' name='$attr' value='$value' /></td>
+      <td>$setting</td></tr>";
+  }
+  echo FmtPageName("</table><input type='submit' value='$[Save]' /></form>",
+         $pagename);
+}
+
+function HandleAttr($pagename, $auth = 'attr') {
+  global $HandleAttrFmt,$PageAttrFmt,$PageStartFmt,$PageEndFmt;
+  $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
+  if (!$page) { Abort("?unable to read $pagename"); }
+  PCache($pagename,$page);
+  XLSDV('en', array('EnterAttributes' =>
+    "Enter new attributes for this page below.  Leaving a field blank
+    will leave the attribute unchanged.  To clear an attribute, enter
+    'clear'."));
+  SDV($PageAttrFmt,"<div class='wikiattr'>
+    <h2 class='wikiaction'>$[{\$FullName} Attributes]</h2>
+    <p>$[EnterAttributes]</p></div>");
+  SDV($HandleAttrFmt,array(&$PageStartFmt,&$PageAttrFmt,
+    'function:PrintAttrForm',&$PageEndFmt));
+  PrintFmt($pagename,$HandleAttrFmt);
+}
+
+function HandlePostAttr($pagename, $auth = 'attr') {
+  global $PageAttributes, $EnablePostAttrClearSession;
+  if (! AutoCheckToken()) {
+    Abort('? $[Token invalid or missing.]');
+  }
+  Lock(2);
+  $page = RetrieveAuthPage($pagename, $auth, true);
+  if (!$page) { Abort("?unable to read $pagename"); }
+  foreach($PageAttributes as $attr=>$p) {
+    $v = stripmagic(@$_POST[$attr]);
+    if ($v == '') continue;
+    if ($v=='clear') unset($page[$attr]);
+    else if (strncmp($attr, 'passwd', 6) != 0) $page[$attr] = $v;
+    else {
+      $a = array();
+      preg_match_all('/"[^"]*"|\'[^\']*\'|\\S+/', $v, $match);
+      foreach($match[0] as $pw) 
+        $a[] = preg_match('/^(@|\\w+:)/', $pw) ? $pw 
+                   : pmcrypt(preg_replace('/^([\'"])(.*)\\1$/', '$2', $pw));
+      if ($a) $page[$attr] = implode(' ',$a);
+    }
+  }
+  WritePage($pagename,$page);
+  Lock(0);
+  if (IsEnabled($EnablePostAttrClearSession, 1)) {
+    pm_session_start();
+    unset($_SESSION['authid']);
+    unset($_SESSION['authlist']);
+    $_SESSION['authpw'] = array();
+  }
+  Redirect($pagename);
+  exit;
+} 
+
+
+function HandleLogoutA($pagename, $auth = 'read') {
+  global $LogoutRedirectFmt, $LogoutCookies;
+  SDV($LogoutRedirectFmt, '$FullName');
+  SDV($LogoutCookies, array());
+  pm_session_start();
+  $_SESSION = array();
+  if ( session_id() != '' || isset($_COOKIE[session_name()]) )
+    pmsetcookie(session_name(), '', time()-43200, '/');
+  foreach ($LogoutCookies as $c)
+    if (isset($_COOKIE[$c])) pmsetcookie($c, '', time()-43200, '/');
+  session_destroy();
+  Redirect(FmtPageName($LogoutRedirectFmt, $pagename));
+}
+
+
+function HandleLoginA($pagename, $auth = 'login') {
+  global $AuthId, $DefaultPasswords;
+  unset($DefaultPasswords['admin']);
+  $prompt = @(!$_POST['authpw'] || ($AuthId != $_POST['authid']));
+  $page = RetrieveAuthPage($pagename, $auth, $prompt, READPAGE_CURRENT);
+  Redirect($pagename);
+}
+
blob - /dev/null
blob + 5b6e7c66c276e7610d4a73c70ec1a1f7c1003259 (mode 644)
--- /dev/null
+++ pub/chess/COPYING
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
blob - /dev/null
blob + f476a7a96a9bbb7bdca46fd259876b100379f711 (mode 644)
Binary files /dev/null and pub/chess/bd-60.png differ
blob - /dev/null
blob + 7c0c463ce684dcee6c6860a66a2477252d4bd7f3 (mode 644)
Binary files /dev/null and pub/chess/bl-60.png differ
blob - /dev/null
blob + 04a28a9d332f523a1a672c93b3def53c593bc1cb (mode 644)
Binary files /dev/null and pub/chess/blank-60.png differ
blob - /dev/null
blob + d71762bdbb755a46144375ca042bc1ef270d04f1 (mode 644)
--- /dev/null
+++ pub/chess/chessboard.php
@@ -0,0 +1,116 @@
+<?php
+/*  Copyright 2005-2021 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is chessboard.php; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  
+
+    This script generates a GIF image of a chessboard from a board
+    position given in Forsyth-Edwards Notation (FEN) [1].  The parameters
+    understood by this script include:
+
+        fen=[position]         A game position in FEN notation
+        w=[width]              Width of GIF image (default 240 pixels)
+        h=[height]             Height of GIF image (default same as width)
+        light=[rrggbb]         Color of light squares (default "ffffff")
+        dark=[rrggbb]          Color of dark squares (default "cccccc")
+        border=[rrggbb]        Border color (default "999999")
+
+    The chess piece images are held in an image file specified by 
+    $default['pieces'].  This file is a single image containing
+    all of the images to be used for pieces laid out end-to-end
+    horizontally, starting with White's king, queen, rook, bishop, 
+    knight, and pawn, and then the same sequence for Black's pieces.  
+
+    The pieces-60.gif file distributed with chessboard.php was created
+    from chess tile images provided by David Benbennick and available
+    through the Wikimedia Commons [2] under either a public domain
+    or GPL-compatible license.
+
+    1. http://en.wikipedia.org/wiki/FEN
+    2. http://commons.wikimedia.org/wiki/Image:Chess_tile_pd.png
+    
+    Script maintained by Petko Yotov https://www.pmwiki.org/petko
+*/
+
+  $defaults = array(
+    'w' => 240,                                              # chessboard width
+    'fen' => 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR',  # default position
+    'dark' => 'cccccc',                                      # dark squares
+    'light' => 'ffffff',                                     # light squares
+    'border' => '666666',                                    # border color
+    'pieces' => 'pieces-60.gif',                             # image file
+  );
+
+  # merge the request parameters with the defaults
+  $opt = array_merge($defaults, (array)$_REQUEST);
+
+  # set the values we'll use
+  $w = $opt['w'];
+  $h = (@$opt['h']) ? $opt['h'] : $w;
+  $fen = $opt['fen'];
+  $dark = hexdec($opt['dark']);
+  $light = hexdec($opt['light']);
+
+  # if no FEN position specified, use the default
+  if (!$fen) { $fen = $defaults['fen']; }
+  
+
+  # load the piece images
+  $piece = imagecreatefromgif($defaults['pieces']);
+
+  # determine the width and height of a single piece
+  $pw = imagesx($piece)/12;
+  $ph = imagesy($piece);
+
+  # build an 8x8 board to draw pieces on
+  $bw = $pw * 8; $bh = $ph * 8;
+  $board = imagecreatetruecolor($bw, $bh);
+
+  # draw the squares
+  imagefilledrectangle($board, 0, 0, $bw, $bh, $dark);
+  for($i = 0; $i < 8; $i += 2) {
+    for($j = 0; $j < 8; $j += 2) {
+      $x = $i * $pw; $y = $j * $ph;
+      imagefilledrectangle($board, $x, $y, $x+$pw, $y+$ph, $light);
+      $x += $pw; $y += $ph;
+      imagefilledrectangle($board, $x, $y, $x+$pw, $y+$ph, $light);
+    }
+  }
+
+  # locate the starting horizontal offset of each piece by name
+  $str = "KQRBNPkqrbnp";
+  for($i=0; $i < 12; $i++) { $k = $str[$i]; $pk[$k] = $i * $pw; }
+
+  # Now, walk through the FEN record and draw the pieces in the
+  # appropriate position.
+  $file = 0; $rank = 0;
+  $len = strlen($fen);
+  for($i=0; $i<$len; $i++) {
+    $k = $fen[$i];
+    if (is_numeric($k) && $k > 0) { $file+=$k; continue; }
+    if ($k == '/') { $rank++; $file=0; continue; }
+    if (isset($pk[$k])) {
+      imagecopy($board, $piece, $file*$pw, $rank*$ph, $pk[$k], 0, $pw, $ph);
+      $file++;
+    }
+  }
+  imagedestroy($piece);
+
+  # resize the board if needed
+  if ($w != $bw || $h != $bh) {
+    $old = $board;
+    $board = imagecreatetruecolor($w, $h);
+    imagecopyresampled($board, $old, 0, 0, 0, 0, $w, $h, $bw, $bh);
+    imagedestroy($old);
+  }
+
+  # draw a border if requested
+  if ($opt['border']) 
+    imagerectangle($board, 0, 0, $w-1, $h-1, hexdec($opt['border']));
+
+  # return the completed chessboard image
+  header("Content-type: image/gif");
+  imagegif($board);
+  imagedestroy($board);
+
blob - /dev/null
blob + cd527739b11ce5174a546b2c4f2329a36e8b3b25 (mode 644)
Binary files /dev/null and pub/chess/kd-60.png differ
blob - /dev/null
blob + ddb730a2636765c68263e88a4de46e1ab496963a (mode 644)
Binary files /dev/null and pub/chess/kl-60.png differ
blob - /dev/null
blob + 253e98ebf5403eaf6eb11eeb8cb2f51d8b921239 (mode 644)
Binary files /dev/null and pub/chess/nd-60.png differ
blob - /dev/null
blob + 3761c020af036f4fe5aaca4058445e814a27d27b (mode 644)
Binary files /dev/null and pub/chess/nl-60.png differ
blob - /dev/null
blob + cc392f97a88f85810ffc932708055ffb15b8b1df (mode 644)
Binary files /dev/null and pub/chess/pd-60.png differ
blob - /dev/null
blob + 0821f78a1d8e70fb92d92c3f85a926e5aa4206d5 (mode 644)
Binary files /dev/null and pub/chess/pieces-60.gif differ
blob - /dev/null
blob + d183f30aed40217777b449d1b1b29e6a0ea3df38 (mode 644)
Binary files /dev/null and pub/chess/pl-60.png differ
blob - /dev/null
blob + b2e1067c8dbdcdcfd3e6784e580a01581ec2d171 (mode 644)
Binary files /dev/null and pub/chess/qd-60.png differ
blob - /dev/null
blob + e97d6c401ce79ae33c68c4d7c60dfa2a5c760004 (mode 644)
Binary files /dev/null and pub/chess/ql-60.png differ
blob - /dev/null
blob + 73a29d87553d4337455f8a8d117ea5bb4b63afa6 (mode 644)
Binary files /dev/null and pub/chess/rd-60.png differ
blob - /dev/null
blob + f3d0ad6e84a891109944fa6fc431d7f5ec99307a (mode 644)
Binary files /dev/null and pub/chess/rl-60.png differ
blob - /dev/null
blob + dbadaf2770a5dd66153332d894818c63ff9e92be (mode 644)
--- /dev/null
+++ pub/guiedit/README
@@ -0,0 +1,6 @@
+The images in this directory are part of the GUIEdit module
+for PmWiki, Copyright 2005-2006 Patrick R. Michaud (pmichaud@pobox.com)
+These images are part of PmWiki; you can redistribute it and/or modify
+them under the terms of the GNU General Public License as published
+by the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.  See pmwiki.php for full details.
blob - /dev/null
blob + 720d0b6f5d80956508226aed0b50ee006be4c894 (mode 644)
Binary files /dev/null and pub/guiedit/attach.gif differ
blob - /dev/null
blob + d0d3d0d6146cffb549c06f8f53dbbffae75b6d46 (mode 644)
Binary files /dev/null and pub/guiedit/big.gif differ
blob - /dev/null
blob + a3b8d18f05690f63301309c59e91656ddb9c5960 (mode 644)
Binary files /dev/null and pub/guiedit/blank.gif differ
blob - /dev/null
blob + 64e354b0bf000c09809f8150855df574e01d34fd (mode 644)
Binary files /dev/null and pub/guiedit/center.gif differ
blob - /dev/null
blob + 58e65b065f5e8f4247b9f87fad8b34aced6cc67f (mode 644)
Binary files /dev/null and pub/guiedit/em.gif differ
blob - /dev/null
blob + 1eacc921106a3ea5c4c9d2c2fa8de55b0e413d24 (mode 644)
Binary files /dev/null and pub/guiedit/extlink.gif differ
blob - /dev/null
blob + 2213583eb1e4ddd83926697db5cfe868ae07aa34 (mode 644)
Binary files /dev/null and pub/guiedit/fixurl.png differ
blob - /dev/null
blob + 16bb1b4af2afd09b9a1365cffa232b8706716bb4 (mode 644)
--- /dev/null
+++ pub/guiedit/guiedit.js
@@ -0,0 +1,326 @@
+/*  Copyright 2004-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file provides JavaScript functions to support WYSIWYG-style
+    editing.  The concepts are borrowed from the editor used in Wikipedia,
+    but the code has been rewritten from scratch to integrate better with
+    PHP and PmWiki's codebase.
+
+    Script maintained by Petko Yotov www.pmwiki.org/petko
+*/
+
+function insButton(mopen, mclose, mtext, mlabel, mkey) {
+  if (mkey > '') { mkey = 'accesskey="' + mkey + '" ' }
+  document.write("<a tabindex='-1' " + mkey + "onclick=\"insMarkup('"
+    + mopen + "','"
+    + mclose + "','"
+    + mtext + "');\">"
+    + mlabel + "</a>");
+}
+
+function insMarkup() {
+  var func = false, tid='text', mopen = '', mclose = '', mtext = '', unselect = false;
+  if (arguments[0] == 'FixSelectedURL') {
+    func = FixSelectedURL;
+  }
+  else if (typeof arguments[0] == 'function') {
+    var func = arguments[0];
+    if(arguments.length > 1) tid = arguments[1];
+    x = func('');
+    if(typeof x == 'object') {
+      if(x.mopen) mopen = x.mopen;
+      if(x.mclose) mclose = x.mclose;
+      if(x.mtext) mtext = x.mtext;
+      if(x.unselect) unselect = x.unselect;
+    }
+    else {
+      mtext = x;
+    }
+  }
+  else if (arguments.length >= 3) {
+    var mopen = arguments[0], mclose = arguments[1], mtext = arguments[2];
+    if(arguments.length > 3) tid = arguments[3];
+  }
+
+  var tarea = document.getElementById(tid);
+  if (tarea.setSelectionRange > '') { // recent browsers
+    var p0 = tarea.selectionStart;
+    var p1 = tarea.selectionEnd;
+    var top = tarea.scrollTop;
+    var str = mtext;
+    var cur0 = p0 + mopen.length;
+    var cur1 = p0 + mopen.length + str.length;
+    while (p1 > p0 && tarea.value.substring(p1-1, p1) == ' ') p1--; 
+    if (p1 > p0) {
+      str = tarea.value.substring(p0, p1);
+      if(func) str = func(str);
+      cur0 = p0 + mopen.length + str.length + mclose.length;
+      cur1 = cur0;
+    }
+    if(document.execCommand) {
+      tarea.focus();
+      document.execCommand('insertText', false, mopen + str + mclose);
+    }
+    else {
+      tarea.value = tarea.value.substring(0,p0)
+        + mopen + str + mclose
+        + tarea.value.substring(p1);
+      tarea.focus();
+    }
+    tarea.selectionStart = unselect? cur1 : cur0;
+    tarea.selectionEnd = cur1;
+    tarea.scrollTop = top;
+  } else if (document.selection) {
+    var str = document.selection.createRange().text;
+    tarea.focus();
+    range = document.selection.createRange();
+    if (str == '') {
+      range.text = mopen + mtext + mclose;
+      range.moveStart('character', -mclose.length - mtext.length );
+      range.moveEnd('character', -mclose.length );
+    } else {
+      if (str.charAt(str.length - 1) == " ") {
+        mclose = mclose + " ";
+        str = str.substr(0, str.length - 1);
+        if(func) str = func(str);
+      }
+      range.text = mopen + str + mclose;
+    }
+    if (!unselect) range.select();
+  } else { tarea.value += mopen + mtext + mclose; }
+  var evt = new Event('input');
+  tarea.dispatchEvent(evt);
+  return;
+}
+
+// Helper functions below by Petko Yotov, www.pmwiki.org/petko
+function aE(el, ev, fn) {
+  if(typeof el == 'string') el = dqsa(el);
+  for(var i=0; i<el.length; i++) el[i].addEventListener(ev, fn);
+}
+function dqs(str)  { return document.querySelector(str); }
+function dqsa(str) { return document.querySelectorAll(str); }
+function tap(q, fn) { aE(q, 'click', fn); };
+function FixSelectedURL(str) {
+  var rx = new RegExp("[ <>\"{}|\\\\^`()\\[\\]']", 'g');
+  str = str.replace(rx, function(a){
+    return '%'+a.charCodeAt(0).toString(16); });
+  return str;
+}
+
+window.addEventListener('DOMContentLoaded', function(){
+  newButtons();
+  
+  var NsForm = false;
+
+  var sTop = dqs("#textScrollTop");
+  var tarea = dqs('#text');
+  if(sTop && tarea) {
+    if(sTop.value) tarea.scrollTop = sTop.value;
+    sTop.form.addEventListener('submit', function(){
+      sTop.value = tarea.scrollTop;
+    });
+  }
+
+  var ensw = dqs('#EnableNotSavedWarning');
+  if(ensw) {
+    var NsMessage = ensw.value;
+    NsForm = ensw.form;
+    if(NsForm) {
+      NsForm.addEventListener('submit', function(e){
+        NsMessage="";
+      });
+      window.onbeforeunload = function(ev) {
+        if(NsMessage=="") {return;}
+        if (typeof ev == "undefined") {ev = window.event;}
+        if (tarea && tarea.codemirror) {tarea.codemirror.save();}
+
+        var tx = NsForm.querySelectorAll('textarea, input[type="text"]');
+        for(var i=0; i<tx.length; i++) {
+          var el = tx[i];
+          if(ensw.className.match(/\bpreview\b/) || el.value != el.defaultValue) {
+            if (ev) {ev.returnValue = NsMessage;}
+            return NsMessage;
+          }
+        }
+      }
+    }
+  }
+  if(dqs('#EnableEditAutoText')) EditAutoText();
+});
+
+/*
+ *  New GUI edit buttons, without inline JavaScript
+ *  (c) 2022 Petko Yotov www.pmwiki.org/petko
+ */
+function newButtons(){
+  var el = dqs('.GUIButtons');
+  if(! el) return;
+  
+  function unxp(a) {
+    if(typeof a == 'number') return a;
+    if(typeof a == 'string')
+      return a.replace(/\\n/g, '\n')
+        .replace(/\\\\/g, '\\').replace(/%25/g, '%');
+    var b = [];
+    for(var i=0; i<a.length; i++) {
+      b[i] = unxp(a[i]);
+    }
+    return b;
+  }
+  var buttons = unxp(JSON.parse(el.dataset.json));
+  
+  for(var i=0; i<buttons.length; i++) {
+    var b = buttons[i];
+    if(!b || !b.length) continue;
+    var mopen=b[1], mclose=b[2], mtext=b[3], tag=b[4], mkey=b[5];
+    if(tag.charAt(0) == '<') {
+      el.insertAdjacentHTML('beforeend', tag);
+      continue;
+    }
+    var x = tag.match(/^(.*\.(gif|jpg|png|webp|svg))("([^"]+)")?$/);
+    if(x) {
+      var title = x[4]? 'alt="'+x[4]+'" title="'+x[4]+'"' : '';
+      tag = "<img src='"+x[1]+"' "+title+" />";
+    }
+    var a = document.createElement('a');
+    a.setAttribute('tabindex', -1);
+    if(mkey) a.setAttribute('accesskey', mkey);
+    a.dataset.mopen = mopen;
+    a.dataset.mclose = mclose;
+    a.dataset.mtext = mtext;    
+    a.innerHTML = tag;
+    a.className = 'newbutton';
+    el.appendChild(a);
+  }
+  tap('.GUIButtons a.newbutton', function(e){
+    insMarkup(this.dataset.mopen, this.dataset.mclose, this.dataset.mtext);
+  });
+}
+
+/*
+ *  Edit helper for PmWiki
+ *  (c) 2016-2022 Petko Yotov www.pmwiki.org/petko
+ */
+function EditAutoText(){
+  var t = dqs('#text');
+  if(!t) return;
+
+
+  t.addEventListener('keydown', function(e){
+    var caret = this.selectionStart, endcaret = this.selectionEnd;
+    if(typeof caret != 'number') return true; // old MSIE, sorry
+
+    var content = this.value;
+    
+    // Ctrl+L (lowercase), Ctrl+Shift+L (uppercase)
+    if((e.key.toLowerCase() === 'l') && e.ctrlKey && caret != endcaret && document.execCommand) {
+      e.preventDefault();
+      var sel = content.substring(caret, endcaret);
+      sel = e.shiftKey? sel.toUpperCase(): sel.toLowerCase();
+      document.execCommand('insertText', false, sel);
+      this.selectionStart = caret;
+      return;
+    }
+    
+    // Ctrl+Shift+ArrowUp, Ctrl+Shift+ArrowDown: swap lines
+    else if(e.ctrlKey && e.shiftKey && e.key.match(/Arrow(Up|Down)/) && document.execCommand) {
+      e.preventDefault();
+      
+      var before = content.slice(0, caret), 
+        after = content.slice(endcaret), 
+        sel = content.slice(caret, endcaret);
+      var a = before.match(/[^\n]+$/);
+      if(a) {
+        sel = a[0]+sel;
+        before = before.slice(0, -a[0].length);
+      }
+      a = after.match(/^[^\n]*(\n|$)/);
+      sel = sel+a[0];
+      after = after.slice(a[0].length);
+      
+      if(e.key == 'ArrowUp') {
+        a = before.match(/[^\n]*\n$/);
+        if(!a) return;
+        var lineA = sel, lineB = a[0];
+        var deltacaret = -lineB.length;
+      }
+      else if(e.key == 'ArrowDown') {
+        a = after.match(/^([^\n]+$|[^\n]*\n)/);
+        if(!a) return;
+        var lineA = a[0], lineB = sel;
+        var deltacaret = lineA.length;
+      }
+      if(!lineA.match(/\n$/)) { // last line
+        lineB = "\n" + lineB.slice(0, -1);
+        if(deltacaret>0) deltacaret+=1;
+      }
+      var insert = lineA + lineB;
+      this.selectionStart = before.length + Math.min(deltacaret,0);
+      this.selectionEnd = this.selectionStart + insert.length;
+      document.execCommand('insertText', false, insert);
+      this.selectionStart = caret + deltacaret;
+      this.selectionEnd = endcaret + deltacaret;
+      return;
+    }
+    
+    if (e.key != "Enter") return;
+
+    var before = content.substring(0, caret).split(/\n/g);
+    var after  = content.substring(endcaret);
+    var currline = before[before.length-1];
+    var linestartpos = content.lastIndexOf('\n', Math.max(0,caret-1));
+
+    if(currline.match(/\\$/)) return true; // line ending with a \ backslash
+                     
+    var insert;
+    if(e.ctrlKey && e.shiftKey) {
+      insert = "~~~~";
+    }
+    else if(e.ctrlKey) {
+      insert = "[[<<]]";
+    }
+    else if(e.shiftKey) {
+      insert = "\\\\\n";
+    }
+    else {
+      var m = currline.match(/^((?: *\*+| *\#+|-+[<>]|:+|\|\|| ) *)/);
+      if(!m) return true;
+                     
+      if(currline==m[1] && (after === '' || after.charAt(0) == '\n')) {
+        insert = "\n";
+        if(linestartpos<0) {
+          linestartpos = 0;
+          this.selectionEnd += 1;
+        }
+        this.selectionStart = linestartpos;
+        caret = caret - currline.length - 1;
+        before = before.slice(0,-1); // if no execCommand
+      }
+      else {
+        insert = "\n"+m[1];
+      }
+    }
+    e.preventDefault();
+
+    if(document.execCommand) {
+      document.execCommand('insertText', false, insert);
+    }
+    else {
+      content = before.join("\n") + insert + after;
+      this.value = content;
+    }
+    
+    this.selectionStart = caret + insert.length;
+    this.selectionEnd = caret + insert.length;
+    
+    var evt = new Event('input');
+    this.dispatchEvent(evt);
+    
+    return false;
+  });
+};
+
blob - /dev/null
blob + 76e062b8e5fd996275d71c9ffe4347c909dee28a (mode 644)
Binary files /dev/null and pub/guiedit/h.gif differ
blob - /dev/null
blob + 4a358da1e4e8452abca302b9f1e20c73f909863e (mode 644)
Binary files /dev/null and pub/guiedit/h1.gif differ
blob - /dev/null
blob + a6aca2cc940711866955107dbee735f0c8945b6b (mode 644)
Binary files /dev/null and pub/guiedit/h2.gif differ
blob - /dev/null
blob + 0459f89ae2379316ac0c0bf334e9eb121e721a2e (mode 644)
Binary files /dev/null and pub/guiedit/h3.gif differ
blob - /dev/null
blob + 486d47ca53d94f3fef552b7301e2420805cac638 (mode 644)
Binary files /dev/null and pub/guiedit/hr.gif differ
blob - /dev/null
blob + e158e40ccdc8e8cfbcdd272d862f02b718ba5677 (mode 644)
Binary files /dev/null and pub/guiedit/indent.gif differ
blob - /dev/null
blob + d78986d87d4560b4d0225bac1fef4ce231825355 (mode 644)
Binary files /dev/null and pub/guiedit/left.gif differ
blob - /dev/null
blob + 33fb51a9785027e32a095b5288347303a61a9015 (mode 644)
Binary files /dev/null and pub/guiedit/math.gif differ
blob - /dev/null
blob + 0368a46e1411228e8f656465aaf08afddaefe027 (mode 644)
Binary files /dev/null and pub/guiedit/ol.gif differ
blob - /dev/null
blob + 68aace1df0ee76736133b0af7c304ff732fcf9b7 (mode 644)
Binary files /dev/null and pub/guiedit/outdent.gif differ
blob - /dev/null
blob + 21039ffcca7875854b622111c03097e0879ae1e1 (mode 644)
Binary files /dev/null and pub/guiedit/pagelink.gif differ
blob - /dev/null
blob + 346ca6c1dac413a83951add77ef11410368e35af (mode 644)
--- /dev/null
+++ pub/guiedit/pmwiki.syntax.css
@@ -0,0 +1,219 @@
+/*  PmSyntax: Syntax highlighting for PmWiki markup
+    Copyright 2021 Petko Yotov https://www.pmwiki.org/support
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file provides a color theme for syntax highlighting of PmWiki markup,
+    to be used in the PmWiki documentation, and optionally in the edit form.
+
+    The CSS variables can be redefined in skins and in local customization in 
+    order to adapt to other color themes.
+*/
+#wikiedit #hwrap textarea#text, #wikiedit #htext, .pmhlt, #chk_hlt {
+  /* base text color and background */
+  --pmsyntax-color: inherit;
+  --pmsyntax-bgcolor: inherit;
+
+  /* [=Escaped text=], not processed by PmWiki */
+  --pmsyntax-escaped: rgba(0,0,0,.7);
+  --pmsyntax-escapedbg: rgba(0,0,0,.07);
+
+  /* (:comment text:)*/
+  --pmsyntax-comment: #777;
+
+  /* core meta directives and wikistyles */
+  --pmsyntax-meta: #279;
+  --pmsyntax-metabg: #eff;
+
+  /* other core and custom directives */
+  --pmsyntax-directive: black;
+  --pmsyntax-directivebg: #eee;
+
+  /* markup expressions */
+  --pmsyntax-mx: #470;
+  --pmsyntax-mxbg: #efe;
+
+  /* !! Headings */
+  --pmsyntax-heading: #800;
+  --pmsyntax-headingbg: #ffe7e1;
+
+  /* list items, line breaks, indents */
+  --pmsyntax-bullet: #470;
+  --pmsyntax-bulletbg: #dfd;
+
+  /* simple tables */
+  --pmsyntax-table: #470;
+  --pmsyntax-tablebg: #dfd;
+
+  /* inline punctuation like '''bold''' */
+  --pmsyntax-punct: #a00;
+
+  /* i18n strings like $[Edit] or entities like &nbsp; */
+  --pmsyntax-string: #800;
+
+  /* attributes and values in directives and wikistyles */
+  --pmsyntax-attr: #f70;
+  --pmsyntax-value: #a00;
+
+  /* page (text) variables, template variables, like {*$:Summary} */
+  --pmsyntax-var: #f40;
+  
+  /* keyword in forms, templates, conditionals */
+  --pmsyntax-keyword: #800;
+
+
+  /* Link URLs, InterMap links */
+  --pmsyntax-url: #37a;
+
+  /* textarea of the edit form, and highlighted block under it */
+  --pmsyntax-border: 1px inset #ccc;
+  --pmsyntax-radpad: 3px;
+  --pmsyntax-fontfamily: monospace;
+
+  --pmsyntax-fontsize: .93333em;
+  --pmsyntax-fontsize-editform: 14px;
+  --pmsyntax-lineheight: 1.3;
+
+  /* color of the blinking cursor in the textarea */
+  --pmsyntax-caretcolor: red;
+}
+
+pre.pmhlt, .pmhlt pre, 
+code.pmhlt, .pmhlt code, #htext.pmhlt {
+  color: var(--pmsyntax-color);
+  background-color: var(--pmsyntax-bgcolor);
+  font-family: var(--pmsyntax-fontfamily);
+  font-size: var(--pmsyntax-fontsize);
+}
+#htext.pmhlt, #htext.pmhlt code, #htext.pmhlt code.hljs {
+  font-size: var(--pmsyntax-fontsize-editform);  
+}
+.pmhlt .pmtag, .pmhlt .pmpunct {
+  font-weight: bold;
+}
+.pmhlt .pmcomment {
+  color: var(--pmsyntax-comment);
+}
+.pmhlt .pmmx {
+  color: var(--pmsyntax-mx);
+  background-color: var(--pmsyntax-mxbg);
+}
+.pmhlt .pmdirective {
+  color: var(--pmsyntax-directive);
+  background-color: var(--pmsyntax-directivebg);
+}
+.pmhlt .pmstring {
+  color: var(--pmsyntax-string);
+}
+.pmhlt .pmvar {
+  color: var(--pmsyntax-var);
+}
+.pmhlt .pmmeta {
+  color: var(--pmsyntax-meta);
+  background-color: var(--pmsyntax-metabg);
+}
+.pmhlt .pmbullet {
+  color: var(--pmsyntax-bullet);
+  background-color: var(--pmsyntax-bulletbg);
+}
+.pmhlt .pmtable {
+  color: var(--pmsyntax-table);
+  background-color: var(--pmsyntax-tablebg);
+}
+.pmhlt .pmpunct {
+  color: var(--pmsyntax-punct);
+}
+.pmhlt .pmurl{
+  color: var(--pmsyntax-url);
+}
+.pmhlt .pmheading {
+  background-color: var(--pmsyntax-headingbg);
+}
+.pmhlt .pmheading .pmtag:not(.pmcomment,.pmcomment>*,.pmescaped,.pmescaped>*,.pmdirective,.pmdirective>*,.pmmeta,.pmmeta>*,.pmmx,.pmmx>*),
+.pmhlt .pmheading.pmtag {
+  color: var(--pmsyntax-heading);
+}
+.pmhlt .pmescaped {
+  color: var(--pmsyntax-escaped);
+  background-color: var(--pmsyntax-escapedbg);
+}
+.pmhlt .pmattr {
+  color: var(--pmsyntax-attr);
+}
+.pmhlt .pmkeyword {
+  color: var(--pmsyntax-keyword);
+  font-style: italic;
+}
+.pmhlt .pmvalue {
+  color: var(--pmsyntax-value);
+}
+.pmhlt .pmnobg {
+  background-color: transparent;
+}
+
+.pmhlt code.hljs {
+  padding: 0;
+  display: inline;
+}
+
+#wikiedit #hwrap {
+  position: relative;
+  border: none;
+  padding: 0;
+  margin: 0;
+  width: 100%;
+  display: inline-block; /*skins*/
+}
+#wikiedit #hwrap textarea#text, #wikiedit #htext {
+  border: var(--pmsyntax-border);
+  border-radius: var(--pmsyntax-radpad);
+  padding: var(--pmsyntax-radpad);
+  box-sizing: border-box;
+  font-family: var(--pmsyntax-fontfamily);
+  font-size: var(--pmsyntax-fontsize-editform);
+  line-height: var(--pmsyntax-lineheight);
+  background-color: transparent;
+  width: 100%;
+  max-width: 100%;
+  margin: 0;
+  word-wrap: break-word;
+  overflow-wrap: break-word;
+}
+#wikiedit #hwrap #htext {
+  display: none;
+  position: absolute;
+  top: 0px;
+  left: 0px;
+  background-color: var(--pmsyntax-bgcolor);
+  white-space: pre-wrap;
+  border-color: transparent;
+  overflow: auto;
+  user-select: none;
+}
+
+#wikiedit #chk_hlt.pmhlt ~ * #htext {
+  display: block;
+}
+#chk_hlt {
+  float: right;
+  font-size: var(--pmsyntax-fontsize);;
+  cursor: pointer;
+  user-select: none;
+  position: relative;
+  z-index: 3;
+  font-family: var(--pmsyntax-fontfamily);
+}
+#wikiedit #chk_hlt.pmhlt ~ * #text,
+#wikiedit #chk_hlt.pmhlt ~ #text {
+  position: relative;
+  z-index: 2;
+  color: transparent;
+  background-image: none;
+  caret-color: var(--pmsyntax-caretcolor);
+}
+
+#wikiedit #hwrap textarea#text.dragging {
+  color: var(--pmsyntax-color);
+}
blob - /dev/null
blob + a08a7558f84ef5ead457e6607162aa531c3c295c (mode 644)
--- /dev/null
+++ pub/guiedit/pmwiki.syntax.js
@@ -0,0 +1,570 @@
+/*  PmSyntax: Syntax highlighting for PmWiki markup
+    Copyright 2021-2022 Petko Yotov https://www.pmwiki.org/support
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file provides Javascript functions for syntax highlighting of
+    PmWiki markup, to be used in the PmWiki documentation, and optionally
+    in the edit form.
+*/
+
+(function(){
+  var KeepToken = "\034\034";
+  var restoreRX = new RegExp(KeepToken+'(\\d+)'+KeepToken, 'g');
+  var special = /[#!*?&+|,()[\]{}\/\^<>=]+|\.\.+|--+|\s-+/g;
+  var Kept = new RegExp('^' + KeepToken+'(\\d+)'+KeepToken + '$', '');
+
+  var log = console.log;
+  function aE(el, ev, fn) {
+    if(typeof el == 'string') el = dqsa(el);
+    var ell = el.length;
+    for(var i=0; i<ell; i++) el[i].addEventListener(ev, fn);
+  }
+  function dqs(str)  { return document.querySelector(str); }
+  function dqsa(str) { return document.querySelectorAll(str); }
+  function tap(q, fn) { aE(q, 'click', fn); };
+  function PHSC(x) { return x.replace(/[&]/g, '&amp;').replace(/[<]/g, '&lt;').replace(/[>]/g, '&gt;'); }
+  function span(cname, text, escaped) {
+    if(text==='') return '';
+    if(!escaped) text = PHSC(text);
+    return "<span class='pm"+cname.replace(/^\*/, 'tag ')
+     .split(/[ _]+/g).join(' pm')+"'>" + text + "</span>";
+  }
+  var hrx = [ // rule_name, [*=!]classname|function, [container_rx], rx
+    ['_begin'],
+    ['external', 'external', /%hlt +([-\w+]+) *% *\[@([\s\S]*?)@\]/g],
+    ['external2', 'external', /%hlt +([-\w+]+) *% *@@ *\[=([\s\S]*?)=\] *@@/g],
+    ['pmhlt', 'external', /%(pm)hlt *% *\[@([\s\S]*?)@\]/g],
+    ['pmhlt2', 'external', /%(pm)hlt *% *@@ *\[=([\s\S]*?)=\] *@@/g],
+    ['preserve', '=escaped', /\[([@=])[\s\S]*?\1\]/g, /^(\[[@=])([\s\S]*)([@=]\])$/],
+    ['joinline', '*bullet', /\\+(\n|$)/g],
+
+    // variables
+    ['pagevar', 'var', /\{([-\w\/.]+|[*=<>])?\$[$:]?\w+\}/g],
+    ['nestvar', 'string', /\{(\034\034\d+\034\034)\$[$:]?\w+\}/g],
+    ['phpvar',  'var', /\$((Enable|Fmt|Upload)\w+|\w+(Fmt|Functions?|Patterns?|Dirs?|Url)|FarmD|pagename)\b/g],
+    ['i18n', 'string', /\$\[.*?\]/g],
+
+    // markup expressions
+    ['mx', '!mx', /(\{\([-\w]+)(.*?)(\)\})/g],
+
+    // page text vars, can be empty or multiline
+    ['ptv0', '=meta>punct', /(\(:\w[-\w]*)(:)( *:\))/g, /:/],
+    ['ptv1', '=meta>punct', /(\(:\w[\w-]*)(:[^\)][\s\S]*?)(:\))/g, /:/],
+
+    // core meta directives
+    ['comment', '=comment', /(\(:comment)(.*?)(:\))/gi],
+    ['skin',  '*meta', /\(:no(left|right|title|action|(group)?(header|footer)) *:\)/gi ],
+    ['meta0', '*meta', /\(:(no)?((link|space)wikiwords|linebreaks|toc) *:\)/gi],
+    ['meta1', '*meta', /\(:(else\d*|if\d*|if\d*end|nl) *:\)/gi],
+    ['meta2', '=meta', /(\(:(?:title|description|keywords))(.*?)(:\))/gi],
+    ['meta3', '=meta>keyword>*attr>*keyword',
+      /(\(:(?:(?:else\d*)?if\d*))(.*?)(:\))/ig,
+      /\b(expr|e_preview|enabled|auth(id)?|name|group|true|false|attachments|date|equal|match|exists|ontrail)\b/g,
+      special, /[[\]()]+/g ],
+    ['tmpl', '!meta>=keyword', /(\(:template[^\S\r\n]+)(\S.*?)(:\))/g,
+      /^([ !]*)(each|first|last|defaults?|requires?|none)/],
+    ['rdir', '!meta', /(\(:redirect)(.*?)(:\))/g],
+
+    // urls can have percents so before wikistyle (populated by InterMap)
+    ['ttip', '=escaped', /(\[\[)(.*?\S)(?= *(?:\||\]\]))/g,  /(")(.*)(")$/ ], // tooltop
+    ['link0', '=escaped', /\[\[.*?\S(?= *(?:\||\]\]))/g, /(\()(.*?)(\))/g],// hidden
+    ['_url'],
+
+    // wikistyles
+    ['ws0', '*meta', /%%|^>><</gm],
+    ['ws1', '!meta', /(^>>\w[-\w]*)(.*?)(<<)/gm],
+    ['ws2', '!meta', /(%(?:define|apply)=\w+)(.*?)(%)/gi],
+    ['ws3', '!meta', /(%\w[-\w]*)(.*?)(%)/g],
+
+    // directives, forms
+    ['form', '!directive>keyword', /(\(:input[^\S\r\n]+)(\S.*?)(:\))/g,
+      /^((pm)?form|text(area)?|radio|checkbox|select|email|tel|number|default|submit|reset|hidden|password|search|url|date|datalist|file|image|reset|button|e_\w+|captcha|end)/],
+    ['dir0', '*directive', /\(:\w[-\w]* *:\)/g], // simple
+    ['dir1', '!directive', /(\(:\w[-\w]*)(.*?)(:\))/g], // with attributes
+
+    // inline
+    ['link', 'punct', /(\[\[[\#!~]?|([#+][^\S\r\n]*)?\]\])/g], // link
+
+    // list item, initial space, indent, linebreak
+    ['bullet', '*bullet', /^([^\S\r\n]*([*#]+)[^\S\r\n]*|-+[<>][^\S\r\n]*|[^\S\r\n]+)/mg],
+
+    ['QA', '*heading', /^([QA]:|-{4,})/mg], //Q:/A:, horizontal rule
+    ['prop', 'meta',   /^[A-Z][-_a-zA-Z0-9]*:/mgi], // property, or start of line PTV
+
+    // inline punctuation; entity
+    ['time',  '=mx>string>var',   /(@)([\d-]{10}T\d\d:\d\d(?::\d\d)?)(Z)/g, /^[\d-]+/, /[\d:]+$/],
+    ['punct',  'punct',   /('[\^_+-]|[\^_+-]'|\{[+-]+|[+-]+\}|\[[+-]+|[+-]+\]|@@|'''''|'''|''|->|~~~~?)/g],
+    ['entity', 'string',  /[&]\#?\w+;/g],
+
+    // simple tables
+    ['tablecapt', '=table', /^(\|\|!)(.+)(!\|\|)$/mg],
+    ['tablerow',  '!table', /^\|\|.*\|\|.*$/mg, /((?:\|\|)+)(!?)/g],
+    ['tableattr', '!table', /^(\|\|)(.*)($)/mg],
+
+    // wikitrails
+    ['trail1', '=url', /(<<?\|)(.*?)(\|>>?)/g],
+    ['trail2', '=url', /(\^\|)(.*?)(\|\^)/g],
+
+    ['pipe', 'punct', /\|/g], // inline, after trails
+
+    // may contain inline markup
+    ['deflist', '=bullet', /^([:]+)(.*?)([:])/mg],
+    ['heading', '=heading', /^(!{1,6})(.*)($)/mg],
+
+    ['cleanup', PHSC, /[<>&]+/g],// raw HTML/XSS
+    ['restore', '.restore', restoreRX],
+    ['_end']
+  ];
+  var custom_hrx = {}, sorted_hrx = [];
+  var hl = hrx.length;
+  for(var i=0; i<hl; i++) {
+    custom_hrx[ hrx[i][0] ] = [];
+    custom_hrx[ '>'+hrx[i][0] ] = [];
+  }
+
+  function PmHi(text){
+    var KPV = [];
+    function Restore(all, n) { return KPV[parseInt(n)]; }
+    function keep0(text) {
+      if(text === '') return '';
+      KPV.push(text.replace(restoreRX, Restore));
+      return KeepToken+(KPV.length-1)+KeepToken;
+    }
+    function Keep(text, cname) {
+      if(!text) return '';
+      text = span(cname, text);
+      return keep0(text);
+    }
+    function Keep5(parts, cname) {
+      var mode = cname.charAt(0);
+      var attr = parts[4] || mode == '!' ? true:false;
+      var out = '';
+      if(parts[0]) out += span('tag', parts[0]);
+      if(parts[1]) out += attr ? hattr(parts[1]) : PHSC(parts[1]);
+      if(parts[2]) out += span('tag', parts[2]);
+      if(parts[3]) out += mode == '!' ? hattr(parts[3]) : PHSC(parts[3]);
+      if(parts[4]) out += span('tag', parts[4]);
+      if(!out) return '';
+      else out = span(cname.slice(1), out, true);
+      return keep0(out);
+    }
+    function hattr(attr) {
+      if(! attr) return '';
+      attr = attr.toString()
+      .replace(/(['"])(.*?)\1/g, function(a){ return Keep(a, 'value'); })
+      .replace(/((?:\$:?)?[-\w]+|^)([:=])(\S+)/g, function(a, attr, op, val){
+        if(! val.match(Kept)) val = span('value', val);
+        if(attr) attr = span('attr', attr);
+        return keep0(attr + op + val);
+      })
+      .replace(/(\()(\w+)/g, function(a, attr, expr){
+        return Keep(attr, '*attr')+Keep(expr, 'tag');
+      })
+      .replace(special, function(a){ return Keep(a, '*attr'); });
+      return PHSC(attr);
+    }
+    function external(lang, code) {
+      if(lang.match(/^pm(wiki)?$/i))
+        return keep0(PmHi(code));
+      if (! externalLangs
+        || lang == 'plaintext'
+        || ! lang.match(externalLangs)
+      ) return keep0(PHSC(code));
+      try {
+        var x = hljs.highlight(code, {language:lang, ignoreIllegals:true});
+        return keep0('<code class="hljs language-'+lang+'">'+x.value+'</code>');
+      }
+      catch(e) {
+        return keep0(PHSC(code));
+      }
+    }
+
+    function PmHi1(text, rule){
+      var r = rule[0], s = rule[1];
+      if(r == '.restore') return text.replace(s, Restore);
+      if(typeof r == 'string' && r.indexOf('external')===0) {
+        var b = r.match(/[>]([-\w+]+)/);
+        return text.replace(s, function(a, a1, a2){
+          var lang = b? b[1] : a1;
+          var code = b? a1 : a2;
+          if(!code.match(/\S/)) return a;
+          return a.replace(code, external(lang.toLowerCase(), code));
+        });
+      }
+      if(!!rule[2]) {
+        var m = (typeof r == 'function') ? false : r.split(/[>]/g);
+        if(m && m.length>1) { // parent>nested
+          r = m[0];
+          return text.replace(s, function(a){
+            var b = Array.from(arguments).slice(1, -2);
+            var j = b[4]? 3:1;
+            var ml = m.length;
+            for(var i=1; i<ml; i++) {
+              if(rule[i+1]) b[j] = PmHi1(b[j], [m[i], rule[i+1]]);
+            }
+            return Keep5(b, r);
+          });
+        }
+        else { // one classname, return match only_in_container
+          return text.replace(s, function(a){
+            return PmHi1(a, [r, rule[2]]);
+          });
+        }
+      }
+      if(typeof r == 'function') text = text.replace(s, r);
+      else text = text.replace(s, function(a){
+        var b = Array.from(arguments).slice(1, -2);
+        if(r.match(/^[=!]/)) return Keep5(b, r);
+        else return Keep(a, r);
+      });
+      return text;
+    }
+    var sl = sorted_hrx.length;
+    for(var i=0; i<sl; i++) {
+      var rule = sorted_hrx[i];
+      if(rule.length<2)  continue; // _begin, _end
+      text = PmHi1(text, rule);
+    }
+    return text;
+  }
+
+  function PmHiEl(el){
+    el.innerHTML = PmHi(el.textContent);
+    el.classList.add('pmhlt');
+  }
+
+  function PmHiAll(){
+    var hlt = dqsa('.hlt.pm, .hlt.pmwiki, .highlight.pm, .highlight.pmwiki');
+    var hl = hlt.length;
+    for(var i=0; i< hl; i++) hlt[i].className = 'pmhlt';
+    var pm = dqsa('table.markup td.markup1 > pre, '
+      + '.pmhlt pre, .pmhlt + pre, .pmhlt code, pre.pmhlt, code.pmhlt');
+    if(! pm.length) return;
+    pm.forEach(PmHiEl);
+    tap('.toggle-pmhlt', toggleStyles);
+  }
+
+  function toggleStyles(e) {
+    e.preventDefault();
+    var c1 = 'pmhlt', c2 = 'pmhlt-disabled';
+    var x = dqsa('.'+c1+',.'+c2);
+    var xl = x.length;
+    for(var i=0; i<xl; i++) {
+      x[i].classList.toggle(c1);
+      x[i].classList.toggle(c2);
+    }
+  }
+
+  function str2rx(str) {
+    if(typeof str.flags == 'string') return str; // regexp
+    if(typeof str != 'string') {
+      log("Not a string", str);
+      return false;
+    }
+    var a = str.match(/^\/(.*)\/([gimsyu]*)$/);
+    var rx = false
+    try {
+      if(a) {
+        rx = new RegExp(a[1], a[2]);
+      }
+      else rx = new RegExp(str, 'g');
+    }
+    catch(e) {
+      log('Could not create RegExp.', str);
+    }
+    if(rx) {
+      if(rx.source.match(/\[(\\s\\S)|(\\S\\s)\]/)) {
+        PreserveMultilineArray.push(rx.source);
+      }
+      return rx;
+    }
+  }
+
+  var _script, PreserveMultilineArray = [], PreserveMultiline = false;
+  function sortRX(){
+    _script = dqs('script[src*="pmwiki.syntax.js"]');
+    var cm = (window.PmSyntaxCustomMarkup)? window.PmSyntaxCustomMarkup : [];
+    var imaps =  [_script.dataset.imap];
+    var custom = _script.dataset.custom;
+    if(custom) {
+      try {
+        var list = JSON.parse(_script.dataset.custom);
+      }
+      catch(e) {
+        log("Parsing custom rules failed.", _script.dataset.custom);
+        var list = [];
+      }
+      var ll = list.length;
+      for(var i=0; i<ll; i++) {
+        var rule = list[i];
+        if(typeof rule == 'string') rule = rule.trim().split(/\s{2,}/g);
+        if(rule[0]=='InterMap') {
+          imaps.push(rule[1]);
+          continue;
+        }
+        var rl = rule.length;
+        for(var j=2; j<rl; j++) {
+          var r = str2rx(rule[j]);
+          if(r) rule[j] = r;
+        }
+        cm.push(rule);
+      }
+    }
+    var uec = '<>"{}|\\\\^`()[\\]\'';
+    cm.push(['>_url', 'url', new RegExp(
+      '\\b(' +imaps.join('|')+ ')[^\\s'+uec+']*[^\\s.,?!'+uec+']', 'g'
+    )]);
+    var cml = cm.length;
+    for(var i=0; i<cml; i++) {
+      var key = cm[i][0].replace(/^</, '');
+      if(custom_hrx.hasOwnProperty(key)) custom_hrx[key].push(cm[i].slice(1));
+      else log('No rule name to attach to.', cm[i]);
+    }
+    sorted_hrx = [];
+    var hrxl = hrx.length;
+    for(var i=0; i<hrxl; i++) {
+      var key = hrx[i][0];
+      var keys = [key, '>'+key];
+      for(var k=0; k<2; k++) {
+        if(k) sorted_hrx.push(hrx[i].slice(1));
+        var kk = keys[k];
+        var chl = custom_hrx[kk].length;
+        for(var j=0; j<chl; j++) {
+          sorted_hrx.push(custom_hrx[kk][j]);
+        }
+      }
+    }
+    if(PreserveMultilineArray.length) {
+      PreserveMultiline = new RegExp('('+PreserveMultilineArray.join('|')+')', 'g');
+    }
+  }
+
+  function initEditForm(){
+    if(!_script || !_script.dataset.mode.match(/^[23]$/)) return;
+    var text = dqs('#wikiedit textarea#text');
+    if(!text) return;
+               
+    var defaultEnabled = _script.dataset.mode == '3'? 1: 0;
+
+    var lastTextParts = [];
+    var lastTextContent = false;
+    var hltEnabled = false;
+    var EnableStopwatch = localStorage.getItem('EnablePmSyntaxStopwatch')? true:false;
+    var resizeObserver;
+
+    function average(arr) {
+      return arr.reduce(function(a, b){ return a+b; }, 0) / arr.length;
+    }
+    var perf = [];
+    var t0 = 0;
+    
+    function stopwatch(end) {
+      if(!EnableStopwatch) return;
+      var t1 = performance.now();
+      if(!end) {
+        t0 = t1;
+        return;
+      }
+      var dt = t1 - t0;
+      perf.push(dt);
+      var avg = average(perf).toFixed(2);
+      if(perf.length%10 == 0) console.log(`PmSyntax ${dt} ms, ${avg} ms average from ${perf.length}.`);
+    }
+  
+    function updatePre() {
+      if(!hltEnabled) return;
+      var tc = text.value;
+      if(tc===lastTextContent) return;
+
+      stopwatch();
+      var parts = splitParts(tc);
+      if(!parts.length) parts = [''];
+      
+      if(lastTextParts.length==0) {
+        var out = parts.map(mapHi).join('') + '\n';
+        htext.insertAdjacentHTML('afterbegin', out);
+        var juststarted = 1;
+      }
+      else {
+        var diff = diffParts(parts);
+        var spans = htext.children;
+        for(var i=0; i<diff.count; i++) {
+          htext.removeChild(spans[diff.first]);
+        }
+        if(diff.add) {
+          if(spans[diff.first]) spans[diff.first].insertAdjacentHTML('beforebegin', diff.add);
+          else if(spans[diff.first-1]) spans[diff.first-1].insertAdjacentHTML('afterend', diff.add);
+          else htext.insertAdjacentHTML('afterbegin', diff.add);
+        }
+      }
+      lastTextContent = tc;
+      lastTextParts = parts;
+      textScrolled();
+      stopwatch(true);
+      if(juststarted) perf = [];
+    }
+    
+    function mapHi(x) {
+      if(x!=='' && x.charAt(0) !== '\n') x = PmHi(x);
+      return '<span>'+x+'</span>';
+    }
+    
+    function splitParts(value) {
+      var kept = [];
+      function keep(a, a1){
+        kept.push(restore(a1));
+        return '\034\034' + (kept.length - 1) + '\034\034';
+      };
+      function restore(str) {
+        return str.replace(/\034\034(\d+)\034\034/g, function(a, a1){
+          return kept[parseInt(a1)];
+        });
+      }
+      // keep escaped blocks
+      value = value
+        .replace(/(\[([@=])[\s\S]*?\2\]|\(:[-\w]+ *:(?!\))[\s\S]*?:\)|\\\n)/g, keep);
+      if(PreserveMultiline) {
+        value = value.replace(PreserveMultiline, keep);
+      }
+      
+      var parts = value.split(/(\n+)/).filter(Boolean);
+      for(var i=0; i<parts.length; i++) {
+        parts[i] = restore(parts[i]);
+      }
+      return parts;
+    }
+    function diffParts(parts) {
+      var ll = lastTextParts.slice(0), pp = parts.slice(0), firstchanged = 0;
+      while(ll.length && pp.length) {
+        if(ll[0] !== pp[0]) break;
+        ll.shift(); pp.shift();
+        firstchanged++;
+      }
+      ll.reverse(); pp.reverse();
+      while(ll.length && pp.length) {
+        if(ll[0] !== pp[0]) break;
+        ll.shift(); pp.shift();
+      }
+      var add = pp.reverse().map(mapHi).join('');
+      return {first:firstchanged, count:ll.length, newcount:pp.length, add:add};
+    }
+    
+    function textScrolled() {
+      if(!hltEnabled) return;
+      if(ignoreTextScrolled) return;
+
+      if(ignorePreScrolled) clearTimeout(ignorePreScrolled-1);
+      ignorePreScrolled = 1 + setTimeout(nullIPS, 100);
+      htext.scrollTop = text.scrollTop;
+      htext.scrollLeft = text.scrollLeft;
+    }
+    var ignoreTextScrolled = false, ignorePreScrolled = false;
+    function preScrolled() { // browser's in-page search
+      if(!hltEnabled) return;
+      if(ignorePreScrolled) return;
+      if(ignoreTextScrolled) clearTimeout(ignoreTextScrolled-1);
+      ignoreTextScrolled = 1 + setTimeout(nullITS, 100);
+      text.scrollTop = htext.scrollTop;
+      text.scrollLeft = htext.scrollLeft;
+    }
+    function nullITS(){ignoreTextScrolled = false;}
+    function nullIPS(){ignorePreScrolled = false;}
+    function dragstart(e) { this.classList.add('dragging'); }
+    function dragend(e) { this.classList.remove('dragging'); }
+
+    function resizePre() {
+      if(!hltEnabled) return;
+      var rect = text.getBoundingClientRect();
+      var w = Math.floor(rect.width) + 'px', h = Math.floor(rect.height) + 'px';
+      text.style.width = w;
+      text.style.height = h;
+      htext.style.width = w;
+      htext.style.height = h;
+      textScrolled();
+    }
+
+    function initPre() {
+      text.insertAdjacentHTML('beforebegin', '<div id="hwrap"><div id="htext" class="pmhlt"></div></div>');
+      hwrap.appendChild(text);
+      updatePre();
+      resizePre();
+
+      htext.inert = true;
+      htext.style.textAlign =  window.getComputedStyle(text, null).getPropertyValue('text-align');
+      htext.addEventListener('scroll', preScrolled);
+      
+      text.addEventListener('scroll', textScrolled);
+      text.addEventListener('dragstart', dragstart);
+      text.addEventListener('dragend', dragend);
+
+      resizeObserver = new ResizeObserver(resizePre);
+      resizeObserver.observe(text);
+    }
+    
+    function storeEnabled(enabled) {
+      if(enabled != defaultEnabled) localStorage.setItem('EnableHighlight', enabled);
+      else localStorage.removeItem('EnableHighlight');
+    }
+
+    function EnableHighlight() {
+      if(chk_hlt.classList.contains('pmhlt')) {
+        hltEnabled = true;
+        storeEnabled(1);
+        updatePre();
+        resizePre();
+        text.addEventListener('input', updatePre);
+      }
+      else {
+        hltEnabled = false;
+        lastTextContent = false;
+        storeEnabled(0);
+        text.removeEventListener('input', updatePre);
+      }
+    }
+
+    function initToggle(x){
+      var form = text.closest('form');
+      form.insertAdjacentHTML('afterbegin', '<code id="chk_hlt">'
+        + '<span class="pmpunct">[[</span><span class="pmurl">'
+        + _script.dataset.label
+        + '</span><span class="pmpunct">]]</span>'
+        + '</code>');
+
+      initPre();
+      var enabled = parseInt(localStorage.getItem('EnableHighlight') || defaultEnabled);
+      if(enabled) {
+        chk_hlt.classList.add('pmhlt');
+        EnableHighlight();
+      }
+      tap([chk_hlt], function(e){
+        this.classList.toggle('pmhlt');
+        EnableHighlight();
+      });
+    }
+    initToggle();
+  }
+
+  var externalLangs = false;
+  function initExtLangs() {
+    if(typeof hljs == 'undefined') return;
+    var langs = hljs.listLanguages();
+    var aliases = langs.slice(0);
+    var ll = langs.length
+    for(var i=0; i<ll; i++) {
+      var l = hljs.getLanguage(langs[i]);
+      if(l.aliases) aliases = aliases.concat(l.aliases);
+    }
+    externalLangs = new RegExp('^('+aliases.join('|').replace(/[+]/g, '\\+')+')$', 'i');
+  }
+
+  document.addEventListener('DOMContentLoaded', function(){
+    sortRX();
+    initExtLangs();
+    PmHiAll();
+    initEditForm();
+  });
+})();
+
blob - /dev/null
blob + baefe3fac66bad6eb9ad3f4d46f0db4c3a4fe17d (mode 644)
Binary files /dev/null and pub/guiedit/preview.gif differ
blob - /dev/null
blob + 689a22a64b145942fe9c25b2a0ff4e1975e57435 (mode 644)
Binary files /dev/null and pub/guiedit/right.gif differ
blob - /dev/null
blob + 1e734b698f2ff419e0acd8f1775c4c6456563a0e (mode 644)
Binary files /dev/null and pub/guiedit/save.gif differ
blob - /dev/null
blob + add9870a9ab1a7ec7f0511b4640fe0b2b33dc9d0 (mode 644)
Binary files /dev/null and pub/guiedit/small.gif differ
blob - /dev/null
blob + b1ab46afbd2c01d3293d2ef543449508605d9ee5 (mode 644)
Binary files /dev/null and pub/guiedit/spellcheck.gif differ
blob - /dev/null
blob + 47fd9a2f0ac4fd35142918dd1e69b4363190e22b (mode 644)
Binary files /dev/null and pub/guiedit/strong.gif differ
blob - /dev/null
blob + c5acc181ac6ecb69a37616987ec4a9a24b34a682 (mode 644)
Binary files /dev/null and pub/guiedit/sub.gif differ
blob - /dev/null
blob + a14c7662f092bc9e4db087c3534e8e6fafaf2029 (mode 644)
Binary files /dev/null and pub/guiedit/sup.gif differ
blob - /dev/null
blob + d0bad0f374f569fd640206715bc859eaa97dbfcc (mode 644)
Binary files /dev/null and pub/guiedit/table.gif differ
blob - /dev/null
blob + 6c31b5c1d8c8e3b792133f4f1934f13152eaa874 (mode 644)
Binary files /dev/null and pub/guiedit/ul.gif differ
blob - /dev/null
blob + 1399a413a6b8cc810304ef617648dc8eaaadb2c8 (mode 644)
Binary files /dev/null and pub/guiedit/underline.gif differ
blob - /dev/null
blob + baa229b42576ffa4ae53c7a26b15db613fe07c4a (mode 644)
--- /dev/null
+++ pub/pmwiki-utils.js
@@ -0,0 +1,531 @@
+/*
+  JavaScript utilities for PmWiki
+  (c) 2009-2022 Petko Yotov www.pmwiki.org/petko
+  based on PmWiki addons DeObMail, AutoTOC and Ape
+  licensed GNU GPLv2 or any more recent version released by the FSF.
+
+  libsortable() "Sortable tables" adapted for PmWiki from
+  a Public Domain event listener by github.com/tofsjonas
+*/
+
+(function(){
+  function aE(el, ev, fn) {
+    if(typeof el == 'string') el = dqsa(el);
+    for(var i=0; i<el.length; i++) el[i].addEventListener(ev, fn);
+  }
+  function dqs(str)  { return document.querySelector(str); }
+  function dqsa(str) { return document.querySelectorAll(str); }
+  function tap(q, fn) { aE(q, 'click', fn); };
+  function pf(x) {var y = parseFloat(x); return isNaN(y)? 0:y; }
+  function zpad(n) {return (n<10)?"0"+n : n; }
+  function adjbb(el, html) { el.insertAdjacentHTML('beforebegin', html); }
+  function adjbe(el, html) { el.insertAdjacentHTML('beforeend', html); }
+  function adjab(el, html) { el.insertAdjacentHTML('afterbegin', html); }
+  function adjae(el, html) { el.insertAdjacentHTML('afterend', html); }
+  function getLS(key, parse) { 
+    var x = window.localStorage.getItem(key)|| null;
+    return parse ? JSON.parse(x) : x;}
+  function setLS(key, value) { 
+    if (typeof value == 'object') value = JSON.stringify(value);
+    window.localStorage.setItem(key, value);}
+  function PHSC(x) { return x.replace(/[&]/g, '&amp;').replace(/[<]/g, '&lt;').replace(/[>]/g, '&gt;'); }
+
+  var __script__, wikitext;
+  var log = console.log;
+
+  function PmXMail() {
+    var els = document.querySelectorAll('span._pmXmail');
+    var LinkFmt = '<a href="%u" class="mail">%t</a>';
+
+    for(var i=0; i<els.length; i++) {
+      var x = els[i].querySelector('span._t');
+      var txt = cb_mail(x.innerHTML);
+      var y = els[i].querySelector('span._m');
+      var url = cb_mail(y.innerHTML.replace(/^ *-&gt; */, ''));
+
+      if(!url) url = 'mailto:'+txt.replace(/^mailto:/, '');
+
+      url = url.replace(/"/g, '%22').replace(/'/g, '%27');
+      var html = LinkFmt.replace(/%u/g, url).replace(/%t/g, txt);
+      els[i].innerHTML = html;
+    }
+  }
+  function cb_mail(x){
+    return x.replace( /<span class=(['"]?)_d\1>[^<]+<\/span>/ig, '.')
+      .replace( /<span class=(['"]?)_a\1>[^<]+<\/span>/ig, '@');
+  }
+
+  function is_toc_heading(el) {
+    if(el.offsetParent === null) {return false;}  // hidden
+    if(el.closest('.notoc,.markup2')) {return false;} 
+    return true;
+  }
+  function posy(el) {
+    var top = 0;
+    if (el.offsetParent) {
+      do {
+        top += el.offsetTop;
+      } while (el = el.offsetParent);
+    }
+    return top;
+  }
+
+  function any_id(h) {
+    if(h.id) {return h.id;} // %id=anchor%
+    var a = h.querySelector('a[id]'); // inline [[#anchor]]
+    if(a && a.id) {return a.id;}
+    var prev = h.previousElementSibling;
+    if(prev) { // [[#anchor]] before !!heading
+      var a = prev.querySelectorAll('a[id]');
+      if(a.length) {
+        last = a[a.length-1];
+        if(last.id && ! last.nextElementSibling) {
+          var atop = posy(last) + last.offsetHeight;
+          var htop = posy(h);
+          if( Math.abs(htop-atop)<20 ) {
+            h.appendChild(last);
+            return last.id;
+          }
+        }
+      }
+    }
+    return false;
+  }
+  function inittoggle() {
+    var tnext = __script__.dataset.toggle;
+    if(! tnext) { return; }
+    var x = dqsa(tnext);
+    if(! x.length) return;
+    for(var i=0; i<x.length; i++) togglenext(x[i]);
+    tap(tnext, togglenext);
+    tap('.pmtoggleall', toggleall);
+  }
+  function togglenext(z) {
+    var el = z.type == 'click' ? this : z;
+    var attr = el.dataset.pmtoggle=='closed' ? 'open' : 'closed';
+    el.dataset.pmtoggle = attr;
+  }
+  function toggleall(){
+    var curr = this.dataset.pmtoggleall;
+    if(!curr) curr = 'closed';
+    var toggles = dqsa('*[data-pmtoggle="'+curr+'"]');
+    var next = curr=='closed' ? 'open' : 'closed';
+    for(var i=0; i<toggles.length; i++) {
+      toggles[i].dataset.pmtoggle = next;
+    }
+    var all = dqsa('.pmtoggleall');
+    for(var i=0; i<all.length; i++) {
+      all[i].dataset.pmtoggleall = next;
+    }
+  }
+
+  function autotoc() {
+    if(dqs('.noPmTOC')) { return; } // (:notoc:) in page
+    var dtoc = __script__.dataset.pmtoc;
+    try {dtoc = JSON.parse(dtoc);} catch(e) {dtoc = false;}
+    if(! dtoc) { return; } // error
+
+    if(! dtoc.Enable || !dtoc.MaxLevel) { return; } // disabled
+
+    if(dtoc.NumberedHeadings)  {
+      var specs = dtoc.NumberedHeadings.toString().split(/\./g);
+      for(var i=0; i<specs.length; i++) {
+        if(specs[i].match(/^[1AI]$/i)) numheadspec[i] = specs[i];
+      }
+    }
+
+    var query = [];
+    for(var i=1; i<=dtoc.MaxLevel; i++) {
+      query.push('h'+i);
+    }
+    if(dtoc.EnableQMarkup) query.push('p.question');
+    var pageheadings = wikitext.querySelectorAll(query.join(','));
+    if(!pageheadings.length) { return; }
+
+    var toc_headings = [ ];
+    var minlevel = 1000, hcache = [ ];
+    for(var i=0; i<pageheadings.length; i++) {
+      var h = pageheadings[i];
+      if(! is_toc_heading(h)) {continue;}
+      toc_headings.push(h);
+    }
+    if(! toc_headings.length) return;
+
+    var tocdiv = dqs('.PmTOCdiv');
+    var shouldmaketoc = ( tocdiv || (toc_headings.length >= dtoc.MinNumber && dtoc.MinNumber != -1)) ? 1:0;
+    if(!dtoc.NumberedHeadings && !shouldmaketoc) return;
+
+    for(var i=0; i<toc_headings.length; i++) {
+      var h = toc_headings[i];
+      var level = pf(h.tagName.substring(1));
+      if(! level) level = 6;
+      minlevel = Math.min(minlevel, level);
+      var id = any_id(h);
+      hcache.push([h, level, id]);
+    }
+
+    prevlevel = 0;
+    var html = '';
+    for(var i=0; i<hcache.length; i++) {
+      var hc = hcache[i];
+      var actual_level = hc[1] - minlevel;
+//       if(actual_level>prevlevel+1) actual_level = prevlevel+1;
+//       prevlevel = actual_level;
+
+      var currnb = numberheadings(actual_level);
+      if(! hc[2]) {
+        hc[2] = 'toc-'+currnb.replace(/\.+$/g, '');
+        hc[0].id = hc[2];
+      }
+      if(dtoc.NumberedHeadings && currnb.length) adjab(hc[0], currnb+' ');
+
+      if(! shouldmaketoc) { continue; }
+      var txt = hc[0].textContent.trim().replace(/</g, '&lt;');
+      var sectionedit = hc[0].querySelector('.sectionedit');
+      if(sectionedit) {
+        var selength = sectionedit.textContent.length;
+        txt = txt.slice(0, -selength);
+      }
+      
+      html += '<a class="pmtoc-indent'+ actual_level
+        + '" href="#'+hc[2]+'">' + txt + '</a>\n';
+      if(dtoc.EnableBacklinks) 
+        adjbe(hc[0], ' <a class="back-arrow" href="#_toc">&uarr;</a>');
+      
+    }
+
+    if(! shouldmaketoc) return;
+
+    html = "<b>"+dtoc.contents+"</b> "
+      +"[<input type='checkbox' id='PmTOCchk'><label for='PmTOCchk'>"
+      +"<span class='pmtoc-show'>"+dtoc.show+"</span>"
+      +"<span class='pmtoc-hide'>"+dtoc.hide+"</span></label>]"
+      +"<div class='PmTOCtable'>" + html + "</div>";
+
+    if(!tocdiv) {
+      var wrap = "<div class='PmTOCdiv'></div>";
+      if(dtoc.ParentElement && dqs(dtoc.ParentElement)) {
+        adjab(dqs(dtoc.ParentElement), wrap);
+      }
+      else {
+        adjbb(hcache[0][0], wrap);
+      }
+      tocdiv = dqs('.PmTOCdiv');
+
+    }
+    if(!tocdiv) return; // error?
+    tocdiv.className += " frame";
+    tocdiv.id = '_toc';
+
+    tocdiv.innerHTML = html;
+
+    if(getLS('closeTOC')) { dqs('#PmTOCchk').checked = true; }
+    aE('#PmTOCchk', 'change', function(e){
+      setLS('closeTOC', this.checked ? "close" : '');
+    });
+
+    var hh = location.hash;
+    if(hh.length>1) {
+      var cc = document.getElementById(hh.substring(1));
+      if(cc) cc.scrollIntoView();
+    }
+  }
+
+  var numhead = [0, 0, 0, 0, 0, 0, 0];
+  var numheadspec = '1 1 1 1 1 1 1'.split(/ /g);
+  function numhead_alpha(n, upper) {
+    if(!n) return '_';
+    var alpha = '', mod, start = upper=='A' ? 65 : 97;
+    while (n>0) {
+      mod = (n-1)%26;
+      alpha = String.fromCharCode(start + mod) + '' + alpha;
+      n = (n-mod)/26 | 0;
+    }
+    return alpha;
+  }
+  function numhead_roman(n, upper) {
+    if(!n) return '_';
+    // partially based on http://blog.stevenlevithan.com/?p=65#comment-16107
+    var lst = [ [1000,'M'], [900,'CM'], [500,'D'], [400,'CD'], [100,'C'], [90,'XC'],
+      [50,'L'], [40,'XL'], [10,'X'], [9,'IX'], [5,'V'], [4,'IV'], [1,'I'] ];
+    var roman = '';
+    for(var i=0; i<lst.length; i++) {
+      while(n>=lst[i][0]) {
+        roman += lst[i][1];
+        n -= lst[i][0];
+      }
+    }
+    return (upper == 'I') ? roman : roman.toLowerCase();
+  }
+
+  function numberheadings(n) {
+    if(n<numhead[6]) for(var j=numhead[6]; j>n; j--) numhead[j]=0;
+    numhead[6]=n;
+    numhead[n]++;
+    var qq = '';
+    for (var j=0; j<=n; j++) {
+      var curr = numhead[j];
+      var currspec = numheadspec[j];
+      if(currspec.match(/a/i)) { curr = numhead_alpha(curr, currspec); }
+      else if(currspec.match(/i/i)) { curr = numhead_roman(curr, currspec); }
+
+      qq+=curr+".";
+    }
+    return qq;
+  }
+
+  function makesortable() {
+    if(! pf(__script__.dataset.sortable)) return;
+    var tables = dqsa('table.sortable,table.sortable-footer');
+    for(var i=0; i<tables.length; i++) {
+      // non-pmwiki-core table, already ready
+      if(tables[i].querySelector('thead')) continue;
+
+      tables[i].classList.add('sortable'); // for .sortable-footer
+
+      var thead = document.createElement('thead');
+      tables[i].insertBefore(thead, tables[i].firstChild);
+
+      var rows = tables[i].querySelectorAll('tr');
+      thead.appendChild(rows[0]);
+      var tbody = tables[i].querySelector('tbody');
+      if(! tbody) {
+        tbody = tables[i].appendChild(document.createElement('tbody'));
+        for(var r=1; r<rows.length; r++) tbody.appendChild(rows[r]);
+      }
+      if(tables[i].className.match(/sortable-footer/)) {
+        var tfoot = tables[i].appendChild(document.createElement('tfoot'));
+        tfoot.appendChild(rows[rows.length-1]);
+      }
+      mkdatasort(rows);
+    }
+    libsortable();
+  }
+  function mkdatasort(rows) {
+    var hcells = rows[0].querySelectorAll('th,td');
+    var specialsort = [], span;
+    for(var i=0; i<hcells.length; i++) {
+      sortspan = hcells[i].querySelector('.sort-number,.sort-number-us,.sort-date');
+      if(sortspan) specialsort[i] = sortspan.className;
+    }
+    if(! specialsort.length) return;
+    for(var i=1; i<rows.length; i++) {
+      var cells = rows[i].querySelectorAll('td,th');
+      var k = 0;
+      for(var j=0; j<cells.length && j<specialsort.length; j++) {
+        if(! specialsort[j]) continue;
+        var t = cells[j].innerText, ds = '';
+        if(specialsort[j] == 'sort-number-us') {ds = t.replace(/[^-.\d]+/g, ''); }
+        else if(specialsort[j] == 'sort-number') {ds = t.replace(/[^-,\d]+/g, '').replace(/,/g, '.'); }
+        else if(specialsort[j] == 'sort-date') {ds = new Date(t).getTime(); }
+        if(ds) cells[j].setAttribute('data-sort', ds);
+      }
+    }
+  }
+  function libsortable(){
+    // adapted from Public Domain code by github.com/tofsjonas
+    function getValue(obj) {
+      obj = obj.cells[column_index];
+      return obj.getAttribute('data-sort') || obj.innerText;
+    }
+    function reclassify(element, cname) {
+      element.classList.remove('dir-u', 'dir-d');
+      if(cname) element.classList.add(cname);
+    }
+    var column_index;
+    document.addEventListener('click', function(e) {
+      if(e.target.closest('a')) return; // links
+      var element = e.target.closest('th');
+      if (! element) return;
+      var table = element.offsetParent;
+      if (!table.classList.contains('sortable')) return;
+                              
+      var cells = element.parentNode.cells;
+      for (var i = 0; i < cells.length; i++) {
+        if (cells[i] === element) {
+          column_index = i;
+        } else {
+          reclassify(cells[i], '');
+        }
+      }
+      var cname = 'dir-d', reverse = false;
+      if (element.classList.contains(cname)) {
+        cname = 'dir-u';
+        reverse = true;
+      }
+      reclassify(element, cname);
+      var tbody = table.tBodies[0];
+      var rows = [];
+      for(var r=0; r<tbody.rows.length; r++) rows.push(tbody.rows[r]);
+      
+      rows.sort(function(x, y) {
+        var a = getValue(reverse? y:x),
+            b = getValue(reverse? x:y);
+        var c = a.localeCompare(b, undefined, {numeric: true, sensitivity: 'base'}),
+            d = a - b;
+        return isNaN(d) ? c : d;
+      });
+      for (i = 0; i < rows.length; i++) {
+        tbody.appendChild(rows[i]);
+      }
+    });
+  }
+
+  function highlight_pre() {
+    if(!__script__.dataset.highlight) return;
+    if (typeof hljs == 'undefined') return;
+    
+    var x = dqsa('.highlight,.hlt');
+    
+    for(var i=0; i<x.length; i++) {
+      if(x[i].className.match(/(^| )(pm|pmwiki)( |$)/)) { continue;} // core highlighter
+      var pre = Array.from(x[i].querySelectorAll('pre,code'));
+      var n = x[i].nextElementSibling;
+      if (n && n.tagName == 'PRE') pre.push(n);
+      for(var j=0; j<pre.length; j++) {
+        pre[j].className += ' ' + x[i].className;
+        var varlinks = pre[j].querySelectorAll('a.varlink');
+        var vararray = {};
+        for(var v=0; v<varlinks.length; v++) {
+          vararray[varlinks[v].textContent] = varlinks[v].href;
+        }
+        
+        if(pre[j].children) pre[j].textContent = pre[j].textContent;
+
+        hljs.highlightElement(pre[j]);
+        var hlvars = pre[j].querySelectorAll('span.hljs-variable');
+        for(var v=0; v<hlvars.length; v++) {
+          var hlvar = hlvars[v].textContent;
+          if(vararray.hasOwnProperty(hlvar)) {
+            hlvars[v].innerHTML = '<a class="varlink" href="'+vararray[hlvar]+'">'+hlvar+'</a>';
+          }
+        }
+      }
+    }
+  }
+  
+  var Now, ltmode, daymonth, pagename;
+  function fmtLocalTime(stamp) {
+    var d = new Date(stamp*1000);
+    var tooltip = PHSC(d.toLocaleString());
+    if(ltmode == 2)
+      return [tooltip];
+    if(Now-d < 24*3600000) 
+      return [zpad(d.getHours()) + ':'+ zpad(d.getMinutes()), tooltip];
+    var D = zpad(d.getDate()), M = zpad(d.getMonth()+1);
+    var thedate = daymonth.replace(/%d/, D).replace(/%m/, M);
+    if(Now-d < 334*24*3600000) return [thedate, tooltip];
+    return [thedate + '/' + d.getFullYear(), tooltip];
+  }
+  
+  function localTimes() {
+    ltmode = pf(__script__.dataset.localtimes);
+    if(! ltmode) return;
+    if(ltmode>=11) {
+      var days = Math.floor(ltmode/10);
+      ltmode = ltmode%10;
+    }
+    else var days = 3;
+    Now = new Date();
+    pagename = __script__.dataset.fullname;
+    var seenstamp = getLS('seenstamp', true);
+    if(!seenstamp) seenstamp = {};
+    var previous = seenstamp[pagename];
+    
+    var times = dqsa('time[datetime]');
+
+    daymonth =  new Date(2021, 11, 26, 17)
+      .toLocaleDateString().match(/26.*12/)? '%d/%m': '%m/%d';
+    
+    var h72 = Now.getTime()/1000-days*24*3600;
+    
+    for(var i=0; i<times.length; i++) {
+      var itemdate = new Date(times[i].dateTime);      
+      var stamp = Math.floor(itemdate.getTime()/1000);
+      
+      var li = times[i].closest('li');
+      if (!li || !li.innerHTML.match(/<\/a>  \. \. \. /)) {
+        var x = fmtLocalTime(stamp);
+        times[i].innerHTML = x[0];
+        times[i].title = x[1] ? x[1]: itemdate.textContent;
+        continue;
+      }
+      var link = li.querySelector('a');
+      if(link.className.match(/createlinktext|wikilink|selflink/)) {
+        var diff = link.href + '?action=diff#diff' + stamp;
+        if(stamp >= h72) {
+          var h = link.href + '?action=diff&fmt=rclist';
+          adjbe(li, ' <b class="rcplus" data-url="'+h+'">+</b>');
+        }
+      }
+      // recent uploads, other? we want to know when the link becomes "visited"
+      else diff = link.href + '#diff' + stamp; 
+      times[i].innerHTML = '<a href="'+diff+'">'+times[i].innerHTML+'</a>';
+    }
+
+    var difflinks = dqsa('a[href*="#diff"]'), diffcnt = 0;
+    for(var i=0; i<difflinks.length; i++) {
+      var link = difflinks[i];
+      if(link.hostname != location.hostname) continue;
+      var a = link.href.match(/[#]diff(\d+)$/);
+      if(!a) continue;
+      diffcnt++;
+      stamp = parseInt(a[1]);
+      var x = fmtLocalTime(stamp);
+      
+      link.innerHTML = x[0];
+      link.setAttribute('title', x[1] ? x[1]: link.textContent);
+      
+      var par = link.closest('li');
+      if(!par) continue;
+      par.insertBefore(link, par.firstChild);
+      adjae(link, "&nbsp;&nbsp;");
+      if(previous && stamp>previous) par.classList.add('rcnew');
+    }
+    if(!diffcnt) return;
+    var pagetitle = dqs('#wikititle h1, h1.pagetitle');
+    if(pagetitle) {
+      var time = zpad(Now.getHours()) + ':'+ zpad(Now.getMinutes());
+      adjbe(pagetitle, ' <span class="rcreload" title="Click to reload">'+time+'</span>');
+      tap('.rcreload', function(){location.reload();});
+    }
+    aE('.rcnew', 'mouseup', function(e){
+      if(e.which == 2) this.classList.remove('rcnew');
+    });
+    tap('.rcplus', function(e){
+      var plus = this;
+      plus.style.display = 'none';
+      var basehref = plus.dataset.url.replace(/&fmt=rclist/, '#diff')
+        .replace(/[&]/g, '&amp;');
+      var fmt = '<p class="outdent"><a href="'+basehref+'%d" title="%T">%t</a> %s</p>\n';
+      fetch(plus.dataset.url)
+      .then(function(resp){return resp.text();})
+      .then(function(text){
+        var lines = text.split(/\n/g);
+        var out = '';
+        for(var i=0; i<lines.length; i++) {
+          a = lines[i].match(/^(\d+):(.*)$/);
+          if(!a) continue;
+          var time = fmtLocalTime(pf(a[1]));
+          out += fmt.replace(/%d/, a[1]).replace(/%T/, time[1])
+            .replace(/%t/, time[0]).replace(/%s/, a[2]);
+        }
+        if(out) adjae(plus, out);
+      })
+      .catch(log);
+    });
+    if(dqs('form[name="authform"]') || location.href.match(/action=/)) return;
+    seenstamp[pagename] = Math.floor(Now.getTime()/1000);
+    setLS('seenstamp', seenstamp);
+  }
+
+  function ready(){
+    __script__ = dqs('script[src*="pmwiki-utils.js"]');
+    wikitext = document.getElementById('wikitext');
+    var fn = [autotoc, inittoggle, PmXMail, localTimes, highlight_pre, makesortable];
+    fn.forEach(function(a){a();});
+  }
+  if( document.readyState !== 'loading' ) ready();
+  else window.addEventListener('DOMContentLoaded', ready);
+})();
+
blob - /dev/null
blob + fbc70378c90a391899adacd7ce8b8887fcfb676b (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/color/blue_bold.css
@@ -0,0 +1,29 @@
+

+#nav li a:hover {

+	color: #3366CC;

+	}

+

+#head h2, #head .sitetag {

+	color: #3366CC;

+	}

+

+#right li a:hover, .right2 li a:hover, .sidehead a:hover {

+	color: #3366CC;

+	}

+	

+h2, .date {

+	color: #3366CC;

+	}

+	

+#content a, #content2 a, #foot a, .blogit-listmore a {

+	color: #3366CC;

+	border-bottom: 1px dotted #3366CC;

+	}

+	

+img.content, a img.content {

+	background-color: #3366CC;

+	}

+	

+thead th {

+  color: #3366CC;

+}
\ No newline at end of file
blob - /dev/null
blob + e4257a0d94509c1780d57382a9df2204aabcf9db (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/color/blue_muted.css
@@ -0,0 +1,29 @@
+

+#nav li a:hover {

+	color: #82B0BF;

+	}

+

+#head h2, #head .sitetag {

+	color: #82B0BF;

+	}

+

+#right li a:hover, .right2 li a:hover, .sidehead a:hover {

+	color: #82B0BF;

+	}

+	

+h2 {

+	color: #82B0BF;

+	}

+	

+#content a, #content2 a, #foot a, .blogit-listmore a {

+	color: #82B0BF;

+	border-bottom: 1px dotted #82B0BF;

+	}

+	

+img.content, a img.content {

+	background-color: #D7E4EA;

+	}

+	

+thead th {

+  color: #82B0BF;

+}
\ No newline at end of file
blob - /dev/null
blob + 0e9c7d35a5a6173b05a6af2bba88142ae845f2ac (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/color/green_bold.css
@@ -0,0 +1,29 @@
+

+#nav li a:hover {

+	color: #6C0;

+	}

+

+#head h2, #head .sitetag {

+	color: #6C0;

+	}

+

+#right li a:hover, .right2 li a:hover, .sidehead a:hover {

+	color: #6C0;

+	}

+	

+h2, .date {

+	color: #6C0;

+	}

+	

+#content a, #content2 a, #foot a, .blogit-listmore a {

+	color: #6C0;

+	border-bottom: 1px dotted #6C0;

+	}

+	

+img.content, a img.content{

+	background-color: #6C0;

+	}

+	

+thead th {

+  color: #6C0;

+}
\ No newline at end of file
blob - /dev/null
blob + 3a96819186373e13faefc340d3d979cc1c395134 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/color/green_muted.css
@@ -0,0 +1,29 @@
+

+#nav li a:hover {

+	color: #92BF92;

+	}

+

+#head h2, #head .sitetag {

+	color: #92BF92;

+	}

+

+#right li a:hover, .right2 li a:hover, .sidehead a:hover {

+	color: #92BF92;

+	}

+

+h2, .date {

+	color: #92BF92;

+	}

+

+#content a, #content2 a, #foot a, .blogit-listmore a {

+	color: #92BF92;

+	border-bottom: 1px dotted #92BF92;

+	}

+

+img.content, a img.content {

+	background-color: #D3ECCA;

+	}

+

+thead th {

+  color: #92BF92;

+}

blob - /dev/null
blob + 838b9aa67fe9c84d669326d8e8463f306b2cd44a (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/color/orange_bold.css
@@ -0,0 +1,29 @@
+

+#nav li a:hover {

+	color: #FF9900;

+	}

+

+#head h2, #head .sitetag {

+	color: #FF9900;

+	}

+

+#right li a:hover, .right2 li a:hover, .sidehead a:hover {

+	color: #FF9900;

+	}

+

+h2, .date {

+	color: #FF9900;

+	}

+

+#content a, #content2 a, #foot a, .blogit-listmore a {

+	color: #FF9900;

+	border-bottom: 1px dotted #FF9900;

+	}

+

+img.content, a img.content {

+	background-color: #CC7700;

+	}

+

+thead th {

+  color: #FF9900;

+}

blob - /dev/null
blob + 51af1dc46f428f24c6e3bb037c1e361887cbc0ee (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/color/orange_muted.css
@@ -0,0 +1,29 @@
+

+#nav li a:hover {

+	color: #D89C6B;

+	}

+

+#head h2, #head .sitetag {

+	color: #D89C6B;

+	}

+

+#right li a:hover, .right2 li a:hover, .sidehead a:hover {

+	color: #D89C6B;

+	}

+	

+h2, .date {

+	color: #D89C6B;

+	}

+	

+#content a, #content2 a, #foot a, .blogit-listmore a {

+	color: #D89C6B;

+	border-bottom: 1px dotted #D89C6B;

+	}

+	

+img.content, a img.content {

+	background-color: #E1CC99;

+	}

+	

+thead th {

+  color: #D89C6B;

+  }

blob - /dev/null
blob + 6fed7e728142e22b48aef1d5219f557932f0c189 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/arrow.gif differ
blob - /dev/null
blob + f27ff9d2f596cf64a6058b11ecb221613e3913c0 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/arrow_dark.gif differ
blob - /dev/null
blob + 23c4ab821fd900c07c27c6196502b38a98c947b4 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/bullet.gif differ
blob - /dev/null
blob + 23c4ab821fd900c07c27c6196502b38a98c947b4 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/bullet2.gif differ
blob - /dev/null
blob + e4e82c30a931a827aee3fbf99146e2b7a7f186ee (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/bullet2_dark.gif differ
blob - /dev/null
blob + 29d26fd3e2adfc8685907285c65e9e92c6551675 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/bullet_dark.gif differ
blob - /dev/null
blob + e4b0c4ff5e68b787a6562be5a49e34e23b66d008 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/SIL Open Font License 1.1.txt
@@ -0,0 +1,91 @@
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
blob - /dev/null
blob + cf175e4af6b6816d29931b65f12704d3f6de069f (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/demo.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+
+	<title>Font Face Demo</title>
+	<link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8">
+	<style type="text/css" media="screen">
+		h1.fontface {font: 60px/68px 'NobileRegular', Arial, sans-serif;letter-spacing: 0;}
+
+		p.style1 {font: 18px/27px 'NobileRegular', Arial, sans-serif;}
+		p.style2 {font: 18px/27px 'NobileItalic', Arial, sans-serif;}
+		p.style3 {font: 18px/27px 'NobileBold', Arial, sans-serif;}
+		p.style4 {font: 18px/27px 'NobileBoldItalic', Arial, sans-serif;}
+		
+		#container {
+			width: 800px;
+			margin-left: auto;
+			margin-right: auto;
+		}
+	</style>
+</head>
+
+<body>
+	<div id="container">
+		<h1 class="fontface">Font-face Demo for the Nobile Font</h1>
+	
+	 
+
+	<p class="style1">Nobile Regular - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+
+	 
+
+	<p class="style2">Nobile Italic - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+
+	 
+
+	<p class="style3">Nobile Bold - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+
+	 
+
+	<p class="style4">Nobile Bold Italic - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+
+		</div>
+</body>
+</html>
blob - /dev/null
blob + 4c06b605e25b1d8539a2e652d2c7b14caafd1d43 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile-webfont.eot differ
blob - /dev/null
blob + d08c19fb2b9954b6a6af86d91ba3540c9c7182fe (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile-webfont.svg
@@ -0,0 +1,149 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 20072010 by vernon adams All rights reserved
+Foundry     : vernon adams
+</metadata>
+<defs>
+<font id="webfontsKo9tqe9" horiz-adv-x="942" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="512" />
+<glyph unicode=" "  horiz-adv-x="512" />
+<glyph unicode="&#x09;" horiz-adv-x="512" />
+<glyph unicode="&#xa0;" horiz-adv-x="512" />
+<glyph unicode="!" horiz-adv-x="788" d="M289 1579h227l-57 -1180h-117zM293 -16v202h209v-202h-209z" />
+<glyph unicode="&#x22;" horiz-adv-x="632" d="M37 1507v72h227v-72l-59 -448h-109zM375 1507v72h227v-72l-59 -448h-109z" />
+<glyph unicode="#" horiz-adv-x="1232" d="M229 561v123h177l26 221h-174v125h188l31 279h139l-30 -279h188l29 277h141l-31 -277h160v-125h-172l-27 -221h177v-123h-189l-31 -266h-141l33 266h-186l-33 -266h-142l33 266h-166zM549 684h182l27 221h-183z" />
+<glyph unicode="$" horiz-adv-x="1138" d="M127 930q0 82 39 139q43 61 82 90q88 70 293 80v152h102v-154q164 -4 281 -43q16 -4 28.5 -9t17.5 -8t5 -6l-39 -127q-92 33 -293 56v-391l33 -11q254 -90 317 -206q35 -66 35 -152q0 -84 -22 -141q-39 -102 -141.5 -155.5t-221.5 -61.5v-160h-102v158q-164 12 -230 34 l-145 49l49 144l102 -39q86 -27 224 -39v438l-107 29q-307 76 -307 334zM295 931.5q0 -61.5 35 -97.5q33 -35 135 -74l76 -21v361q-156 0 -205 -58q-41 -49 -41 -110.5zM643 133q98 0 159.5 55.5t61.5 141.5t-65 135q-41 29 -156 74v-406z" />
+<glyph unicode="%" horiz-adv-x="1722" d="M88 1071q0 -57 8 -100q8 -45 31 -103q20 -53 57 -96q34 -40 92 -67q55 -27 134 -27q76 0 131 27q61 29 94 67q37 43 57 96q23 57 31 103q6 33 6 100q0 223 -84 322q-86 102 -235.5 102t-235.5 -102.5t-86 -321.5zM221 1092q0 299 188.5 299t188.5 -299q0 -163 -49 -234 q-49 -70 -139.5 -70t-139.5 70q-49 71 -49 234zM455 37l682 1460l129 -67l-682 -1453zM999 373q0 -57 9 -101q9 -49 30 -104q20 -53 56 -94q33 -39 94 -68q55 -27 133 -26q76 0 131 26q61 29 94 68q35 41 56 94q22 55 30 104q8 43 8 101q0 223 -84 321q-86 102 -235.5 102.5 t-235.5 -102.5q-86 -100 -86 -321zM1133 393q0 299 188 299q186 0 186 -299q0 -166 -47 -233q-49 -72 -139 -72q-92 0 -141 72q-47 67 -47 233z" />
+<glyph unicode="&#x26;" horiz-adv-x="1656" d="M147 395q0 162 84 271q82 106 250 155q-2 2 -9 7.5t-13 9.5t-47 41q-37 33 -62 63q-28 34 -49 80q-20 43 -20 90q0 150 104 242t295 92q88 0 172 -27q80 -27 127 -69q53 -49 76 -105q25 -57 24 -131q0 -59 -14 -100t-43 -76t-76 -64q-46 -28 -98 -49q-68 -27 -127 -45 l496 -389q14 188 14 406h164q0 -131 -13 -260q-14 -152 -22 -195l-12 -66l225 -182l-86 -100l-211 176q-29 -53 -90 -94q-66 -43 -144 -68q-66 -20 -163 -35q-84 -12 -164 -12q-264 0 -418 119q-150 116 -150 315zM330 418q0 -170 90 -244q89 -74 295 -74q350 0 448 156 l-588 469q-245 -52 -245 -307zM446 1120q0 -22 7 -43q8 -29 16 -41l25 -37q20 -25 28 -32q20 -20 31 -29q20 -16 31 -23q6 -4 12 -9t12 -9l17 -10l6 -4q63 18 112 37q29 10 82 36q35 18 56 41q20 25 28 52q10 35 11 69q0 92 -66 142q-68 51 -174 51q-111 0 -168 -41 t-66 -140v-10z" />
+<glyph unicode="'" horiz-adv-x="632" d="M205 1507v72h227v-72l-59 -448h-109z" />
+<glyph unicode="(" horiz-adv-x="862" d="M283 696q0 150 26 277q29 135 68 229q43 100 92 180q45 74 100 131q49 53 90 82l111 -102q-16 -14 -74 -80q-29 -33 -80 -121q-41 -70 -73 -162q-33 -90 -54 -200q-20 -109 -20 -236q0 -133 20 -243q25 -135 50 -203q31 -86 69 -158q41 -78 76 -117q39 -47 72 -69 l-84 -109q-31 22 -68 55t-82 89q-53 63 -88 131q-49 92 -76 168q-35 92 -55 211q-20 114 -20 247z" />
+<glyph unicode=")" horiz-adv-x="862" d="M92 -98q35 29 74 78t80 118q37 61 73 158q33 86 56 201q20 109 20 237q0 123 -18.5 240t-49 203t-69.5 157q-43 80 -76 121q-39 47 -71 76l82 108q25 -18 55 -45q35 -33 78 -79q47 -53 90 -127q33 -55 82 -166q39 -88 61 -215q23 -129 23 -256q0 -162 -27 -297 q-29 -143 -70 -236q-51 -113 -96 -178q-55 -80 -102 -127q-33 -33 -94 -78z" />
+<glyph unicode="*" horiz-adv-x="931" d="M25 1145v92h311l-158 272l103 58l139 -275l139 275l103 -58l-158 -272h311v-92h-309l170 -273l-103 -57l-153 275l-154 -275l-102 57l170 273h-309z" />
+<glyph unicode="+" horiz-adv-x="1038" d="M166 518v133h313v344h142v-344h313v-133h-313v-344h-142v344h-313z" />
+<glyph unicode="," horiz-adv-x="536" d="M115 0v293h280v-250q0 -111 -59.5 -188.5t-169.5 -108.5l-51 94q72 25 102 62q29 35 29 98h-131z" />
+<glyph unicode="-" d="M133 508v158h678v-158h-678z" />
+<glyph unicode="." horiz-adv-x="516" d="M133 98q0 46 31 80q31 35 82 35q47 0 78 -33q29 -31 28.5 -82t-28.5 -82q-31 -33 -78 -32q-51 0 -82 32.5t-31 81.5z" />
+<glyph unicode="/" horiz-adv-x="1042" d="M193 -117l624 1848l170 -62l-625 -1847z" />
+<glyph unicode="0" horiz-adv-x="1355" d="M115 590q0 135 37 246q37 113 104 194q72 90 178 133q113 47 248 47q133 0 233 -41q106 -43 166 -106q63 -68 103 -150q37 -80 53 -163q16 -86 16 -160q0 -98 -22 -195q-20 -92 -69.5 -172t-112.5 -133q-74 -61 -162 -90q-92 -31 -205 -31q-133 0 -233.5 43t-161.5 107 q-63 68 -103 149q-40 86 -55 166q-14 74 -14 156zM301 592q0 -120 25 -209q25 -88 65 -139q43 -53 92 -82q53 -31 101 -41q51 -10 98 -10q88 0 158 28q68 28 110 74q39 43 70 113q27 63 37 133q10 76 10 147q0 59 -10 127q-10 63 -35 123q-29 68 -68 109q-47 49 -112 75 q-74 29 -160 29q-90 0 -156 -27q-68 -28 -110 -73q-39 -41 -68 -109q-28 -65 -37 -129q-10 -71 -10 -139z" />
+<glyph unicode="1" horiz-adv-x="743" d="M53 1083l258 119h191v-1202h-189v1057l-207 -101z" />
+<glyph unicode="2" horiz-adv-x="1103" d="M123 0v145l407 334q147 126 197 203q49 76 49 164q0 102 -71 158q-70 55 -205 55q-53 0 -125 -17q-68 -14 -103 -32l-36 -19l-54 117q6 6 12.5 10t38.5 21q37 18 68 28.5t96.5 20.5t124.5 10q100 0 170 -20q72 -20 119 -56q41 -31 76 -82q27 -39 41 -94q10 -39 10 -100 q0 -82 -27 -148q-28 -68 -98 -147q-70 -80 -192 -174l-279 -225h596v-152h-815z" />
+<glyph unicode="3" horiz-adv-x="1134" d="M106 -102l54 133l25.5 -12.5t27.5 -12.5q35 -16 129 -41q92 -25 172 -24q141 0 213 63.5t72 181.5q0 248 -336 285v143q70 0 112 11q52 12 99 37t73.5 69.5t26.5 112.5q0 115 -69 166q-72 53 -220 53q-72 0 -145 -19q-86 -20 -113 -34l-39 -19l-49 133q29 14 51 23 q59 23 125 37q96 23 177 22q68 0 116 -8q45 -8 117 -33q61 -20 109 -59q45 -35 75 -98q31 -61 31 -142q0 -66 -22.5 -127t-53.5 -92q-37 -37 -73.5 -59.5t-75.5 -32.5q-41 -10 -64 -10q53 -12 78 -21q43 -14 86 -43q53 -35 82 -69q37 -43 59.5 -102.5t22.5 -143.5 q0 -76 -27 -135q-27 -57 -73 -103q-45 -41 -107 -69q-72 -33 -127 -43q-76 -14 -133 -15q-102 0 -205 25q-111 27 -151 47z" />
+<glyph unicode="4" horiz-adv-x="1198" d="M78 205l684 1003l162 -39v-962h186v-139h-186v-328h-168v328h-650zM262 205h494v725z" />
+<glyph unicode="5" horiz-adv-x="1101" d="M135 -115l51 146l7 -2l16 -9q6 -2 12 -5t15 -7l36 -14q4 -2 18.5 -7t22.5 -7l47 -13l50 -12q14 -4 55 -8q18 -2 53 -2q317 0 318 299q0 150 -78 233.5t-219 83.5q-113 0 -299 -92l-70 68v632h750v-151h-605v-395l25 18q27 18 84 37q68 20 131 20q205 0 328 -123 q125 -125 125 -327q0 -207 -131 -332q-129 -123 -361 -123q-94 0 -182 23q-102 27 -148 45q-51 20 -51 24z" />
+<glyph unicode="6" horiz-adv-x="1232" d="M117 426q0 -270 129 -426t377 -156q121 0 217 39q94 39 157 109q59 66 93 155q33 92 32 189q0 203 -125 330t-342 127q-221 0 -340 -144q18 92 62 176q37 70 100 138q55 59 127 102q80 49 137 70q63 23 133 39l-43 145q-109 -27 -219 -78q-104 -49 -194 -127 q-94 -82 -158 -178q-63 -98 -104 -231q-39 -129 -39 -279zM295 401q0 84 6 121q37 41 133 86q104 49 221 49q123 0 207 -79.5t84 -241.5q0 -70 -16 -121q-20 -63 -53 -111q-37 -51 -103 -86q-63 -33 -151 -32q-80 0 -140 26q-63 29 -96 68q-34 40 -55 98q-27 70 -31 111 q-6 51 -6 112z" />
+<glyph unicode="7" horiz-adv-x="1130" d="M145 1073v156h836l57 -121l-571 -1284l-168 76l524 1173h-678z" />
+<glyph unicode="8" horiz-adv-x="1261" d="M158 233q0 -96 37 -170q35 -70 104 -118q61 -43 152 -70q78 -23 186 -22q207 0 338 96q129 95 129 282q0 152 -70 261q-66 102 -192 143q59 23 92 41q43 25 82 63q43 43 65.5 96.5t22.5 131.5q0 176 -131 270q-133 96 -336 96q-205 0 -342 -96t-137 -268q0 -72 24 -131 q25 -57 64 -96.5t82 -63.5q33 -18 92 -41q-127 -41 -193 -143q-69 -109 -69 -261zM336 256q0 141 86 229q86 90 215 90q125 0 207 -92q82 -90 82 -229q0 -66 -13 -109q-12 -47 -43 -82q-29 -35 -88 -53q-57 -18 -145 -18q-166 0 -233.5 67.5t-67.5 196.5zM336 967 q0 53 18 96q18 41 47 67q29 25 70 41q45 16 80 23q27 4 86 4q66 0 106 -10q51 -12 91 -35q43 -25 67.5 -74t24.5 -114q0 -121 -84 -197q-88 -78 -205 -78q-121 0 -211 80t-90 197z" />
+<glyph unicode="9" horiz-adv-x="1232" d="M117 823q0 -205 125 -331.5t342 -126.5t340 145q-18 -92 -62 -176q-39 -74 -100 -139q-51 -55 -127 -101q-88 -53 -137 -71q-63 -23 -133 -39l43 -146q109 27 219 78q100 47 194 129q98 84 158 176q63 98 104 232q39 129 39 280q0 266 -129 424t-377 158q-117 0 -217 -41 q-96 -39 -157 -107q-59 -66 -92 -158t-33 -186zM293 823q0 68 16 119q20 68 53 113q35 47 103 84q63 33 151 32q80 0 140 -26q66 -29 96 -66q34 -40 55 -98q27 -70 31 -111q6 -51 6 -112q0 -86 -6 -123q-35 -37 -133 -84q-104 -49 -221 -49q-125 0 -207 80q-84 79 -84 241z " />
+<glyph unicode=":" horiz-adv-x="595" d="M180 0v281h271v-281h-271zM180 584v280h271v-280h-271z" />
+<glyph unicode=";" horiz-adv-x="595" d="M172 0v293h283v-250q0 -111 -59.5 -188.5t-170.5 -108.5l-51 94q72 25 102 62q27 33 27 98h-131zM174 584v280h281v-280h-281z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1505" d="M334 664l653 602l103 -111l-551 -491l551 -494l-103 -111z" />
+<glyph unicode="=" horiz-adv-x="862" d="M94 281v131h588v-131h-588zM94 508v131h588v-131h-588z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1505" d="M334 170l551 494l-551 491l100 111l656 -602l-656 -605z" />
+<glyph unicode="?" horiz-adv-x="1230" d="M113 1475q6 6 18 12q14 8 59 24l86 31q37 12 113 27q53 10 129 10q84 0 156 -12q70 -12 133 -41t102 -68q43 -43 67.5 -104.5t24.5 -136.5q0 -55 -12 -105q-14 -61 -28 -90q-18 -39 -48 -78q-29 -37 -59 -65q-41 -37 -70 -56q-47 -31 -77 -47q-20 -12 -80 -39 q-37 -16 -80 -32q-68 -25 -80 -29v-383h-180v483q96 33 186 72q109 47 145 70q66 39 107 79q43 43 63 90q23 51 23 109q0 123 -73.5 172t-237.5 49q-61 0 -109 -8q-66 -12 -92 -20q-37 -12 -68 -25q-33 -12 -45 -21q-16 -10 -16 -12zM264 66q0 43 31 73.5t74 30.5 t73.5 -30.5t30.5 -76.5q0 -43 -30.5 -73.5t-73.5 -30.5t-74 31t-31 76z" />
+<glyph unicode="@" horiz-adv-x="1925" d="M137 578q0 164 49 309q51 150 129 248q78 96 193 176q102 70 231 108q123 37 250 37q139 0 254 -26q117 -27 221.5 -84.5t175.5 -137.5q74 -84 117 -198q41 -111 41 -254q0 -125 -31 -226q-29 -94 -77 -159q-43 -57 -109 -101q-63 -41 -115 -55q-59 -16 -108 -16 q-31 0 -55 10q-23 10 -31 26.5t-12 36.5q-2 10 -3 43v232v2q-9 -49 -30 -98q-25 -55 -56 -95q-39 -47 -81 -80q-46 -34 -111 -55q-68 -23 -137 -22q-174 0 -269 104q-96 106 -96 287q0 92 45 194q41 92 117 172q78 82 180 125q111 47 225 47q43 0 107 -8q123 -16 125 -16 l53 -8l55 -109v-670q123 0 188.5 102.5t65.5 338.5q0 127 -36 229q-35 96 -101 162q-59 59 -147 100q-78 37 -174 54q-80 14 -185 14q-141 0 -276 -51q-129 -49 -223.5 -143.5t-145.5 -231.5q-53 -143 -53 -313q0 -279 174 -435q178 -160 512 -159q57 0 109 6q82 10 94 12 q45 10 78 21q41 14 65 24q37 16 53 25q23 10 39 24q8 6 15.5 10.5t11.5 8.5q8 6 16 14l6 4l91 -90l-2 -2q-86 -96 -250 -147q-150 -49 -336 -50q-174 0 -311 39q-145 41 -238 107q-98 70 -162 160q-61 88 -94 200q-31 108 -31 228zM633 573q0 -244 225 -243q80 0 143 32 q70 37 119 101q53 70 84 180q29 111 33 262v82l-25 4q-23 6 -69 13q-29 4 -82 4q-115 0 -213 -55.5t-156 -155.5q-59 -103 -59 -224z" />
+<glyph unicode="A" horiz-adv-x="1536" d="M102 0l516 1579h300l516 -1579h-193l-123 383h-700l-123 -383h-193zM451 485h634l-317 975z" />
+<glyph unicode="B" horiz-adv-x="1466" d="M197 0v1579h360q170 0 293 -18q115 -16 197 -52q76 -31 116 -82q41 -49 58 -108q14 -51 14 -131q0 -41 -6 -76t-25 -78q-18 -41 -53 -73q-37 -33 -94 -60q-57 -25 -148 -39q408 -47 408 -428q0 -101 -37 -178q-37 -76 -98 -125q-59 -47 -152 -78q-82 -27 -190 -41 q-98 -12 -224 -12h-419zM391 143h225q150 0 236 15q100 16 158 49q68 39 96 100q29 59 29 160q0 178 -113 248q-115 72 -369 71h-262v-643zM391 915h258q129 0 215 19q88 18 129 57q45 43 60 84q16 49 16 113q0 94 -41 143q-41 51 -151 78q-106 27 -316 27h-170v-521z" />
+<glyph unicode="C" horiz-adv-x="1265" d="M129 788q0 147 25 271q27 131 61 205q39 80 96 147q51 61 115 100q68 43 129 62q74 23 131 29q78 8 123 8q59 0 115 -6q53 -6 82 -13q4 0 67 -20l51 -15l86 -26l-45 -146l-75 27l-3 1q-2 1 -5 2t-8 3t-11 4q-10 2 -22.5 6.5t-14.5 4.5q-4 2 -17.5 4t-21.5 4q-41 8 -49 10 q-14 2 -59 6q-23 2 -70 2q-129 0 -227 -47q-92 -45 -147.5 -137t-80.5 -211q-25 -121 -24 -275q0 -147 22 -270q20 -106 66 -194q39 -74 102 -125q55 -45 131 -68q68 -20 158 -20q25 0 37 2q6 2 17 2t18 2q6 0 17 3t19.5 5t19.5 5t15 3t8.5 2t7.5 3t9 2t10 3q20 6 33 11 l12 4t16.5 6t16.5 7t8 3l21 8l16 6l74 29l55 -137l-70 -29q-12 -4 -32 -14q-41 -20 -60 -27q-43 -14 -73 -22q-59 -16 -101 -21q-74 -8 -115 -8q-111 0 -202.5 24.5t-159.5 67.5q-61 39 -119 107q-47 55 -84 133q-35 72 -55 155q-23 86 -31 168q-8 74 -8 174z" />
+<glyph unicode="D" horiz-adv-x="1568" d="M123 0v1579h575q659 0 660 -791q0 -788 -660 -788h-575zM317 143h381q104 0 185 31q82 31 131 84q55 57 84 137q35 92 45 178q12 95 12 215t-12 216q-12 98 -45 178q-35 84 -84 137q-53 55 -131 86q-80 31 -185 31h-381v-1293z" />
+<glyph unicode="E" horiz-adv-x="1181" d="M145 0v1579h971v-143h-776v-545h678v-115h-678v-633h788v-143h-983z" />
+<glyph unicode="F" horiz-adv-x="1093" d="M145 0v1579h922v-143h-725v-557h664v-117h-664v-762h-197z" />
+<glyph unicode="G" horiz-adv-x="1507" d="M123 786q0 418 180 623q176 201 494 201q242 0 432 -117l24 -16l-65 -136q-82 70 -256 103q-76 14 -154 14q-92 0 -172 -33q-86 -35 -135 -90q-53 -59 -86 -143q-61 -156 -61 -410q0 -383 145 -544q117 -127 332 -127q174 0 274 73q102 74 103 215v285h-404v127h588v-811 h-88l-53 213q-47 -190 -310 -240q-70 -14 -157 -14q-194 0 -338 104q-147 106 -219 289q-74 188 -74 434z" />
+<glyph unicode="H" horiz-adv-x="1511" d="M145 0v1579h195v-700h831v700h195v-1579h-195v764h-831v-764h-195z" />
+<glyph unicode="I" horiz-adv-x="980" d="M195 0v113h204v1347h-204v119h593v-119h-206v-1347h206v-113h-593z" />
+<glyph unicode="J" horiz-adv-x="780" d="M59 35q162 25 226 80q61 53 80 118q20 76 20 246v1100h193v-1065q0 -197 -29 -311q-27 -109 -115 -193q-102 -100 -323 -100z" />
+<glyph unicode="K" horiz-adv-x="1366" d="M195 0v1579h192v-725h223l492 725h192l-528 -780l596 -799h-205l-555 748h-215v-748h-192z" />
+<glyph unicode="L" horiz-adv-x="1075" d="M145 0v1579h195v-1436h745v-143h-940z" />
+<glyph unicode="M" horiz-adv-x="1861" d="M166 0v1579h291l475 -1411l475 1411h291v-1579h-156v1509l-514 -1509h-194l-515 1509v-1509h-153z" />
+<glyph unicode="N" horiz-adv-x="1662" d="M207 0v1579h262l827 -1434v1434h162v-1579h-262l-827 1434v-1434h-162z" />
+<glyph unicode="O" horiz-adv-x="1556" d="M125 784q0 152 20 267q20 119 60 204q35 80 90 148q51 63 108 104q43 31 123 62q59 23 121 33q49 8 117 8q143 0 260 -41q111 -39 190 -113q74 -68 125.5 -176.5t71.5 -226.5q23 -129 23 -269q0 -152 -20.5 -268.5t-72.5 -224.5q-47 -100 -124 -178q-72 -72 -187 -113 q-113 -41 -252 -41q-41 0 -119 8q-43 4 -124 31q-68 23 -125 59q-57 39 -111 101q-55 65 -92 147q-39 86 -60 207q-22 129 -22 272zM324 784q0 -174 32 -315q31 -129 95 -209q59 -74 143 -113q80 -37 186 -36q88 0 158 24q74 27 121 70q49 45 84 106q35 59 53 138 q20 84 29 157q10 88 10 178q0 180 -33 322q-31 129 -94 209q-59 74 -141 108.5t-186.5 34.5t-186.5 -35q-80 -35 -131 -94q-53 -63 -82 -147q-35 -98 -45 -185q-12 -96 -12 -213z" />
+<glyph unicode="P" horiz-adv-x="1374" d="M188 0v1579h398q213 0 342 -29q138 -31 215 -92q80 -63 110 -147q31 -83 31 -203q0 -113 -32.5 -192.5t-116.5 -147.5q-76 -61 -228 -96q-143 -33 -354 -33h-170v-639h-195zM383 784h170q139 0 231 15q98 16 158 39q63 25 98 63q37 41 50 82q14 49 14 100q0 43 -4 93 q-4 41 -15 75q-12 43 -34 68q-20 23 -60 49q-41 27 -90 39q-43 10 -129 20q-68 8 -174 9h-215v-652z" />
+<glyph unicode="Q" horiz-adv-x="1562" d="M119 793q0 156 22 268q25 125 76 223q53 104 129 174q80 74 188.5 113t247.5 39q70 0 121 -8q61 -10 125 -33q70 -25 127 -62q53 -35 113 -102q49 -57 92 -148q39 -82 61 -204q25 -137 25 -269q0 -172 -31 -307q-31 -137 -94 -241q-63 -106 -166 -175q-104 -70 -237 -90 l378 -264l-118 -131l-494 389q-283 31 -424 242t-141 586zM319 784.5q0 -113.5 13 -209.5q10 -86 45 -184q29 -86 82 -147q51 -59 133 -97q83 -37 190.5 -36.5t190.5 36.5q82 37 133 97q53 61 82 147q35 98 45 184q12 95 12 209t-12 209q-10 82 -45 183q-31 90 -82 149 t-133 96q-83 37 -190.5 37t-190.5 -37q-82 -37 -133 -96t-82 -149q-35 -100 -45 -183q-13 -95 -13 -208.5z" />
+<glyph unicode="R" horiz-adv-x="1343" d="M129 0v1579h377q260 0 391 -29q236 -51 299 -229q27 -76 27 -162q0 -158 -115 -260t-299 -102q98 -12 172 -37q68 -23 127 -72q57 -47 84 -119q29 -76 29 -172v-397h-183v412q0 82 -22 143q-18 51 -82 98q-57 43 -164 62q-104 18 -266 18h-180v-733h-195zM324 862h153h88 q12 0 86 4q78 4 88 6q12 2 40 8.5t40 8.5q47 10 78 24q31 16 61 35q29 18 52 51q20 29 30 66q12 40 13 86q0 53 -12.5 96t-30.5 74q-18 29 -56 51q-35 20 -75 33q-51 16 -101 20q-41 4 -123 9q-41 2 -149 2h-182v-574z" />
+<glyph unicode="S" horiz-adv-x="1312" d="M100 1217q0 88 35 161q31 66 88 113q49 41 123 70q80 31 131 38q68 10 123 11q270 0 494 -125l-31 -148q-66 43 -176 82q-109 39 -225 39q-108 0 -185 -18q-74 -18 -117 -51q-39 -31 -59 -78q-16 -39 -16 -103q0 -89 55 -141q51 -47 184 -92l283 -92q35 -10 70 -25 q31 -12 71 -33q33 -16 74 -45q37 -25 65 -57q37 -41 58 -78q23 -41 37 -96q12 -47 12 -123q0 -41 -6 -84q-8 -53 -23 -90q-25 -61 -43 -88q-27 -37 -71 -80q-37 -35 -103 -66q-59 -29 -137 -43q-86 -16 -178 -16q-137 0 -260 33q-126 34 -203 80l20 149q80 -41 109 -53 q57 -23 129 -39q83 -18 172 -18q90 0 168 16q74 15 129 49q53 33 84 94.5t31 145.5q0 63 -19 108q-18 46 -55 80q-39 37 -82 58q-45 23 -106 43l-291 102q-109 39 -174 82q-68 45 -111 100q-35 45 -55 109q-19 56 -19 119z" />
+<glyph unicode="T" horiz-adv-x="1081" d="M-12 1436v143h1108v-143h-457v-1436h-190v1436h-461z" />
+<glyph unicode="U" horiz-adv-x="1662" d="M205 715v864h190v-868q0 -135 15 -228q16 -100 43 -164q29 -70 63 -108q41 -49 86 -70q49 -23 105 -32q47 -8 122 -9q86 0 148 13q57 12 118.5 53t92.5 104q34 68 55 179q20 104 21 262v868h196v-864q0 -143 -16 -240q-18 -109 -62 -207q-43 -96 -112 -164 q-70 -66 -180 -106q-109 -39 -261 -39q-169 0 -288 49t-195 149.5t-108 235.5q-33 134 -33 322z" />
+<glyph unicode="V" horiz-adv-x="1374" d="M70 1579h184l434 -1399l434 1399h183l-494 -1579h-246z" />
+<glyph unicode="W" horiz-adv-x="1996" d="M78 1579h178l311 -1444l293 1354h275l295 -1354l309 1444h182l-338 -1579h-287l-235 1067l-64 305l-63 -305l-236 -1067h-284z" />
+<glyph unicode="X" horiz-adv-x="1298" d="M43 0l498 801l-496 778h197l407 -655l410 655h194l-493 -778l495 -801h-217l-368 594l-21 33l-18 -33l-369 -594h-219z" />
+<glyph unicode="Y" horiz-adv-x="1271" d="M27 1579h196l355 -772l63 -129l57 129l357 772h190l-514 -1094v-485h-190v485z" />
+<glyph unicode="Z" horiz-adv-x="1191" d="M84 0v180l829 1268h-829v131h1030v-160l-833 -1276h835v-143h-1032z" />
+<glyph unicode="[" horiz-adv-x="1052" d="M268 0v1579h666v-143h-471v-1293h471v-143h-666z" />
+<glyph unicode="\" horiz-adv-x="1030" d="M117 1679l157 52l623 -1846l-160 -57z" />
+<glyph unicode="]" horiz-adv-x="1112" d="M162 0v143h471v1293h-471v143h663v-1579h-663z" />
+<glyph unicode="^" horiz-adv-x="1427" d="M375 510l291 502h96l293 -502l-129 -78l-211 377l-213 -377z" />
+<glyph unicode="_" horiz-adv-x="1263" d="M127 33h940v-144h-940v144z" />
+<glyph unicode="`" horiz-adv-x="776" d="M68 885l241 90l154 -619l-68 -26z" />
+<glyph unicode="a" horiz-adv-x="1236" d="M113 340v2q0 178 120 276q117 96 324 97q76 0 174 -15q115 -16 158 -34v47q0 94 -10 159q-8 55 -48 101q-35 41 -86 57q-53 16 -116 17q-68 0 -125 -13q-53 -10 -98 -30l-38 -15.5l-42 -17.5q-53 -27 -72 -43l-70 133l45 24q176 104 377 105q270 0 373 -115 q98 -111 98 -389v-686h-139l-29 178q-147 -201 -403 -201q-186 0 -291 93q-102 90 -102 270zM303 346q0 -117 59.5 -172t190.5 -55q172 0 336 151v299q-123 20 -242 21q-109 0 -178 -17q-61 -14 -100 -47q-66 -61 -66 -180z" />
+<glyph unicode="b" horiz-adv-x="1361" d="M199 0v1579l188 35v-584q20 20 38.5 34.5t74.5 51.5q49 33 110.5 53.5t124.5 20.5q113 0 197 -39q82 -39 137 -102q47 -55 84 -146q35 -86 47 -162q12 -78 12 -157q0 -90 -16 -183q-16 -88 -53 -165q-39 -82 -90 -134q-57 -57 -135 -89.5t-183 -32.5q-109 0 -203 57 q-95 58 -165 141l-29 -178h-139zM387 272q156 -150 356 -149q66 0 117 27q55 29 84 69.5t51 104.5q20 57 27 125q8 82 8 135q0 463 -287 463q-109 0 -205 -47.5t-151 -98.5v-629z" />
+<glyph unicode="c" horiz-adv-x="1120" d="M109 579.5q0 -143.5 32 -247.5q33 -106 88 -174q55 -70 121 -109q68 -41 135 -57q59 -14 131 -15q207 0 392 134l-58 135q-129 -119 -329 -119q-63 0 -121 23q-53 20 -103 73q-46 49 -73 142q-25 82 -25 215q0 236 86 348t252 112q181 0 313 -116l58 133 q-188 133 -390 133q-61 0 -131 -16q-66 -16 -137 -60q-68 -41 -121 -110q-57 -74 -88 -175q-32 -106 -32 -249.5z" />
+<glyph unicode="d" horiz-adv-x="1284" d="M109 584q0 172 51 305q53 139 157 219q106 82 252 82q123 0 219 -51q102 -55 148 -111v586l188 -35v-1579h-141l-27 178q-55 -74 -157 -137q-98 -61 -207 -61q-126 0 -221 49q-96 49 -152 135q-55 88 -84 192q-26 101 -26 228zM291 588q0 -465 297 -465q111 0 203 49 q98 53 145 102v629q-188 143 -354 144q-45 0 -76 -9q-33 -8 -76 -37q-39 -25 -72 -77q-31 -49 -49 -135t-18 -201z" />
+<glyph unicode="e" horiz-adv-x="1144" d="M109 578q0 147 38 262q39 113 109 192q68 78 162 117q98 41 205 41q215 0 329.5 -139.5t114.5 -374.5q0 -53 -8 -109h-760q0 -109 14 -178q14 -72 54 -135q39 -66 106 -94q76 -33 170 -33q172 0 307 117l62 -146q-68 -51 -191 -88q-111 -33 -188 -33q-254 0 -389 160 t-135 441zM299 682h598v35q0 86 -18 149q-18 61 -45 99q-29 37 -66 57q-43 25 -72 29q-33 6 -71 6q-49 0 -84 -8q-43 -10 -86 -33q-45 -25 -80 -66q-33 -39 -56 -108q-20 -64 -20 -160z" />
+<glyph unicode="f" horiz-adv-x="823" d="M66 1065v104h194v29q0 104 16 191q16 82 43 133t70 81.5t92 43t111 12.5q53 0 108 -21q61 -23 97 -43q37 -23 37 -28l-64 -125q-83 74 -154 74q-106 0 -137 -48q-27 -39 -28 -151v-60v-14v-74h348v-104h-348v-1065h-191v1065h-194z" />
+<glyph unicode="g" horiz-adv-x="1271" d="M158 385q0 65 30 111q29 41 129 59l86 14q-106 37 -159.5 113t-53.5 172q0 154 129 244q133 92 332 92h2q57 0 99 -8q59 -12 75 -19q39 -16 52 -22q6 -2 13 -6.5l12 -7.5t7 -5l11 -8l77 39q41 20 197 21h31v-150l-240 2l31 -31q33 -45 41 -65q10 -25 10 -66q0 -39 -8 -96 q-4 -35 -31 -94q-18 -43 -59 -84q-37 -37 -105 -66q-71 -31 -153 -43l-412 -55l21 -166h391q260 0 377 -80q119 -82 118 -256q0 -166 -139 -262q-127 -88 -385 -88h-84q-207 0 -315 84q-111 86 -111 248q0 43 16 86q14 37 35 61.5t49 40.5l41 25l25 8h2q-43 10 -82 27 q-45 18 -59 45q-25 39 -25 53q-4 35 -14 106zM332 -80q0 -111 63.5 -153.5t216.5 -42.5h88q184 0 263 45q84 43 84 149q0 113 -66 160q-68 49 -229 49h-324q-2 0 -4 -3t-6 -5q-12 -12 -23 -25q-20 -25 -28 -39q-16 -31 -25 -59q-10 -41 -10 -76zM350 846q0 -45 23 -90 q23 -47 51 -72q47 -43 59 -51q35 -25 49 -31l23 -10l141 20q53 8 92 27q41 18 62 39q25 25 35 51q12 33 16 62q2 18 2 69q0 111 -57 154q-61 45 -199 45q-297 0 -297 -213z" />
+<glyph unicode="h" horiz-adv-x="1298" d="M160 0v1579l190 37v-627q39 43 70 70q37 33 78 61q53 37 106 54q51 16 121 16q98 0 172 -25q78 -27 133 -75q53 -47 86 -146q31 -92 31 -217v-727h-191v727q0 176 -59 248t-172 72q-66 0 -131 -19q-68 -18 -117 -47q-45 -25 -80 -53q-45 -35 -47 -39v-889h-190z" />
+<glyph unicode="i" horiz-adv-x="632" d="M207 1462q0 46 31 80q31 35 81 35q47 0 78 -33q29 -31 29 -82t-29 -82q-31 -33 -78 -32q-51 0 -81.5 32.5t-30.5 81.5zM223 0v1169h183v-1169h-183z" />
+<glyph unicode="j" horiz-adv-x="587" d="M20 -258q51 33 84 68q31 35 54 71q20 35 32 84q10 43 15 96q4 61 4 115v993h188v-1015q0 -115 -26 -207q-28 -95 -74 -160t-104 -104q-57 -39 -125 -56zM190 1462q0 46 31 80q31 35 80 35t80 -33q29 -31 29 -82t-29 -82q-31 -33 -80 -32.5t-80 33t-31 81.5z" />
+<glyph unicode="k" horiz-adv-x="1134" d="M162 0v1579l190 35v-987l559 542h226l-553 -522l585 -647h-221l-479 555l-117 -96v-459h-190z" />
+<glyph unicode="l" horiz-adv-x="589" d="M213 0v1579l190 35v-1614h-190z" />
+<glyph unicode="m" horiz-adv-x="2050" d="M190 0v1169h142l26 -206q63 100 162 163q100 63 231.5 63.5t209.5 -63.5q80 -65 110 -159q68 100 186 163q111 59 236 60q170 0 262 -115q92 -113 92 -309v-766h-188v768q0 76 -14 139q-12 53 -41 86q-27 29 -60 41q-34 12 -80 13q-182 0 -362 -189v-858h-191v768 q0 86 -12 141q-12 53 -41 86q-25 27 -59 41q-25 10 -78 11q-154 0 -340 -187v-860h-191z" />
+<glyph unicode="n" horiz-adv-x="1370" d="M190 0v1169h142l22 -188q63 78 193 143q127 63 258 64q43 0 94 -10q49 -10 98 -39q57 -33 90 -78q41 -53 64 -135q25 -86 25 -199v-727h-191v727q0 84 -10 129q-12 59 -37 100q-27 47 -70 68q-49 23 -106 23q-102 0 -219 -62q-115 -59 -162 -104v-881h-191z" />
+<glyph unicode="o" horiz-adv-x="1312" d="M127 582q0 137 31 235q37 115 96 193q63 82 167.5 131t233.5 49q106 0 195 -31q84 -29 149 -88q59 -53 105 -133q41 -74 63 -166q20 -84 21 -190q0 -129 -33 -234q-35 -113 -96 -190q-68 -86 -168 -131q-106 -47 -236 -47q-102 0 -192 30q-88 31 -150 86q-63 57 -104 131 q-43 76 -64 164q-18 76 -18 191zM307 581.5q0 -106.5 20.5 -186.5t61.5 -145q39 -63 108.5 -98t157.5 -35q90 0 160 34.5t109 98.5q45 74 61 145q18 84 19 187q0 106 -21 186q-23 88 -59 147q-39 61 -109 101q-63 35 -160 35q-88 0 -157.5 -35t-108.5 -98.5t-61 -149.5 q-21 -80 -21 -186.5z" />
+<glyph unicode="p" horiz-adv-x="1353" d="M203 -487v1656h141l33 -198q66 88 164 153q96 66 211 66q82 0 143 -21q63 -20 113 -57q51 -37 85.5 -84t61.5 -102q23 -47 39 -115q14 -55 20 -115q6 -55 7 -112q0 -88 -17 -181q-14 -84 -53 -163q-35 -74 -90 -136q-49 -55 -133 -90q-82 -35 -176 -34q-106 0 -203 53 q-90 49 -156 131v-629zM393 285q16 -16 35 -31l76 -53q57 -39 108 -56q68 -23 121 -22q37 0 53.5 2t59.5 16q41 14 65 33q27 20 55.5 65.5t43.5 102.5q29 111 28 201q0 71 -6 135q-6 61 -24 133q-20 78 -47 121q-29 47 -84 82q-51 33 -125 33q-61 0 -123 -21 q-72 -25 -113 -47q-25 -14 -78 -51q-35 -25 -45 -37v-606z" />
+<glyph unicode="q" horiz-adv-x="1284" d="M109 584q0 102 14 182q16 90 51 166q37 82 88 135q55 57 131 90q78 33 176 33q117 0 219 -64q98 -61 164 -155l33 198h139v-1648l-188 -23v666q-66 -82 -156 -131q-96 -53 -200 -53q-96 0 -179 34q-84 37 -135 92q-57 63 -90 136q-35 78 -51 164q-16 92 -16 178zM291 584 q0 -92 8 -151.5t27 -115.5q14 -45 41 -84q20 -29 49 -55q27 -23 55 -35q35 -14 55 -16q33 -4 54 -4q108 0 208 49t148 96v623q-70 70 -178 113q-106 43 -189 43q-278 0 -278 -463z" />
+<glyph unicode="r" horiz-adv-x="884" d="M195 0v1169h143l31 -192q164 213 321 213q59 0 101 -12v-152q-8 4 -64 4q-78 0 -158 -33q-88 -37 -125 -59q-35 -23 -59 -43v-895h-190z" />
+<glyph unicode="s" horiz-adv-x="993" d="M102 891q0 39 13 78q12 37 41 80q29 41 71 71q35 25 115 49q68 20 158 21q111 0 223 -43q115 -43 158 -80l-62 -143q-154 119 -309 118q-133 0 -190.5 -45t-57.5 -116q0 -47 33 -78q37 -33 131 -66l168 -59q94 -33 178 -80q66 -37 102 -88q35 -49 48 -92q12 -45 12 -109 q0 -78 -27 -133q-27 -57 -69.5 -94t-100.5 -62q-61 -27 -119 -34q-51 -8 -122 -9q-102 0 -217 39q-109 37 -166 84l63 146q66 -57 152 -86q94 -33 155 -33q123 0 201 45t78 141q0 82 -47 121q-51 43 -144 72l-174 55q-90 31 -151.5 66t-89.5 75q-31 45 -43 84 q-11 37 -11 105z" />
+<glyph unicode="t" horiz-adv-x="827" d="M35 1065v104h190l21 361l162 47v-408h333v-104h-333v-766q0 -68 12 -104q14 -41 31 -52q22 -12 55 -12q76 0 188 66l37 20l68 -123l-47 -31l-45 -22q-27 -12 -95 -37q-59 -20 -110 -20q-154 0 -219.5 84t-65.5 282v715h-182z" />
+<glyph unicode="u" horiz-adv-x="1263" d="M131 442v727h191v-727q0 -154 53 -237q51 -82 180 -82q190 0 352 151v895h191v-1169h-142l-26 176q-92 -104 -182 -149q-94 -47 -203 -47q-197 0 -305 110q-109 112 -109 352z" />
+<glyph unicode="v" horiz-adv-x="1169" d="M57 1169h189l336 -970l329 970h191l-430 -1169h-187z" />
+<glyph unicode="w" horiz-adv-x="1708" d="M55 1169h185l233 -1044l258 1044h203l250 -1046l239 1046h187l-320 -1169h-207l-264 995l-237 -995h-205z" />
+<glyph unicode="x" horiz-adv-x="1175" d="M90 1169h215l283 -467l291 467h208l-405 -585l397 -584h-202l-283 477l-289 -477h-211l408 584z" />
+<glyph unicode="y" horiz-adv-x="1222" d="M92 1169h182l357 -919l301 919h194l-438 -1206l-26.5 -75l-22.5 -60.5l-12 -30.5q-88 -188 -246 -237q-57 -18 -125 -19l-51 125q152 25 217 94q63 68 123 263z" />
+<glyph unicode="z" horiz-adv-x="1007" d="M102 0v166l637 862h-608v141h772v-165l-624 -859h624v-145h-801z" />
+<glyph unicode="{" horiz-adv-x="821" d="M76 571q238 0 237 -309q0 -164 45 -268q86 -203 365 -203v168q-68 0 -102 8q-43 10 -74 41q-18 16 -29 41q-2 6 -20 70q-10 39 -15 170q0 311 -241 377q242 66 241 376q4 131 15 170l20 68q10 25 29 41q31 31 74 41q35 8 102 8v168q-279 0 -365 -203q-45 -104 -45 -268 q0 -307 -237 -307v-189z" />
+<glyph unicode="|" horiz-adv-x="624" d="M223 -111v1807h178v-1807h-178z" />
+<glyph unicode="}" horiz-adv-x="825" d="M129 -41q68 0 102 8q45 10 76 41q16 14 27 41q10 29 22 70q10 39 15 170q0 313 239 377q-240 63 -239 376q-4 131 -15 170q-8 31 -22 68q-10 27 -27 41q-31 31 -76 41q-35 8 -102 8l2 168q276 0 363 -203q47 -111 47 -268q0 -307 237 -307v-189q-238 0 -237 -309 q0 -158 -47 -268q-86 -203 -363 -203z" />
+<glyph unicode="~" horiz-adv-x="897" d="M92 393q0 260 203 260q49 0 102 -18q49 -18 88 -43q41 -27 78 -43q47 -20 76 -21q57 0 57 111h158q0 -111 -53 -180.5t-139 -69.5q-47 0 -107 19q-53 16 -98 41q-63 35 -84 43q-43 18 -66 18q-28 0 -43 -25q-14 -23 -14 -92h-158z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1136" d="M141 580q0 -88 17 -177q15 -83 43 -141q27 -57 65 -108q33 -45 80 -78q53 -39 88 -53q49 -22 92 -31q57 -12 90 -15v-137h103v142q49 0 90 8q47 10 86 22q49 16 69.5 24.5t49.5 22.5l16 9l-47 137l-6 -4l-21 -11l-14 -7t-16 -9t-21.5 -8t-21.5 -6q-16 -6 -49 -15 q-45 -10 -56 -12q-41 -4 -59 -4v909q16 0 45 -4t43 -8l41 -12q18 -6 37 -15l33 -16q10 -6 26 -14q8 -4 21 -13q12 -10 14 -10l4 -2l57 133l-18 10q-2 2 -20.5 11.5l-30.5 15.5q-63 29 -74 33q-39 14 -86 27q-49 12 -92 12v143h-103v-139q-20 -2 -90 -16q-41 -8 -92 -33 q-45 -20 -90 -54q-39 -29 -80 -81q-33 -43 -63 -109q-28 -58 -43 -141q-17 -88 -17 -176zM332 580q0 420 284 456v-907q-55 8 -88 23q-45 20 -77 51q-37 35 -64 86q-27 53 -41 123t-14 168z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1126" d="M152 602h196q0 -66 -4 -98q-10 -76 -12 -88q-6 -27 -19 -76q-8 -29 -22 -64q-16 -37 -25 -53q-18 -37 -22 -43l-19 -28q-4 -6 -7 -12.5t-5 -8.5l-6 -4v-127h797v131h-617q2 2 7 9t7 12l29 57q14 29 35 94q16 53 29 131q14 94 14 168h428v105h-428l-33 34q-84 109 -84 217 q0 221 268 222q51 0 99 -9q25 -4 90 -24q4 0 74 -27l49 -22l18 -11l49 132l-16 10q-12 8 -53 24q-37 15 -86 31q-43 14 -125 27q-78 12 -158 12q-102 0 -192 -47q-86 -45 -144 -133q-55 -86 -55 -187q0 -43 12 -82q14 -49 29 -71q20 -35 35 -53q18 -25 28 -35q12 -12 13 -8 h-174v-105z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1275" d="M41 1579h195l419 -791l420 791h195l-482 -891h263v-104h-295v-97h295v-98h-295v-389h-191v389h-303v98h303v97h-303v104h262z" />
+<glyph unicode="&#xa9;" horiz-adv-x="2099" d="M164 829q0 -127 33 -239q33 -111 94 -209q59 -94 141 -170t178 -127q100 -53 207 -80t221.5 -27t221 27t207 80t180.5 127q82 76 141 170q58 92 92 209q35 121 35 239q0 117 -37 244q-33 115 -96 209q-66 98 -144 170q-82 76 -182 129q-94 49 -203 78q-111 29 -215 29 q-102 0 -213 -29q-113 -29 -204 -78q-96 -51 -180.5 -129t-145.5 -170q-63 -94 -96 -209q-35 -121 -35 -244zM311 829q0 129 41 248q39 117 113 205q68 84 166 152q86 61 196 96q100 33 211 33t211 -33q115 -37 199 -96q92 -66 164 -152q74 -88 112 -205q41 -119 41 -248 q0 -150 -53 -284q-55 -137 -145 -232q-92 -96 -232 -155q-133 -57 -297 -58q-162 0 -295 58q-139 59 -231 155q-94 98 -147 232q-54 134 -54 284zM555 831q0 -59 6 -108q6 -51 24.5 -100.5t43 -92.5t67.5 -79q45 -39 94.5 -61.5t124.5 -39.5q70 -14 160 -14q125 0 281 78 v127q-150 -76 -293 -76q-98 0 -154 16q-63 18 -106 59.5t-66 112.5q-20 68 -20 178q0 109 20 177q23 76 66 114q43 41 106 60q55 16 154 16q143 0 293 -76v125q-156 78 -281 78q-90 0 -160 -14q-76 -16 -125 -39t-94 -62t-67 -77q-25 -43 -43 -93q-18 -47 -25 -102 q-6 -50 -6 -107z" />
+<glyph unicode="&#xad;" d="M133 508v158h678v-158h-678z" />
+<glyph unicode="&#xae;" horiz-adv-x="1333" d="M102 1108q0 115 45 217q49 111 121 182.5t189 120.5q109 45 233 45q121 0 232 -43q104 -41 188 -121q80 -76 125 -180q45 -102 45 -221t-45 -221q-45 -104 -125 -180q-84 -80 -188 -121q-111 -43 -232 -43q-125 0 -233 45q-117 49 -189 121q-74 74 -121 180 q-45 102 -45 219zM211 1106q0 -201 135 -332q137 -133 344 -133t346 135q137 135 138 330q0 199 -140 332q-141 135 -344 135q-209 0 -344 -135t-135 -332zM512 807v602h119q82 0 149 -14q55 -12 99 -52q41 -37 41 -81q0 -76 -35 -113q-37 -39 -131 -64l180 -249 q-12 -4 -29 -13l-45 -24q-23 -12 -26 -15l-175 283h-43v-260h-104zM621 1151h47q78 0 110 23q37 25 37 81q0 37 -37 54q-35 16 -157 16v-174z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1095" d="M489 354l158 611l234 -91l-334 -546z" />
+<glyph unicode="&#x2000;" horiz-adv-x="864" />
+<glyph unicode="&#x2001;" horiz-adv-x="1730" />
+<glyph unicode="&#x2002;" horiz-adv-x="864" />
+<glyph unicode="&#x2003;" horiz-adv-x="1730" />
+<glyph unicode="&#x2004;" horiz-adv-x="575" />
+<glyph unicode="&#x2005;" horiz-adv-x="430" />
+<glyph unicode="&#x2006;" horiz-adv-x="286" />
+<glyph unicode="&#x2007;" horiz-adv-x="286" />
+<glyph unicode="&#x2008;" horiz-adv-x="215" />
+<glyph unicode="&#x2009;" horiz-adv-x="344" />
+<glyph unicode="&#x200a;" horiz-adv-x="94" />
+<glyph unicode="&#x2010;" d="M133 508v158h678v-158h-678z" />
+<glyph unicode="&#x2011;" d="M133 508v158h678v-158h-678z" />
+<glyph unicode="&#x2012;" d="M133 508v158h678v-158h-678z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1263" d="M362 555v143h469v-143h-469z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1263" d="M127 555v143h940v-143h-940z" />
+<glyph unicode="&#x2018;" horiz-adv-x="776" d="M68 885l241 90l154 -619l-68 -26z" />
+<glyph unicode="&#x2019;" horiz-adv-x="536" d="M115 1286v293h280v-250q0 -111 -59.5 -188.5t-169.5 -108.5l-51 94q72 25 102 62q29 35 29 98h-131z" />
+<glyph unicode="&#x201c;" horiz-adv-x="937" d="M141 1063v250q0 113 58 188q59 78 172 109l51 -94q-72 -25 -103 -62q-29 -35 -28 -98h131v-293h-281zM510 1063v250q0 111 59.5 188.5t169.5 108.5l52 -94q-72 -25 -103 -62q-29 -35 -29 -98h132v-293h-281z" />
+<glyph unicode="&#x201d;" horiz-adv-x="829" d="M113 1286v293h280v-250q0 -111 -59.5 -188.5t-169.5 -108.5l-51 94q72 25 102 62q29 35 29 98h-131zM481 1286v293h281v-250q0 -113 -57 -188q-59 -78 -173 -109l-51 94q72 25 103 62q29 35 28 98h-131z" />
+<glyph unicode="&#x2022;" horiz-adv-x="1359" d="M301 692q0 137 100 238q98 98 248 98t250 -98.5t100 -237.5t-100 -237q-98 -96 -249.5 -96.5t-248.5 96.5q-100 100 -100 237z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1552" d="M133 98q0 46 31 80q31 35 82 35q47 0 78 -33q29 -31 28.5 -82t-28.5 -82q-31 -33 -78 -32q-51 0 -82 32.5t-31 81.5zM651 98q0 46 31 80q31 35 82 35q47 0 78 -33q29 -31 28.5 -82t-28.5 -82q-31 -33 -78 -32q-51 0 -82 32.5t-31 81.5zM1169 98q0 46 31 80q31 35 80 35 t80 -33q29 -31 29 -82t-29 -82q-31 -33 -80 -32.5t-80 33t-31 81.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="344" />
+<glyph unicode="&#x205f;" horiz-adv-x="430" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1161" d="M47 809v123h205q6 111 41 207q35 94 94 159q61 68 153.5 105t213.5 37q51 0 100 -6q47 -6 86 -17q45 -12 64 -18q25 -8 40 -17l15 -6l-43 -123q-4 2 -16.5 7.5t-22.5 9.5q-12 4 -94 22q-76 16 -133 17q-162 0 -248 -99q-88 -100 -88 -278h395v-123h-406q-4 -29 -6 -113 h355l-2 -123h-353q0 -106 19 -188q18 -83 49 -135q29 -49 76 -86q45 -35 86 -47q49 -14 90 -15q49 0 90 9q59 12 78 18q59 23 61 23q37 16 41 18l14 8l52 -123q-6 -6 -19 -12l-45 -23q-27 -12 -74 -26q-35 -10 -100 -21q-82 -12 -129 -12q-70 0 -129 23q-61 23 -121 73 q-49 41 -102 123q-46 71 -74 172q-27 96 -33 221h-164l3 123h157l4 113h-180z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1632" d="M72 1311v102h555v-102h-209v-686h-135v686h-211zM735 625v788h230l184 -655l184 655h230v-788h-127v663l-199 -663h-176l-197 663v-663h-129z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1170" d="M0 1170h1170v-1170h-1170v1170z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1458" d="M1032 1462q0 46 31 80q31 35 81 35q47 0 78 -33q29 -31 29 -82t-29 -82q-31 -33 -78 -32q-51 0 -81.5 32.5t-30.5 81.5zM1048 0v1169h183v-1169h-183zM66 1065v104h194v29q0 104 16 191q16 82 43 133t70 81.5t92 43t111 12.5q53 0 108 -21q61 -23 97 -43q37 -23 37 -28 l-64 -125q-83 74 -154 74q-106 0 -137 -48q-27 -39 -28 -151v-60v-14v-74h348v-104h-348v-1065h-191v1065h-194z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1413" d="M1038 0v1579l190 35v-1614h-190zM66 1065v104h194v29q0 104 16 191q16 82 43 133t70 81.5t92 43t111 12.5q53 0 108 -21q61 -23 97 -43q37 -23 37 -28l-64 -125q-83 74 -154 74q-106 0 -137 -48q-27 -39 -28 -151v-60v-14v-74h348v-104h-348v-1065h-191v1065h-194z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="2283" d="M1858 1462q0 46 31 80q31 35 81 35q47 0 78 -33q29 -31 29 -82t-29 -82q-31 -33 -78 -32q-51 0 -81.5 32.5t-30.5 81.5zM1874 0v1169h183v-1169h-183zM891 1065v104h194v29q0 104 16 191q16 82 43 133t70 81.5t92 43t111 12.5q53 0 108 -21q61 -23 97 -43q37 -23 37 -28 l-64 -125q-83 74 -154 74q-106 0 -137 -48q-27 -39 -28 -151v-60v-14v-74h348v-104h-348v-1065h-191v1065h-194zM66 1065v104h194v29q0 104 16 191q16 82 43 133t70 81.5t92 43t111 12.5q53 0 108 -21q61 -23 97 -43q37 -23 37 -28l-64 -125q-83 74 -154 74q-106 0 -137 -48 q-27 -39 -28 -151v-60v-14v-74h348v-104h-348v-1065h-191v1065h-194z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="2238" d="M1864 0v1579l190 35v-1614h-190zM891 1065v104h194v29q0 104 16 191q16 82 43 133t70 81.5t92 43t111 12.5q53 0 108 -21q61 -23 97 -43q37 -23 37 -28l-64 -125q-83 74 -154 74q-106 0 -137 -48q-27 -39 -28 -151v-60v-14v-74h348v-104h-348v-1065h-191v1065h-194z M66 1065v104h194v29q0 104 16 191q16 82 43 133t70 81.5t92 43t111 12.5q53 0 108 -21q61 -23 97 -43q37 -23 37 -28l-64 -125q-83 74 -154 74q-106 0 -137 -48q-27 -39 -28 -151v-60v-14v-74h348v-104h-348v-1065h-191v1065h-194z" />
+</font>
+</defs></svg> 
\ No newline at end of file
blob - /dev/null
blob + 1a607e95af6fca159f8f20282619f0f9a4d71d51 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile-webfont.ttf differ
blob - /dev/null
blob + cf6959b4dcbb57837166bc775a2827fdc2267a21 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile-webfont.woff differ
blob - /dev/null
blob + 3e442e04c29032dd0d2049b4c42b744da69b6ce2 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_bold-webfont.eot differ
blob - /dev/null
blob + 9e15b08371ae807c91b7306dd9979bef179fd72f (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_bold-webfont.svg
@@ -0,0 +1,148 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 200710 by vernon adams All rights reserved
+</metadata>
+<defs>
+<font id="webfont6RUKcuF0" horiz-adv-x="1118" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="657" />
+<glyph unicode=" "  horiz-adv-x="657" />
+<glyph unicode="&#x09;" horiz-adv-x="657" />
+<glyph unicode="&#xa0;" horiz-adv-x="657" />
+<glyph unicode="!" horiz-adv-x="729" d="M147 1530h431l-109 -1065h-211zM186 182q0 80 53.5 137.5t135.5 57.5q84 0 137 -57.5t53 -137.5q0 -82 -53 -139q-53 -55 -137 -55q-83 0 -135 55q-54 57 -54 139z" />
+<glyph unicode="&#x22;" horiz-adv-x="1040" d="M78 1579h424l-60 -387l-59 -387h-221zM600 1579h424l-59 -387l-62 -387h-219z" />
+<glyph unicode="#" horiz-adv-x="1267" d="M133 428v154h176l33 247h-209v152h229l60 430h225l-57 -430h205l53 430h229l-57 -430h154v-152h-173l-32 -247h205v-154h-226l-61 -428h-228l64 428h-203l-63 -428h-228l64 428h-160zM541 582h196l31 247h-197z" />
+<glyph unicode="$" horiz-adv-x="1374" d="M80 1167q0 94 29 170q27 72 77 123q49 49 121 80q80 35 148 45q94 14 172 14v113h110v-119q143 -12 256 -43q119 -33 187 -67l-86 -258l-13 4l-30 10l-50 16l-59 19l-68 18l-69 15q-51 8 -68 10v-346l156 -58q72 -27 139.5 -69.5t112.5 -91.5q47 -49 76 -121 q27 -66 26 -146q0 -246 -133 -372q-135 -129 -377 -148v-112h-110v110q-72 4 -181 27q-76 14 -161 45q-23 8 -101 39l-53 22l-2 2l66 264q0 -2 75 -32q63 -27 183 -60q109 -31 174 -30v442l-281 117q-266 110 -266 368zM412 1171q0 -14 4 -30q2 -10 16 -31q10 -16 37 -33 q20 -12 68 -30l90 -35v309q-8 0 -70 -6q-23 -2 -59 -15q-29 -10 -47.5 -24t-28.5 -43q-10 -27 -10 -62zM737 252q78 18 125 63t47 121q0 65 -30 111q-29 45 -109 76l-33 14v-385z" />
+<glyph unicode="%" horiz-adv-x="2179" d="M164 1130q0 82 12 148q12 61 35 111q20 43 53 79q33 35 64 56q33 20 71 32q55 16 72 19q45 4 72 4q96 0 168 -27q82 -31 118 -67q45 -45 74 -101q23 -45 39 -114q12 -55 12 -119q0 -51 -10 -117q-8 -49 -39 -119q-25 -55 -74 -104q-45 -45 -114 -72q-76 -29 -166 -28 q-70 0 -121 14q-47 12 -92 41q-31 18 -70 61q-35 37 -51 72q-18 37 -31 80q-8 27 -16 80q-6 36 -6 71zM395 1151q0 -78 11 -117q12 -45 34 -71q20 -25 49 -35q27 -10 62 -10q76 0 119 53q41 49 41 180q0 72 -11 111q-12 45 -34.5 71.5t-49.5 34.5q-31 10 -65 10 q-78 0 -117 -51t-39 -176zM559 -29l768 1702l227 -82l-776 -1697zM1223 420q0 80 12 145q12 63 35 113q20 43 53 80q33 35 63 55q35 23 70 33q53 16 74 18q45 4 72 4q96 0 167 -26q70 -27 117 -70q53 -49 76 -98q25 -53 39 -115q10 -47 10 -119q0 -53 -10 -118 q-8 -47 -39 -117q-27 -59 -72 -104.5t-116 -71.5q-76 -29 -164 -29q-70 0 -121 14q-47 12 -92 41q-37 23 -72 62q-29 33 -49 71q-18 37 -31 80q-12 45 -18 78q-4 25 -4 74zM1452 438q0 -70 12.5 -114.5t34.5 -71.5q25 -29 49.5 -37t61.5 -8q76 0 119 53q41 49 40 178 q0 66 -12 113q-12 49 -33 72q-23 27 -49 34q-31 10 -65 11q-78 0 -117 -52q-41 -53 -41 -178z" />
+<glyph unicode="&#x26;" horiz-adv-x="1781" d="M170 434q0 82 20 144q23 68 51.5 110.5t82.5 85.5q47 37 96 68q41 25 112 55q-4 2 -10 9t-12 12q-14 12 -51 51q-35 39 -66 82t-51 100q-23 61 -23 115q0 104 61.5 184t168 121t237.5 41q137 0 244 -41q104 -39 164 -119q59 -78 59 -178q0 -94 -28 -184q-27 -84 -95 -158 q-66 -72 -161 -107l321 -276v352l289 -6q0 -109 -14 -266q-12 -143 -27 -203l-12 -70l266 -227l-150 -182l-237 200l-21 -22q-98 -98 -299 -141q-117 -25 -262 -25q-94 0 -209 18q-98 16 -178 52q-83 37 -141 92t-92 135q-33 78 -33 178zM483 459q0 -111 80 -172 q78 -59 260 -60q76 0 133 9q45 6 105 24q47 14 72 27q31 15 43 24q4 2 7 4t5 4l2 3l-447 387q-68 -18 -100 -33q-39 -16 -82 -49q-35 -27 -57 -72q-21 -41 -21 -96zM618 1241q0 -27 5 -41q6 -18 14 -37q12 -25 20 -35q4 -6 11.5 -16t11.5 -14l25 -25q14 -14 22 -20l21 -17 q2 -2 7 -5t7 -5l6 -2q59 20 66 23q45 20 59 28q31 18 51 39q23 23 35 53.5t12 67.5q0 76 -51 115q-49 37 -135 36q-187 0 -187 -145z" />
+<glyph unicode="'" horiz-adv-x="600" d="M78 1579h424l-60 -387l-59 -387h-221z" />
+<glyph unicode="(" horiz-adv-x="827" d="M129 680q0 160 35 317q33 147 96 279q63 129 143 227q86 106 181 176l159 -211q-129 -123 -213 -333q-82 -207 -81 -455q0 -250 81 -447q84 -205 218 -327l-160 -211q-90 68 -180 174q-78 92 -146 221q-63 123 -98 275q-35 155 -35 315z" />
+<glyph unicode=")" horiz-adv-x="825" d="M70 1468l159 211q90 -68 181 -174q74 -88 145 -223q63 -123 98 -274q35 -156 35 -314q0 -160 -35 -317q-33 -147 -96 -279q-63 -129 -143 -227q-86 -106 -181 -176l-159 211q131 125 213 331.5t82 456.5t-82 447q-84 204 -217 327z" />
+<glyph unicode="*" horiz-adv-x="1011" d="M55 1094v194h271l-138 240l195 110l125 -223l129 225l194 -116l-137 -236h252v-194h-248l136 -230l-199 -119l-125 222l-125 -219l-197 116l136 230h-269z" />
+<glyph unicode="+" horiz-adv-x="1062" d="M115 451v268h276v350h289v-350h278v-268h-278v-355h-289v355h-276z" />
+<glyph unicode="," horiz-adv-x="720" d="M162 0v416h418v-363q0 -68 -20.5 -121t-51.5 -90q-25 -31 -82 -65q-51 -33 -94 -49q-29 -12 -107 -35l-61 114q96 35 135 76q41 45 41 117h-178z" />
+<glyph unicode="-" d="M156 573v263h794v-263h-794z" />
+<glyph unicode="." horiz-adv-x="569" d="M98 195q0 82 55.5 137t137.5 55t139 -55.5t57 -136.5q0 -84 -57 -139.5t-139 -55.5t-137.5 55.5t-55.5 139.5z" />
+<glyph unicode="/" horiz-adv-x="913" d="M86 -59l569 1726l283 -88l-578 -1726z" />
+<glyph unicode="0" horiz-adv-x="1456" d="M141 590q0 291 150 452q152 164 434 164q193 0 324 -76q137 -80 198 -212q66 -141 66 -328q0 -195 -66 -328q-66 -135 -200 -213q-131 -76 -322 -76q-188 0 -319 76q-135 78 -199 215q-66 142 -66 326zM471 592q0 -70 14 -146q12 -59 41 -112q29 -51 78 -76t121 -25 q58 0 104 19q43 16 74 51q31 34 49 80q18 45 25 100q8 70 8 119q0 63 -14 135q-12 59 -43 109q-29 47 -80 73.5t-123 26.5q-55 0 -102 -20q-45 -20 -72 -52q-31 -39 -47 -77q-20 -53 -27 -97q-6 -49 -6 -108z" />
+<glyph unicode="1" horiz-adv-x="911" d="M100 1063l267 108l331 -2v-1169h-348v893l-155 -68z" />
+<glyph unicode="2" horiz-adv-x="1173" d="M139 1065h2q37 18 58 27q4 2 38.5 15l61.5 23q70 29 145 44q96 18 148 18q68 0 133 -12q74 -14 125 -37q63 -29 106 -66q45 -39 74 -102q27 -59 27 -141q0 -121 -58 -216q-63 -104 -200 -223l-146 -127h373v-268h-858v217l326 275q3 3 30 24q18 14 35 31l33 28 q25 23 35 35l28 31q16 16 29 37q18 31 21 35q12 25 14 37q0 4 2 11t3 13t1 12q0 72 -37 109q-35 35 -119 35q-45 0 -100 -15q-66 -16 -111 -34l-79 -33l-48 -23z" />
+<glyph unicode="3" horiz-adv-x="1177" d="M121 1100l16 10q6 4 25.5 12t30.5 13q31 14 77 30q37 12 105 27q51 10 119 10q92 0 165 -12q72 -12 136 -39q61 -27 106 -72q39 -39 66 -108q23 -61 26 -148q2 -92 -53 -174t-147 -102q104 -25 170 -113q68 -90 67 -194q0 -111 -39 -189q-40 -80 -110 -129 q-72 -49 -162 -74q-92 -25 -207 -24q-66 0 -127 6q-35 4 -104 18q-4 0 -76 21q-27 6 -49 16l-19 6l84 252q18 -8 53 -18q57 -18 101 -27q76 -16 127 -16q100 0 153 35q51 33 52 119q0 59 -45.5 104t-108.5 66q-68 20 -143 18v246q61 0 102 8q49 10 86 27q41 18 63.5 50.5 t22.5 73.5q0 57 -45 84t-121 27q-16 0 -53 -4q-23 -2 -57 -10l-54 -13q-10 -2 -25.5 -8t-21.5 -8q-10 -4 -39 -14l-24 -9l-11 -4z" />
+<glyph unicode="4" horiz-adv-x="1280" d="M84 260l649 957l252 -66v-834h180v-258h-180v-276l-289 2v274h-571zM418 315h278v418z" />
+<glyph unicode="5" horiz-adv-x="1173" d="M129 -90l41 252l23 -8q15 -6 55 -19q53 -16 80 -22q43 -10 94 -19q49 -8 100 -8q109 0 168.5 47t59.5 147.5t-52 163.5q-49 61 -147 62q-101 0 -252 -80l-139 123v620h805v-245h-525v-226q0 2 17 13q20 12 53 20q41 10 74 10q215 0 340 -122.5t125 -333.5 q0 -144 -68 -252q-70 -111 -186 -164q-117 -55 -275 -51q-90 2 -201 28q-94 23 -190 64z" />
+<glyph unicode="6" horiz-adv-x="1265" d="M137 457q0 145 41 278t111 230q68 96 168 176q96 78 211 131q113 51 243 86l80 -264q-297 -61 -426 -234q66 14 135 14q109 0 203 -40q96 -43 156 -107q63 -70 96 -156q35 -92 35 -186q0 -102 -35 -195q-34 -89 -98 -153q-63 -63 -158 -100q-96 -37 -211 -37 q-125 0 -233.5 45t-173.5 118q-72 82 -107 177q-37 100 -37 217zM463 457q4 -74 14 -121q12 -49 39 -94q25 -40 68 -62q41 -20 102 -20q47 0 78 14q33 14 53 39q23 27 35 61q12 37 18 74q4 25 4 84q0 94 -45 141.5t-135 47.5q-131 0 -231 -95v-69z" />
+<glyph unicode="7" horiz-adv-x="1124" d="M129 911v258h879l82 -180l-588 -1225l-297 132l487 1015h-563z" />
+<glyph unicode="8" horiz-adv-x="1304" d="M139 274q0 66 25 127q23 55 65 103q41 45 93 71q53 29 106 37q-113 20 -188 113q-74 90 -74 211q0 90 39 168q37 76 104 121q78 53 154 73q89 25 190 25q104 0 191 -25q78 -23 153 -73q68 -45 105 -121q39 -78 39 -168q0 -121 -74 -211q-76 -90 -190 -113 q57 -10 108 -36.5t92 -71.5q43 -47 66 -103q25 -61 24 -127q0 -82 -28 -151q-29 -72 -76 -115q-49 -45 -115 -76q-63 -29 -141 -45q-70 -14 -154 -14q-86 0 -155 14q-80 16 -140 45q-70 33 -114 76q-47 43 -76 115q-29 69 -29 151zM461 297q0 -86 49 -125q43 -35 143 -35 q102 0 146 35q47 37 47 125q0 96 -49 156q-49 57 -143.5 57t-143.5 -57q-49 -60 -49 -156zM479 922q0 -86 43 -127q45 -41 131 -41t131 41q43 41 43 127q0 147 -174 147t-174 -147z" />
+<glyph unicode="9" horiz-adv-x="1263" d="M117 698q0 147 59 254q63 113 172 174q111 61 256 62q272 0 418 -146q147 -147 147 -409q0 -154 -49 -291q-49 -135 -127 -236q-82 -102 -182 -180q-109 -82 -209 -127q-113 -49 -209 -69l-78 266q147 31 260 102q109 70 173 164q-59 -16 -144 -16q-221 0 -354 118.5 t-133 333.5zM430 684q0 -84 47 -137t123 -53q16 0 94 4l60 5t41 3l39 4l16 137q0 57 -14 115q-12 47 -39 88q-23 35 -70 57q-41 20 -100 21q-61 0 -98 -14.5t-60 -49.5q-18 -29 -28.5 -76t-10.5 -104z" />
+<glyph unicode=":" horiz-adv-x="747" d="M190 0v432h418v-432h-418zM190 735v432h418v-432h-418z" />
+<glyph unicode=";" horiz-adv-x="747" d="M190 735v432h418v-432h-418zM193 0v416h417v-363q0 -68 -20.5 -121t-50.5 -90q-27 -33 -80 -65q-47 -29 -97 -49q-29 -12 -106 -35l-61 114q96 35 135 76q41 45 41 117h-178z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1193" d="M131 475v238l842 512v-301l-547 -330l547 -330v-301z" />
+<glyph unicode="=" horiz-adv-x="1187" d="M78 268v234h995v-234h-995zM78 643v234h995v-234h-995z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1134" d="M190 264l539 330l-539 330l3 301l839 -512v-238l-839 -512z" />
+<glyph unicode="?" horiz-adv-x="1079" d="M14 1462q61 31 95 41q152 51 354 51q121 0 215 -20q92 -20 176 -66q80 -43 123 -120.5t43 -182.5q0 -35 -2 -51q-2 -20 -12 -65q-6 -33 -29 -76q-20 -41 -55 -82q-41 -47 -84 -80q-51 -39 -125 -74t-170 -63v-254h-322v409q10 4 36 12.5t36 12.5l78 27q10 4 36.5 12 t41.5 14q43 15 73.5 30.5t61.5 37.5q35 25 53 43t33 51q12 29 12 63.5t-14 67.5q-12 29 -33 43q-22 15 -55 25q-33 8 -68 12q-20 2 -80 2q-55 0 -137 -18q-113 -25 -143 -35l-58 -19zM209 125q0 82 53 139q52 55 135 55t135 -55q55 -59 55.5 -139t-55.5 -139 q-52 -55 -135 -55.5t-135 55.5q-53 57 -53 139z" />
+<glyph unicode="@" horiz-adv-x="1957" d="M127 641q0 141 37 270t112 242q78 115 187 199q106 82 260 131t334 49q160 0 305 -49q144 -49 258 -142q111 -90 178.5 -231t67.5 -309q0 -117 -33 -213q-35 -102 -92 -174q-57 -74 -119 -109q-59 -35 -236 -35q-84 0 -126 56q-45 57 -46 149q0 14 5 51 q-35 -102 -74 -155q-41 -57 -98 -84q-66 -31 -144 -31q-33 0 -94 12q-45 8 -94 37q-41 23 -84 74q-37 45 -68 113q-33 76 -33 167q0 123 50 220q49 94 118 157q68 61 160 97q86 33 191 32q61 0 139 -14q68 -12 123 -37q53 -23 88 -65q35 -41 35 -91q0 -18 -2 -26l-82 -465 q133 23 190 94.5t57 196.5q0 264 -147 399t-420 135q-281 0 -452 -182q-170 -178 -170 -469q0 -268 159 -408q162 -139 445 -139q126 0 264 56l53 -207q-72 -41 -158 -58q-94 -18 -200 -18q-188 0 -346 55t-267 156q-106 98 -170 246q-61 143 -61 317zM776 635 q0 -72 37 -127t98 -55q43 0 84 18q45 20 68 43q29 29 53 72q29 51 41 84q15 43 31 98q4 16 22 100q10 45 19 101q-8 2 -27 4q-6 0 -29.5 4t-39.5 6q-57 4 -80 4q-129 0 -203 -86t-74 -266z" />
+<glyph unicode="A" horiz-adv-x="1566" d="M57 0l521 1579h405l520 -1579h-368l-111 350h-485l-113 -350h-369zM586 520h391l-191 617z" />
+<glyph unicode="B" horiz-adv-x="1556" d="M188 0v1579h418q273 0 406 -37q135 -37 196 -82q143 -100 144 -301q0 -135 -97 -223q-98 -89 -245 -105q291 -43 368 -206q31 -63 31 -164q0 -92 -33 -178q-33 -82 -88 -133q-63 -57 -143 -89q-158 -61 -420 -61h-537zM557 254h119q162 0 203 10q16 4 65 21q28 9 43 24 q10 10 31 39q27 39 26 117q0 76 -22 125q-23 47 -72 72q-86 41 -256 40h-137v-448zM557 928h139q330 0 330 207q0 92 -45 131q-63 57 -283 57h-141v-395z" />
+<glyph unicode="C" horiz-adv-x="1269" d="M76 791q0 395 180 602q182 209 512 209q221 0 399 -74q47 -20 58 -29l18 -12l-100 -260l-19 12l-22 16q-126 80 -307 80q-180 0 -266.5 -131t-86.5 -422q0 -543 361 -542q178 0 340 108l100 -260q-90 -74 -301 -104q-82 -12 -174 -13q-324 0 -508 213.5t-184 606.5z" />
+<glyph unicode="D" horiz-adv-x="1609" d="M188 0v1579h492q809 0 809 -797q0 -377 -199 -581q-195 -201 -610 -201h-492zM557 254h84q260 0 358 100q100 102 115 295q4 78 4 135.5t-4 135.5q-2 51 -16 116q-14 63 -33 103q-49 94 -152 141q-96 45 -272 45h-84v-1071z" />
+<glyph unicode="E" horiz-adv-x="1366" d="M188 0v1579h1072v-270h-703v-379h612v-228h-612v-436h713v-266h-1082z" />
+<glyph unicode="F" horiz-adv-x="1280" d="M188 0v1579h1082v-270h-713v-381h627v-226h-627v-702h-369z" />
+<glyph unicode="G" horiz-adv-x="1611" d="M119 770q0 385 200 608q201 221 570 221q95 0 178 -12t135 -31q55 -20 90 -36q47 -23 54 -29l18 -12l-109 -246l-28.5 14l-30.5 15q-31 14 -133 45q-98 29 -166 28q-195 0 -301 -143q-109 -145 -109 -424q0 -150 35 -270q33 -113 113 -187q78 -72 186 -71q182 0 301 63 v352h-358v224h682v-879h-238l-49 127q-41 -80 -139 -121q-102 -43 -227 -43q-311 0 -494 207q-180 205 -180 600z" />
+<glyph unicode="H" horiz-adv-x="1601" d="M154 0v1579h368v-649h557v649h371v-1579h-371v705h-557v-705h-368z" />
+<glyph unicode="I" horiz-adv-x="862" d="M78 0v170h170v1237h-170v172h708v-172h-170v-1237h170v-170h-708z" />
+<glyph unicode="J" horiz-adv-x="894" d="M31 154q121 14 188 49q66 33 98 106q31 71 31 197v1073h369v-1040q1 -19 0 -37q0 -292 -135 -434q-141 -147 -457 -154z" />
+<glyph unicode="K" horiz-adv-x="1509" d="M190 0v1579h369v-678h82l449 678h376l-532 -782l588 -797h-385l-502 676h-76v-676h-369z" />
+<glyph unicode="L" horiz-adv-x="1189" d="M139 0v1579h369v-1325h682v-254h-1051z" />
+<glyph unicode="M" horiz-adv-x="2002" d="M170 0v1579h436l391 -1171l408 1171h434v-1579h-305v1085l-354 -1085h-344l-359 1085v-1085h-307z" />
+<glyph unicode="N" horiz-adv-x="1642" d="M150 0v1579h393l610 -1061v1061h328v-1579h-381l-623 1073v-1073h-327z" />
+<glyph unicode="O" horiz-adv-x="1626" d="M102 788q0 385 177 603q176 215 534 215t533 -215q178 -219 178 -603q0 -190 -43 -339q-43 -147 -129 -256q-84 -104 -222 -164q-133 -57 -317 -57.5t-317 57.5q-137 59 -222 164q-86 109 -129 256q-43 149 -43 339zM471 788q0 -86 10 -174q10 -86 33 -151 q25 -70 61 -119q39 -51 99 -78q63 -29 139 -28.5t139 28.5q59 27 99 78q37 49 61 119q23 66 33 151q8 72 8 174q0 104 -8 177q-10 82 -33 149q-25 72 -61 121q-35 47 -98.5 75.5t-139.5 28.5t-139.5 -28.5t-98.5 -75.5q-37 -49 -61 -121q-23 -68 -33 -149q-10 -89 -10 -177z " />
+<glyph unicode="P" horiz-adv-x="1454" d="M139 0v1579h459q133 0 248 -16q121 -16 203 -50q98 -39 157 -94q61 -57 99 -151q35 -88 34 -215q0 -119 -36.5 -207t-100.5 -144q-66 -57 -164 -90q-102 -35 -211 -47q-111 -12 -258 -12h-61v-553h-369zM508 772h59q82 0 133 8q63 10 111 27q49 16 86 51q35 33 55 78 q20 47 21 113q0 82 -27 147q-25 59 -74 94q-47 33 -116 49q-59 14 -158 15h-90v-582z" />
+<glyph unicode="Q" horiz-adv-x="1626" d="M102 788q0 385 177 603q176 215 534 215t533 -215q178 -219 178 -603q0 -219 -55.5 -382.5t-174.5 -272.5q-115 -106 -293 -143l287 -223l-174 -187l-455 404q-135 20 -247 88q-104 63 -174 170q-66 100 -101 241q-35 139 -35 305zM471 788q0 -86 10 -174q10 -86 33 -151 q25 -70 61 -119q39 -51 99 -78q63 -29 139 -28.5t139 28.5q57 27 97 78q37 49 61 119q27 74 35 151q8 72 8 174q0 104 -8 177q-8 74 -35 149q-25 72 -61 121q-35 47 -96.5 75.5t-139.5 28.5t-139.5 -28.5t-95.5 -75.5q-41 -53 -63.5 -120.5t-33.5 -149.5q-10 -89 -10 -177z " />
+<glyph unicode="R" horiz-adv-x="1472" d="M139 0v1579h418q188 0 324 -18q150 -20 227 -48q88 -31 145 -83q55 -51 76 -113q23 -63 23 -143q0 -78 -23 -146q-20 -59 -63 -106q-41 -45 -99 -72q-63 -31 -129 -45q-68 -15 -153 -19q119 -14 190 -34q84 -25 150 -70q70 -47 104 -121q35 -72 35 -178v-383h-365v408 q0 74 -26 133q-25 57 -76 84q-49 27 -117 39q-63 12 -153 12h-119v-676h-369zM508 899h43q92 0 156 6q68 6 119 20.5t87 41.5q31 23 52 65q18 41 18 98q0 63 -12 93q-16 41 -43 63q-31 27 -76 41t-111 21q-61 6 -147 6h-86v-455z" />
+<glyph unicode="S" horiz-adv-x="1366" d="M92 1159q0 86 35 166q31 72 90 127q53 51 131 88q82 39 158 53q88 16 170 17q80 0 158 -15q100 -18 149 -34q94 -31 119 -41q14 -6 32.5 -12.5l32 -11.5t21.5 -9l29 -14l-95 -279q-12 8 -22 14l-58 33q-29 16 -90 41q-49 20 -112 35q-59 14 -127 14q-14 0 -37 -1t-33 -1 q-33 0 -65 -6q-45 -8 -61.5 -14t-45.5 -27q-25 -18 -33 -39q-10 -27 -10 -55q0 -25 6 -43q6 -16 35 -43q29 -25 82 -47l354 -142q152 -59 254 -178q106 -123 107 -268q0 -508 -584 -508q-82 0 -176 16q-82 14 -148 35q-53 16 -120 47q-20 8 -80 39l-39 25h-2l82 276 q25 -12 30 -16q16 -10 76 -39q58 -28 111 -49q47 -18 119 -39q59 -16 116 -16q16 0 42 1t34 1q27 0 64 6q35 6 55 14q18 8 41 27q18 14 28 43q8 23 9 59q0 66 -31 109q-33 45 -111 75l-424 175q-131 55 -198.5 161.5t-67.5 249.5z" />
+<glyph unicode="T" horiz-adv-x="1155" d="M-12 1323v256h1179v-256h-401v-1323h-369v1323h-409z" />
+<glyph unicode="U" horiz-adv-x="1613" d="M139 723v856h371v-860q4 -197 12 -236q16 -70 23 -88q12 -37 26 -57q20 -29 37 -45q25 -25 51 -37q59 -27 132 -27q74 0 108 9q45 10 72 26q25 14 53 43q20 20 36.5 59.5t24.5 69.5q8 33 13 84q8 74 8 199v860h369v-856q0 -375 -160 -567.5t-506 -192.5q-354 0 -514 201 q-156 192 -156 559z" />
+<glyph unicode="V" horiz-adv-x="1329" d="M-8 1579h344l334 -1075l321 1075h348l-491 -1579h-367z" />
+<glyph unicode="W" horiz-adv-x="1994" d="M23 1579h356l217 -1130l207 1116h393l207 -1116l217 1130h356l-338 -1579h-405l-234 1204l-233 -1204h-406z" />
+<glyph unicode="X" horiz-adv-x="1366" d="M-4 0l481 797l-481 782h383l305 -512l305 512h383l-481 -782l481 -797h-391l-297 494l-299 -494h-389z" />
+<glyph unicode="Y" horiz-adv-x="1234" d="M-61 1579h366l311 -674l310 674h374l-509 -1061v-518h-349v518z" />
+<glyph unicode="Z" horiz-adv-x="1230" d="M53 0v252l703 1071h-703v256h1108v-225l-694 -1057h696v-297h-1110z" />
+<glyph unicode="[" horiz-adv-x="1155" d="M229 0v1579h750v-262h-418v-1055h418v-262h-750z" />
+<glyph unicode="\" horiz-adv-x="1179" d="M166 1579l321 109l572 -1725l-322 -110z" />
+<glyph unicode="]" horiz-adv-x="1155" d="M229 0v262h416v1055h-416v262h750v-1579h-750z" />
+<glyph unicode="^" horiz-adv-x="1228" d="M229 563l258 619h254l258 -619h-274l-113 383l-110 -383h-273z" />
+<glyph unicode="_" horiz-adv-x="1128" d="M68 -98v262h995v-262h-995z" />
+<glyph unicode="`" horiz-adv-x="860" d="M170 850l313 145l203 -612l-158 -76z" />
+<glyph unicode="a" horiz-adv-x="1247" d="M94 362.5q0 188.5 139 276.5q143 90 394 90q86 0 151 -12q0 115 -10 141q-23 61 -53 78q-35 18 -90 18q-197 0 -373 -82l-84 209q186 115 469 115q326 0 430 -209q59 -117 59 -313v-674h-270l-47 150q-49 -86 -125 -132q-74 -45 -182 -45q-195 0 -301.5 100.5t-106.5 289 zM444 389q0 -88 39 -129q41 -43 109 -43q109 0 186 92v230q3 3 -37 6q-27 2 -59 2q-129 0 -182 -35q-56 -37 -56 -123z" />
+<glyph unicode="b" horiz-adv-x="1370" d="M188 0v1677l353 47v-663q119 135 315 135q137 0 238 -78q201 -154 200 -532q0 -469 -288 -580q-86 -33 -183 -33q-252 0 -313 193l-76 -166h-246zM541 297q90 -96 200 -96q203 0 203 385q0 225 -43 309q-43 78 -129 78q-115 0 -231 -117v-559z" />
+<glyph unicode="c" horiz-adv-x="1126" d="M100 571q0 139 31 238q31 100 84 168q55 72 127 121q145 98 322 98q135 0 221 -25q82 -23 180 -75l-66 -226q-31 29 -110 58q-88 33 -164 33q-150 0 -211 -86.5t-61 -288.5q0 -375 299 -375q111 0 233 80l14 8l66 -223q-86 -43 -107 -51q-123 -49 -268 -50 q-150 0 -248 39q-100 39 -178 115q-78 74 -121 188q-43 113 -43 254z" />
+<glyph unicode="d" horiz-adv-x="1372" d="M106 624.5q0 145.5 54 282.5q51 133 153.5 211t241.5 78q201 0 307 -149v630l352 49v-1726h-247l-76 166q-23 -76 -105 -127q-100 -66 -211 -66q-94 0 -180 33q-82 31 -133 86q-55 59 -90 131q-31 66 -49 164q-17 92 -17 237.5zM457 586q0 -375 202 -375q141 0 203 86 v559q-119 106 -233 107q-152 0 -168 -263q-4 -57 -4 -114z" />
+<glyph unicode="e" horiz-adv-x="1232" d="M96 565q2 166 49 285q41 106 121 186q160 160 406 160q150 0 258 -66q225 -135 221 -464v-164h-694q2 -129 78 -211q72 -78 196 -78q172 0 295 90l68 -233q-188 -96 -389 -97q-389 0 -541 285q-68 132 -68 293v14zM457 676h409q4 285 -200 285q-66 0 -117 -41 q-92 -76 -92 -244z" />
+<glyph unicode="f" horiz-adv-x="866" d="M61 1016v145h191q0 266 100 400q102 135 307 135q102 0 230 -31v-254q-68 25 -150 25q-68 0 -102.5 -59.5t-34.5 -215.5h281v-145h-281v-1016h-350v1016h-191z" />
+<glyph unicode="g" horiz-adv-x="1265" d="M78 -205q0 84 53 158q57 78 154 127q-156 14 -176 188q-2 28 -3 50q0 44 9 65q14 37 28 55q41 57 144 90l80 23q-135 6 -197 104q-35 57 -35 136q0 190 127 299q125 106 340 106q217 0 305 -59q129 57 279 57h100v-225h-246q63 -94 64 -152q0 -49 -10 -100 q-8 -39 -39 -99q-27 -51 -72 -92q-101 -86 -289 -104l-303 -31l19 -119l268 -20q276 -20 414 -115q135 -92 135 -282q0 -414 -641 -414q-438 0 -496 229q-12 47 -12 125zM356 -166q0 -25 4 -49q2 -16 17 -37q12 -18 39 -29q61 -23 162 -22q113 0 163 8q68 10 95 21 q29 10 55 36q31 37 31 95q0 53 -19 82q-39 55 -248 75l-139 15q-6 0 -45 -29q-37 -29 -59 -53q-29 -33 -39 -53q-17 -33 -17 -60zM449 793q0 -96 65 -162q18 -18 37 -27l121 10q53 2 100 66q47 61 43 125q0 164 -180 164q-90 0 -139 -39q-47 -37 -47 -137z" />
+<glyph unicode="h" horiz-adv-x="1388" d="M188 0v1667l351 62v-672q6 15 36 43q37 35 66 49q80 47 211 47q199 0 305 -119q111 -123 111 -354v-723h-350v748q0 104 -49.5 159.5t-115 55.5t-104.5 -13q-43 -14 -59 -24q-27 -20 -51 -41v-885h-351z" />
+<glyph unicode="i" horiz-adv-x="727" d="M197 1608q0 82 55 137t137 55t139.5 -55t57.5 -137q0 -84 -57.5 -139.5t-139.5 -55.5t-137 55.5t-55 139.5zM215 -2v1159h350v-1159h-350z" />
+<glyph unicode="j" horiz-adv-x="729" d="M-8 -113q52 28 86 56q35 29 63.5 65.5t44.5 91.5q14 49 15 123v936h350v-956q0 -104 -37 -201q-35 -92 -98 -164q-61 -71 -142 -117q-86 -49 -172 -69zM184 1604q0 82 54 139q53 55 137 55q83 0 135 -55q53 -57 53 -139q0 -80 -53 -137.5t-135 -57.5q-84 0 -137.5 57.5 t-53.5 137.5z" />
+<glyph unicode="k" horiz-adv-x="1368" d="M188 0v1677l353 49v-991l440 434h381l-512 -520l520 -649h-393l-344 496l-92 -86v-410h-353z" />
+<glyph unicode="l" horiz-adv-x="686" d="M174 0v1677l350 49v-1726h-350z" />
+<glyph unicode="m" horiz-adv-x="1982" d="M188 0v1159h248l78 -178q41 109 117 160q82 55 198 55q115 0 191 -39q82 -43 125 -135q61 90 141 131q82 43 213 43q178 0 270 -115q90 -111 91 -325v-756h-351v782q0 178 -118 179q-45 0 -91 -23q-35 -16 -96 -76v-862h-350v793q0 135 -68 159q-25 8 -49 9 q-37 0 -61 -11q-94 -43 -135 -119v-831h-353z" />
+<glyph unicode="n" horiz-adv-x="1361" d="M182 0v1159h267l67 -147q90 184 305 184t313.5 -116.5t98.5 -358.5v-721h-350v748q0 117 -37 163.5t-111 49.5h-12q-66 0 -113 -29q-51 -31 -75 -76v-856h-353z" />
+<glyph unicode="o" horiz-adv-x="1280" d="M70 582q0 291 147.5 452.5t421.5 161.5t421.5 -162t147.5 -452q0 -289 -147.5 -449t-421.5 -160t-421.5 160t-147.5 449zM420 583.5q0 -196.5 53 -284.5q53 -90 166 -90q115 0 168 90q53 88 53 284.5t-53 284.5q-55 92 -168 93q-111 0 -166 -93q-53 -88 -53 -284.5z" />
+<glyph unicode="p" horiz-adv-x="1347" d="M160 -406v1565h266l68 -149q31 88 106.5 137t206.5 49q127 0 213 -43q82 -41 139 -127q111 -166 111 -457q0 -293 -133 -444.5t-353 -151.5q-166 0 -272 148v-527h-352zM512 324q141 -115 236 -115q78 0 114 57q39 61 45 123q2 25 8 113q2 31 3 104q0 68 -3 92q0 4 -2 35 t-4 47q-6 43 -18 74q-10 29 -31 57q-37 53 -117 54q-127 0 -231 -109v-532z" />
+<glyph unicode="q" horiz-adv-x="1359" d="M102 565q0 485 304 600q82 31 180 31q100 0 174 -53q51 -33 100 -139l49 155h301v-1565h-352v527q-121 -145 -272 -146q-102 0 -195 35q-90 35 -139 96q-150 180 -150 459zM453 600q0 -84 2 -108q0 -4 2 -35t4 -49q6 -43 18 -78q14 -41 29 -62q37 -59 115 -59 q119 0 235 117v505q-45 70 -80 97q-45 33 -119 33q-61 0 -104 -31t-63 -84q-23 -57 -31 -115q-8 -55 -8 -131z" />
+<glyph unicode="r" horiz-adv-x="880" d="M178 0v1159h301l39 -182q18 53 55 90q29 29 66 47q29 14 84 33q45 14 147 14v-299q-51 18 -114 19q-119 0 -228 -84v-797h-350z" />
+<glyph unicode="s" horiz-adv-x="1153" d="M123 864.5q0 151.5 123 241.5q125 90 346 90q117 0 233 -31q113 -29 170 -53l25 -8l-66 -221q-76 29 -170 49q-113 25 -166 24q-74 0 -106 -10q-41 -12 -55.5 -26.5t-16.5 -53.5t17 -57q20 -20 71 -41l299 -115q55 -18 107 -55q109 -78 108 -250q0 -236 -206 -321 q-121 -51 -267 -52q-274 0 -442 103l66 227q76 -35 180 -61q102 -27 176 -29h21q71 0 100 18q47 25 47 107q0 51 -109 94l-157 62q-200 77 -258 141q-70 76 -70 227.5z" />
+<glyph unicode="t" horiz-adv-x="940" d="M0 1016v143h219l10 434l330 84v-518h326v-143h-326v-598q0 -92 27 -137q29 -49 94 -50q34 0 74 13q29 8 59 26q23 12 23 15l82 -211q-4 -2 -17 -11q-6 -4 -45 -20q-49 -20 -74 -29q-29 -10 -94 -20q-61 -10 -110 -10q-82 0 -156 26q-66 23 -115 80q-47 53 -71.5 145.5 t-24.5 217.5v563h-211z" />
+<glyph unicode="u" horiz-adv-x="1349" d="M201 449v710h346v-735q0 -100 33 -158q33 -53 116 -57q111 10 187 94v856h350v-1159h-248l-76 176q-41 -109 -92 -145q-74 -57 -188 -58q-219 0 -324 119q-104 120 -104 357z" />
+<glyph unicode="v" horiz-adv-x="1179" d="M6 1159h369l215 -858l213 858h371l-373 -1159h-424z" />
+<glyph unicode="w" horiz-adv-x="1624" d="M25 1159h323l154 -756l157 756h308l155 -753l160 753h320l-291 -1159h-353l-149 651l-147 -651h-349z" />
+<glyph unicode="x" horiz-adv-x="1144" d="M-4 1159h393l193 -325l186 325h387l-395 -575l389 -584h-381l-190 346l-189 -346h-387l397 584z" />
+<glyph unicode="y" horiz-adv-x="1226" d="M25 1159h358l274 -784l193 784h354l-395 -1192q-70 -217 -205 -327q-129 -104 -352 -109l-98 238q96 6 157.5 24.5t98.5 54.5q41 41 57 80t39 115z" />
+<glyph unicode="z" horiz-adv-x="1052" d="M102 0v233l488 664h-475v264h852v-229l-482 -668h492v-264h-875z" />
+<glyph unicode="{" horiz-adv-x="851" d="M145 551v188q41 0 64 27q20 23 33 88q12 61 12 172q0 84 12 152q12 72 37 118.5t57 83.5q35 37 72 60q31 18 82 35q31 10 88 18q43 6 90 6v-188q-31 0 -51 -11q-18 -8 -33 -40q-14 -31 -20 -99q-4 -43 -4 -180q0 -72 -13 -127q-14 -63 -28 -90q-20 -37 -43 -59 q-20 -20 -49 -37q-27 -14 -50 -23q182 -68 183 -338q0 -115 6 -180q6 -74 18 -98q14 -33 33 -41q16 -8 51 -8v-191q-47 0 -90 6q-57 8 -88 19q-43 14 -82 36q-37 20 -70 58q-41 45 -59 86q-23 53 -35 117q-14 78 -14 151q0 113 -12 174q-12 66 -33 88q-23 27 -64 27z" />
+<glyph unicode="|" horiz-adv-x="811" d="M252 -147v1814h307l2 -1814h-309z" />
+<glyph unicode="}" horiz-adv-x="851" d="M160 -20q27 0 35 2q18 4 28 14q16 16 21 33q6 23 12 57q8 45 10 90q2 35 2 131q0 270 183 338q-23 8 -50 23q-29 16 -49 37q-23 23 -43 59q-14 27 -28 90q-12 55 -13 127q0 96 -2 131q-4 63 -8 90q-4 23 -14 60q-4 14 -21 30q-10 10 -28 15q-16 4 -35 4v188q47 0 90 -6 q57 -8 88 -18q51 -16 82 -35q37 -23 72 -60q33 -37 57 -84t37 -118q12 -68 12 -152q0 -164 24.5 -225.5t84.5 -61.5v-188q-59 0 -84 -61.5t-25 -227.5q0 -74 -14 -151q-12 -63 -35 -117q-20 -45 -57 -86q-31 -33 -72 -58q-39 -23 -82 -36q-31 -10 -88 -19q-43 -6 -90 -6v191 z" />
+<glyph unicode="~" horiz-adv-x="1206" d="M176 336q0 164 60 252q58 86 172 86q51 0 94 -15q53 -18 80 -34l69 -43q34 -22 68 -37q31 -14 63 -15q35 0 47 21q12 23 13 84h219q0 -147 -62 -236q-61 -90 -170 -90q-43 0 -96 17q-37 12 -88 39l-76 43q-57 33 -69 38q-31 14 -56 15q-29 0 -45 -29q-14 -27 -14 -96 h-209z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1095" d="M78 586q0 115 31 213q31 96 86 168q57 74 124 120q71 49 154 74q84 25 168 25q135 0 221 -25q82 -23 180 -76l-63 -225q-31 27 -113 58q-88 33 -164 32q-150 0 -211 -86t-61 -278q0 -365 299 -365q31 0 72 10q35 8 69 23q31 12 56 25q8 4 39 22l12 10l65 -225 q-49 -25 -106 -49q-47 -20 -123 -35q-86 -16 -172 -16q-115 0 -219 41q-106 43 -180 112.5t-119 190.5q-45 119 -45 256zM621 -147v1523h161l2 -1523h-163z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1202" d="M188 260l9 10q4 4 20 25q8 10 29 39q10 14 30.5 51t28.5 57q10 25 21 64q8 31 8 67l-127 -2v144h102q0 -2 -3 0t-9 10q-16 16 -27 31q-29 41 -34 51q-12 23 -27 67q-12 39 -12 82q0 78 30 146q31 70 88 117q57 49 146 75q92 29 198 29q43 0 117 -8q43 -4 98 -21 q51 -14 80 -26q53 -23 64 -29q8 -4 22.5 -12t20.5 -13l26 -18l11 -6l-133 -219l-11 10l-34 23q-33 16 -54 24q-37 14 -73 23q-47 10 -92.5 10t-82.5 -10q-35 -10 -53 -25q-16 -14 -28 -35q-10 -18 -15 -41q-4 -25 -4 -41q0 -83 55 -159l25 -29h406v-150h-388q0 -68 -14 -119 t-35 -85q-18 -31 -45 -58q-29 -29 -35 -33q-12 -8 -16 -10h592v-266h-873z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1275" d="M-43 1577h379l301 -766l299 766h385l-389 -807h203v-119h-261l-63 -129h324v-121h-324v-401h-348v401h-326v121h324l-62 129h-262v119h205z" />
+<glyph unicode="&#xa9;" horiz-adv-x="2078" d="M135 782q0 143 35 262q33 115 102 224q63 100 152 182q86 80 190 137q100 53 217 86q115 31 230 31q152 0 293 -41q131 -37 235 -107q90 -59 176 -151q82 -88 127 -172q51 -96 76 -174q43 -139 41 -305q0 -51 -6 -107q-6 -47 -29 -121q-27 -84 -49 -131q-35 -74 -76 -133 q-43 -63 -106 -127q-59 -61 -144 -112q-86 -53 -182 -91q-168 -66 -350 -65q-123 0 -240 31q-123 33 -221 86q-111 61 -190 137q-90 86 -150 182q-61 100 -96 223q-35 127 -35 256zM391 782q0 -139 49 -266q47 -123 140 -217q92 -96 215 -145q131 -53 278 -54q143 0 273 56 q127 55 217 147q84 88 139 219q51 123 51 266q0 59 -12 125q-14 74 -37 129q-31 76 -66 129q-39 61 -96 115q-59 55 -126.5 94t-162.5 64q-92 25 -198 24q-100 0 -195 -30q-96 -31 -180 -90q-82 -57 -150 -142q-66 -82 -102 -190q-37 -111 -37 -234zM608 784q0 156 54 269 q55 117 161 180q109 66 252 65q68 0 152 -22q80 -22 116 -43l25 -16v-209l-74 36q-29 14 -94 31q-57 14 -129 15q-52 0 -92 -19q-47 -23 -68 -45q-20 -25 -39 -70q-16 -45 -22 -82q-6 -43 -6 -90q0 -80 16 -145q14 -57 49 -96q31 -34 74 -49q41 -14 96 -15q109 0 224 58 l73 36v-219l-28 -14q-139 -70 -256 -70q-109 0 -195 31q-84 31 -139 82q-53 51 -88 119q-39 78 -49 137q-13 69 -13 145z" />
+<glyph unicode="&#xad;" d="M156 573v263h794v-263h-794z" />
+<glyph unicode="&#xae;" horiz-adv-x="1363" d="M14 1221q0 172 88 323q86 145 240 236q152 88 346 88q184 0 342 -86q152 -84 244 -236q90 -150 90 -325q0 -178 -90 -328t-244 -234q-160 -88 -342 -88q-188 0 -344 88.5t-242 235.5q-88 152 -88 326zM160 1217q0 -215 149 -363q147 -145 377 -145t381 147 q150 147 150 363q0 217 -152 364.5t-379 147.5q-223 0 -377 -150q-149 -147 -149 -364zM479 891v668h135q78 0 127 -9q53 -8 103 -28q47 -18 71.5 -55t24.5 -93q0 -76 -37 -119t-129 -67l187 -260l-127 -64l-185 297h-39v-270h-131zM616 1274h50q74 0 106 20q35 23 35 76 q0 47 -37 64q-39 16 -154 16v-176z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1095" d="M291 383l203 612l313 -145l-358 -543z" />
+<glyph unicode="&#x2000;" horiz-adv-x="933" />
+<glyph unicode="&#x2001;" horiz-adv-x="1867" />
+<glyph unicode="&#x2002;" horiz-adv-x="933" />
+<glyph unicode="&#x2003;" horiz-adv-x="1867" />
+<glyph unicode="&#x2004;" horiz-adv-x="620" />
+<glyph unicode="&#x2005;" horiz-adv-x="466" />
+<glyph unicode="&#x2006;" horiz-adv-x="309" />
+<glyph unicode="&#x2007;" horiz-adv-x="309" />
+<glyph unicode="&#x2008;" horiz-adv-x="231" />
+<glyph unicode="&#x2009;" horiz-adv-x="372" />
+<glyph unicode="&#x200a;" horiz-adv-x="102" />
+<glyph unicode="&#x2010;" d="M156 573v263h794v-263h-794z" />
+<glyph unicode="&#x2011;" d="M156 573v263h794v-263h-794z" />
+<glyph unicode="&#x2012;" d="M156 573v263h794v-263h-794z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M156 573v263h698v-263h-698z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M156 573v263h1722v-263h-1722z" />
+<glyph unicode="&#x2018;" horiz-adv-x="669" d="M119 856v363q0 68 20.5 121t50.5 90q25 31 82 65q41 27 95 47q49 20 106 37l64 -115q-100 -35 -138 -75q-41 -45 -41 -117h179v-416h-418z" />
+<glyph unicode="&#x2019;" horiz-adv-x="538" d="M59 1163v416h418v-362q0 -70 -20.5 -123.5t-50.5 -89.5q-25 -31 -82 -66q-41 -27 -95 -47q-29 -12 -106 -35l-64 115q100 35 138 76q41 45 41 116h-179z" />
+<glyph unicode="&#x201c;" horiz-adv-x="1169" d="M98 856v363q0 68 20.5 121t51.5 90q25 31 82 65q39 25 96 47q49 20 107 37l61 -115q-96 -35 -135 -75q-41 -45 -41 -117h176v-416h-418zM623 856v363q0 68 20.5 121t50.5 90q25 31 82 65q39 25 96 47q49 20 107 37l61 -115q-100 -35 -137 -75q-41 -45 -41 -117h178v-416 h-417z" />
+<glyph unicode="&#x201d;" horiz-adv-x="1001" d="M59 1163v416h418v-362q0 -70 -20.5 -123.5t-50.5 -89.5q-25 -31 -82 -66q-41 -27 -95 -47q-29 -12 -106 -35l-64 115q100 35 138 76q41 45 41 116h-179zM584 1163v416h417v-362q0 -70 -20 -123.5t-51 -89.5q-25 -31 -82 -66q-39 -25 -96 -47q-29 -12 -107 -35l-61 115 q100 35 137 76q41 45 41 116h-178z" />
+<glyph unicode="&#x2022;" horiz-adv-x="1214" d="M215 680q0 98 55.5 182t145.5 133q89 49 190 49q102 0 192.5 -49t145.5 -133t55 -182q0 -96 -55 -182q-53 -82 -145 -133q-86 -47 -193 -48q-104 0 -190 48q-90 49 -145.5 133t-55.5 182z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1671" d="M98 195q0 82 55.5 137t137.5 55t139 -55.5t57 -136.5q0 -84 -57 -139.5t-139 -55.5t-137.5 55.5t-55.5 139.5zM639 195q0 80 57 137q55 55 138 55q80 0 139 -55q55 -53 55 -137q0 -86 -55 -140q-59 -55 -139 -55q-82 0 -138 55q-57 58 -57 140zM1200 195q0 82 55.5 137 t137.5 55t139 -55.5t57 -136.5q0 -84 -57 -139.5t-139 -55.5t-137.5 55.5t-55.5 139.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="372" />
+<glyph unicode="&#x205f;" horiz-adv-x="466" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1284" d="M49 854v190h178q59 260 217 406q162 150 426 149h2q66 0 127 -12q63 -12 102.5 -26.5t76.5 -30.5q31 -14 49 -29l14 -10l-82 -264q-37 23 -45 26q-31 16 -108 41q-80 25 -152 25q-104 0 -182 -72q-76 -70 -119 -203h360v-190h-399q-3 -37 -6 -111h340v-188h-334 q35 -315 272 -315q76 0 148 26q76 29 115 56l38 26l70 -254q-57 -53 -158 -92q-102 -39 -243 -39q-115 0 -205 33q-88 33 -168 102.5t-125 184.5q-45 113 -57 272h-133v188h127q3 74 6 111h-152z" />
+<glyph unicode="&#x2122;" horiz-adv-x="2088" d="M90 1329v164h754v-164h-256v-844h-236v844h-262zM946 485v1008h277l250 -748l260 748h276v-1008h-194v693l-228 -693h-219l-227 693v-693h-195z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1160" d="M0 1160h1160v-1160h-1160v1160z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1595" d="M1065 1608q0 82 55 137t137 55t139.5 -55t57.5 -137q0 -84 -57.5 -139.5t-139.5 -55.5t-137 55.5t-55 139.5zM1083 -2v1159h350v-1159h-350zM61 1016v145h191q0 266 100 400q102 135 307 135q102 0 230 -31v-254q-68 25 -150 25q-68 0 -102.5 -59.5t-34.5 -215.5h281 v-145h-281v-1016h-350v1016h-191z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1554" d="M1042 0v1677l350 49v-1726h-350zM61 1016v145h191q0 266 100 400q102 135 307 135q102 0 230 -31v-254q-68 25 -150 25q-68 0 -102.5 -59.5t-34.5 -215.5h281v-145h-281v-1016h-350v1016h-191z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="2463" d="M1934 1608q0 82 55 137t137 55t139.5 -55t57.5 -137q0 -84 -57.5 -139.5t-139.5 -55.5t-137 55.5t-55 139.5zM1952 -2v1159h350v-1159h-350zM929 1016v145h191q0 266 100 400q102 135 307 135q102 0 230 -31v-254q-68 25 -150 25q-68 0 -102.5 -59.5t-34.5 -215.5h281 v-145h-281v-1016h-350v1016h-191zM61 1016v145h191q0 266 100 400q102 135 307 135q102 0 230 -31v-254q-68 25 -150 25q-68 0 -102.5 -59.5t-34.5 -215.5h281v-145h-281v-1016h-350v1016h-191z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="2422" d="M1911 0v1677l350 49v-1726h-350zM929 1016v145h191q0 266 100 400q102 135 307 135q102 0 230 -31v-254q-68 25 -150 25q-68 0 -102.5 -59.5t-34.5 -215.5h281v-145h-281v-1016h-350v1016h-191zM61 1016v145h191q0 266 100 400q102 135 307 135q102 0 230 -31v-254 q-68 25 -150 25q-68 0 -102.5 -59.5t-34.5 -215.5h281v-145h-281v-1016h-350v1016h-191z" />
+</font>
+</defs></svg> 
\ No newline at end of file
blob - /dev/null
blob + 07aa902a4437c2b1dbd08658b70458043b7d53e2 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_bold-webfont.ttf differ
blob - /dev/null
blob + 3324f0244e2894e26fbfd4b5915a9a92daaf09a6 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_bold-webfont.woff differ
blob - /dev/null
blob + f05b579dd4b86184d220153b8edea7106f9fc2d6 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_bold_italic-webfont.eot differ
blob - /dev/null
blob + c72fa45aed0f841694e702cf2b4084094cd53175 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_bold_italic-webfont.svg
@@ -0,0 +1,148 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2007 by vernon adams All rights reserved
+</metadata>
+<defs>
+<font id="webfontClxEK9et" horiz-adv-x="1112" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="423" />
+<glyph unicode=" "  horiz-adv-x="423" />
+<glyph unicode="&#x09;" horiz-adv-x="423" />
+<glyph unicode="&#xa0;" horiz-adv-x="423" />
+<glyph unicode="!" horiz-adv-x="665" d="M131 133q8 66 66 113q53 45 118 45q63 0 107 -45q43 -47 35 -112.5t-66 -113.5q-53 -45 -121 -45q-63 0 -106 45t-33 113zM240 424l67 1151h389l-262 -1151h-194z" />
+<glyph unicode="&#x22;" d="M231 766l37 811h373l-219 -811h-191zM735 766l37 811h375l-221 -811h-191z" />
+<glyph unicode="#" horiz-adv-x="1087" d="M145 551l21 143h153l56 201h-156l23 145h172l65 269h178l-65 -269h176l63 267h181l-66 -267h133l-20 -145h-150l-55 -201h156l-21 -143h-172l-63 -256h-181l66 256h-172l-68 -256h-180l66 256h-140zM504 694h170l51 201h-170z" />
+<glyph unicode="$" horiz-adv-x="1327" d="M129 86l16 -8q6 -4 23.5 -11.5t28.5 -11.5q31 -14 77 -30q8 -2 99 -27q66 -18 114 -23l-26 -122h104l25 110h4q172 0 317 70q139 68 224 196q82 127 82 289q0 84 -17 135q-18 58 -43 99q-20 33 -70 71q-43 34 -86 56q-84 43 -104 51l-27 12l-69 33l69 340q53 0 129 -29 q74 -29 121 -51q49 -25 49 -29l121 277l-10 6l-31 12l-43 23q-6 4 -59 22q-45 16 -68 23q-25 6 -73 14q-39 6 -76 6l33 152h-101l-33 -144q-2 0 -12 1t-18 1h-31q-92 0 -195 -32q-100 -33 -176 -88q-80 -57 -129 -152q-49 -92 -49 -207q0 -39 6 -71q10 -51 13 -60 q10 -31 24 -51q6 -10 16.5 -23.5t12.5 -17.5q10 -16 35 -37l21 -16t18 -13q2 -2 43 -24l45 -25q2 -2 45 -20q10 -4 24.5 -11.5l18.5 -9.5l98 -47l-94 -446q-45 0 -127 28q-68 23 -139 58l-60 28zM535 1171q0 37 12 64t34.5 43t53.5 25q47 12 63 14q41 4 72 4l-63 -305 l-74 31q-45 18 -70 43q-23 23 -26 40q-2 10 -2 41zM647 242l84 413l60 -26q66 -31 83 -76q20 -47 21 -117q0 -45 -22.5 -84t-61.5 -61.5t-78 -34.5q-35 -10 -86 -14z" />
+<glyph unicode="%" horiz-adv-x="2080" d="M299 1051q0 43 6 79q14 104 51 195q37 88 76 131q45 49 96 76q59 31 99 39q41 8 96 8q88 0 158 -29q63 -27 102 -77q35 -47 51 -105q16 -59 17 -125q0 -40 -7 -86q-6 -53 -20 -98q-14 -49 -37 -101q-23 -49 -57 -94q-37 -46 -80 -80q-37 -29 -107 -53q-59 -20 -137 -20 q-72 0 -125 20.5t-88 55t-55 77.5q-22 46 -31 92q-8 42 -8 95zM516 -6l948 1679l183 -98l-942 -1681zM516 1067q0 -80 33 -117q31 -33 88 -32q70 0 117 53q45 51 63 180q6 46 6 80q0 78 -32 115q-31 33 -91 32q-70 0 -114 -51q-43 -47 -62 -176q-8 -61 -8 -84zM1135 315 q0 55 8 105q10 59 26 115q18 57 54 116q33 53 80 101q43 43 116 71q68 27 154 27q90 0 149 -27q61 -27 95 -75q34 -49 49 -105q14 -51 14 -123q0 -57 -14 -139q-12 -72 -43 -145q-27 -63 -78 -130q-47 -59 -114.5 -94t-155.5 -35q-94 0 -164 29q-68 27 -107 80 q-37 49 -53 107q-16 59 -16 122zM1366 334q0 -76 29 -111q27 -33 86 -33q152 0 180 195q10 74 10 121q0 70 -26 104q-27 37 -95 37q-74 0 -116 -53q-41 -49 -60 -176q-8 -61 -8 -84z" />
+<glyph unicode="&#x26;" horiz-adv-x="1642" d="M119 354q0 37 6 80q14 92 37 144q29 68 63 110q39 47 88 86q55 43 101 68q59 33 110 55q-8 8 -14 16q0 2 -13.5 17.5t-23.5 30.5q-33 45 -47 69q-18 31 -35 88q-16 55 -16 103q0 115 67 204q70 92 176.5 139.5t243.5 47.5q180 0 284.5 -78t104.5 -213q0 -39 -8 -80 q-8 -43 -31 -106q-20 -59 -57 -119q-35 -55 -96 -109q-66 -57 -137 -82l260 -276l80 352l266 -6q-18 -137 -58 -266q-45 -154 -67 -203l-31 -70l215 -227l-162 -182l-194 200q-4 -6 -19 -20q-6 -6 -59 -45q-43 -31 -104 -57q-55 -23 -162 -45q-100 -20 -223 -21 q-115 0 -218 23q-94 20 -172 69q-76 47 -114 123q-41 78 -41 180zM414 416q0 -199 286 -199q57 0 125 10q51 8 101 27q45 16 71 31q25 12 45 24q14 8 15 13l-363 387q-280 -72 -280 -293zM651 1217q0 -20 6 -46q6 -20 17 -43q8 -16 20 -34q16 -25 23 -31l12 -11.5t10 -9.5 l17 -14l6 -4l61 20q14 6 62 33q41 25 59 45q27 31 41 60q16 33 16 82q0 63 -40 92q-43 31 -113 30q-49 0 -86 -12q-39 -12 -57 -28q-20 -16 -33 -43q-14 -29 -17 -43q-4 -29 -4 -43z" />
+<glyph unicode="'" horiz-adv-x="722" d="M231 766l37 811h373l-219 -811h-191z" />
+<glyph unicode="(" horiz-adv-x="774" d="M209 469q0 373 160 694q163 329 417 516l119 -211q-174 -152 -287 -417q-113 -264 -112 -564q0 -180 49 -331.5t133 -249.5l-176 -211q-138 126 -221 325q-82 197 -82 449z" />
+<glyph unicode=")" horiz-adv-x="792" d="M53 -94l119 -211q255 187 418 516q162 326 162 694q0 252 -82 449q-83 200 -221 325l-179 -211q88 -102 136 -249q49 -150 49 -332q0 -293 -115 -563q-113 -266 -287 -418z" />
+<glyph unicode="*" horiz-adv-x="1052" d="M158 1094l28 194h254l-96 240l197 110l75 -233l144 233l164 -110l-162 -240h254l-29 -194h-248l105 -240l-195 -109l-92 240l-158 -240l-163 109l172 240h-250z" />
+<glyph unicode="+" horiz-adv-x="1046" d="M156 459l37 252h256l43 305h268l-43 -305h260l-37 -252h-258l-43 -305h-268l43 305h-258z" />
+<glyph unicode="," horiz-adv-x="684" d="M111 0l59 426h408l-62 -426q-8 -57 -31 -111q-25 -57 -47 -86q-25 -31 -59 -61q-39 -35 -60 -45l-53 -27q-37 -14 -39 -14l-14 -4l-80 123q0 -3 39 32q29 27 80 93q41 51 47 100h-188z" />
+<glyph unicode="-" d="M145 604l33 232h815l-32 -232h-816z" />
+<glyph unicode="." horiz-adv-x="540" d="M82 170q12 80 68 129q59 53 126 53q70 0 113 -53q43 -52 31 -129q-9 -77 -68 -129q-59 -53 -127 -53q-70 0 -112 53q-43 52 -31 129z" />
+<glyph unicode="/" horiz-adv-x="1056" d="M25 -27l954 1694l209 -117l-957 -1697z" />
+<glyph unicode="0" horiz-adv-x="1304" d="M135 453q0 61 10 137q41 291 203 452q164 164 426 164q233 0 352 -125t119 -352q0 -61 -10 -139q-41 -289 -205 -453t-428 -164q-227 0 -348 127q-119 126 -119 353zM442 475q0 -242 197 -242q242 0 293 369q8 49 8 100q0 244 -203 244q-63 0 -116 -28q-52 -28 -86 -80 q-31 -47 -54 -113q-18 -53 -28 -133q-11 -72 -11 -117z" />
+<glyph unicode="1" horiz-adv-x="800" d="M176 1092l248 92l303 -2l-166 -1182h-307l131 907l-156 -53z" />
+<glyph unicode="2" horiz-adv-x="1030" d="M78 0l28 217l343 275q4 4 34 28l43 35l39 33q18 16 41 39l33 37q25 25 33 41l18 38q12 29 15 43q8 70 -21 109q-27 35 -102 35q-47 0 -138 -27q-72 -20 -139 -51l-53 -27l-51 240l10 2q12 8 22 12l37 17q4 2 21.5 9l27.5 11q41 18 56 23q8 2 29.5 9l33.5 11q49 14 66 17 q45 8 67 10l68 6q65 0 123 -12q68 -14 110 -37q57 -31 91 -66q33 -37 53 -102q18 -63 6 -141q-16 -119 -84 -216q-70 -98 -219 -223l-152 -127h346l-39 -268h-796z" />
+<glyph unicode="3" horiz-adv-x="993" d="M33 -109l80 242q133 -51 256 -51q68 0 108 16q45 18 68 47q18 23 28 56q8 25 9 57q0 84 -59.5 125t-192.5 41l35 246q147 0 212.5 47t65.5 108q0 55 -31 86q-29 29 -108 29q-59 0 -127 -18q-92 -25 -109 -33l-39 -19l-73 230l18 10q6 4 25.5 12t29.5 13q37 16 76 30 q53 18 101 27q66 10 112 10q200 0 307 -74q109 -74 109 -237q0 -76 -23 -143q-20 -63 -59 -105q-31 -33 -76 -63q-35 -25 -71 -33q80 -20 129 -96q51 -78 51 -166q0 -47 -13 -101q-14 -57 -47 -118q-37 -68 -94 -119t-158 -88q-96 -35 -231 -35q-104 0 -172 16 q-80 18 -107 35z" />
+<glyph unicode="4" horiz-adv-x="1138" d="M125 113v254l604 786l315 -2l-108 -780h160l-35 -258h-164l-27 -248h-290l34 248h-489zM446 369h205l84 403z" />
+<glyph unicode="5" horiz-adv-x="1101" d="M78 -90l96 256l6 -2q2 -2 7.5 -5t7.5 -5q9 -6 24 -13l31 -14q6 -2 12 -5t13.5 -6t13.5 -5q14 -6 43 -15l45 -12q12 -4 49 -8q33 -4 51 -4q100 0 170 65.5t70 184.5q0 78 -47 120.5t-125 42.5h-2q-90 0 -244 -82l-115 125l101 641h747l-35 -245h-485l-43 -242q0 2 16 12 q27 18 52 27q33 12 71 12q176 0 289 -112.5t113 -284.5q0 -229 -158 -375q-156 -143 -403 -143q-178 0 -371 92z" />
+<glyph unicode="6" horiz-adv-x="1220" d="M141 305q0 -201 115 -328q117 -129 328 -129q102 0 194 35q88 33 152 90q66 59 106 129q45 78 66 152q20 76 20 158q0 117 -39 206q-41 92 -125 148q-90 57 -204 57q-39 0 -74 -8q-47 -10 -62 -16q-25 -10 -24 -11q74 88 190.5 158t247.5 96l-37 265q-121 -33 -237 -86 q-109 -51 -215 -131q-104 -80 -182 -176.5t-136 -229.5q-53 -127 -75 -278q-9 -50 -9 -101zM446 319q0 131 35 205q10 6 29 13q43 14 74 22q39 10 88 10q76 0 119 -37q45 -39 45 -106q0 -10 -5 -43q-41 -274 -213 -274.5t-172 210.5z" />
+<glyph unicode="7" horiz-adv-x="1007" d="M92 -78l547 989h-494l5 258h817l51 -180l-678 -1204z" />
+<glyph unicode="8" horiz-adv-x="1189" d="M111 209q0 86 30.5 161.5t79.5 125.5q45 45 105 77q53 29 106 39q-90 20 -145 95q-57 76 -58 178q0 186 140 303q135 115 364 115q120 0 209 -31q92 -31 145 -101q57 -74 58 -174q0 -144 -86 -252q-86 -109 -209 -133q96 -16 160 -94q66 -82 65 -192q0 -66 -16 -117 q-20 -63 -58 -121q-39 -59 -100 -108q-55 -45 -153 -76q-96 -31 -211 -31q-80 0 -162 21q-76 18 -135.5 57t-94 104.5t-34.5 153.5zM416 258q0 -133 157 -133q41 0 72 8t66 33q31 22 49 67t18 113q0 80 -37 129q-39 51 -110 51q-58 0 -105 -30q-49 -33 -67 -74 q-27 -55 -33 -88q-10 -47 -10 -76zM520 879q0 -71 37 -117q37 -47 102 -47q53 0 95 24q37 23 57 66q20 45 29 76q8 33 8 71q0 117 -143 117q-51 0 -91 -16q-37 -16 -57 -45t-29 -60q-8 -26 -8 -69z" />
+<glyph unicode="9" horiz-adv-x="1171" d="M131 612q0 86 21 162q23 80 65 156q41 72 105 131q59 57 149 92q88 35 188 35q219 0 340 -115q117 -111 117 -323q0 -150 -33 -283q-35 -141 -102 -262q-74 -133 -170 -225q-98 -94 -242 -164q-141 -68 -309 -86l-35 266q305 66 434 237q-65 -18 -135 -18 q-178 0 -286 109q-107 106 -107 288zM422 614q0 -70 35 -104q37 -37 100 -37q70 0 105 2q14 0 30.5 1t28.5 2t18 1l27 2q2 0 12 23q10 25 23 78q12 55 12 127q0 219 -170 219q-53 0 -92 -21q-41 -23 -64 -59q-25 -39 -38 -84q-15 -46 -25 -111q-2 -14 -2 -39z" />
+<glyph unicode=":" horiz-adv-x="796" d="M160 0l59 432h389l-61 -432h-387zM244 735l59 432h389l-61 -432h-387z" />
+<glyph unicode=";" horiz-adv-x="806" d="M154 0l59 426h395l-51 -363q-10 -68 -29 -114q-23 -57 -49 -96q-31 -45 -57 -74q-37 -39 -62 -58l-53 -38l-37 -25l-14 -6l-80 123q0 -3 39 32q29 27 80 93q41 51 47 100h-188zM258 735l61 432h390l-62 -432h-389z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1060" d="M147 453l33 243l821 504l-47 -338l-526 -282l444 -295l-47 -336z" />
+<glyph unicode="=" horiz-adv-x="1245" d="M164 240l37 262h925l-36 -262h-926zM219 625l37 262h928l-37 -262h-928z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1050" d="M168 -29l47 336l481 293l-399 285l35 315l680 -504l-25 -221z" />
+<glyph unicode="?" horiz-adv-x="1079" d="M190 111q0 68 58 125q55 55 129 55q59 0 100 -39t41 -96q0 -72 -55 -127q-53 -53 -129 -54q-59 0 -101 39q-43 40 -43 97zM242 1397q76 35 207 57q121 20 221 21q424 0 424 -312q0 -391 -492 -569l-33 -232h-325l47 347q18 10 96 45l109 49l102 51q53 29 88 61 q37 33 59 74q25 43 25 92q0 45 -16 68q-18 25 -52 37q-23 8 -65 12q-41 4 -80 4q-109 0 -293 -49z" />
+<glyph unicode="@" horiz-adv-x="1845" d="M190 573q0 221 109 457q111 242 322 385q244 168 532 168q258 0 446 -162q90 -76 138 -196q51 -127 51 -277q0 -152 -66 -301q-63 -143 -178 -233q-113 -88 -256 -88q-133 0 -133 151q0 47 14 105q-72 -152 -137 -211.5t-180 -59.5q-139 0 -217 92q-63 76 -63.5 211.5 t44.5 245.5q47 117 119 182q80 72 168 113q96 43 187 43q92 0 165 -18q70 -18 123 -64q49 -43 49 -102q0 -20 -8 -49l-137 -445q137 31 199 139q59 104 59 263q0 221 -115 325q-117 106 -327 107q-123 0 -229.5 -49.5t-182.5 -130.5q-78 -84 -131 -177q-111 -193 -111 -399 q0 -212 129 -313q131 -102 357 -103q109 0 186 33l41 16l6 5l21 -201q-137 -72 -322 -72h-8q-307 0 -483 164q-181 167 -181 446zM784 664q0 -86 27 -123q25 -33 66 -33q40 0 67 6t51 25q16 12 45 36q18 16 39 50l35 55q10 14 33 63l27 68l20 51l43 139q0 6 -63 13 q-86 8 -111 8q-45 0 -98 -29q-55 -29 -84 -69q-14 -18 -27.5 -38t-20 -28t-6.5 -10q-43 -98 -43 -184z" />
+<glyph unicode="A" horiz-adv-x="1347" d="M-10 0l723 1577h311l281 -1577h-324l-57 391h-418l-174 -391h-342zM563 551h328l-47 323l-33 267l-86 -215z" />
+<glyph unicode="B" horiz-adv-x="1415" d="M121 0l221 1577h369q328 0 481.5 -92t153.5 -281q0 -293 -316 -350q139 -31 225 -109q90 -80 91 -198q0 -55 -9 -98q-10 -53 -32 -105q-25 -57 -60 -102q-35 -47 -98 -95q-61 -45 -139 -75q-90 -35 -189 -52q-123 -20 -246 -20h-452zM481 238h152q76 0 155 14 q63 12 121 45q55 33 82 90q27 55 27 143q0 102 -72 141.5t-231 39.5h-172zM575 940h138q94 0 161 18q70 18 103 52q34 34 49 67q16 37 16 76q0 31 -6 55q-8 33 -22 52q-20 29 -47 40q-43 23 -82 29q-57 10 -125 10h-131z" />
+<glyph unicode="C" horiz-adv-x="1179" d="M127 557q0 180 27 326q29 154 88 282q63 139 149 230q88 94 223.5 149t300.5 55q27 0 80 -4q33 -2 72 -10q41 -8 61 -14q47 -14 54 -17q16 -6 45 -18q27 -12 35 -16q4 -4 14 -8.5t12 -6.5t7 -6t8 -6l6 -2l-111 -264q-2 0 -7 4t-9 6l-45 23q-29 12 -70 26q-45 14 -88 23 q-57 10 -102 10q-193 0 -306 -199q-115 -201 -114 -530q0 -350 268 -350q49 0 100 12q59 14 93 27q27 10 71 30q18 8 49 29l17 10l55 -254q-61 -53 -174 -92q-111 -39 -266 -39q-125 0 -217 33q-94 33 -170 102q-74 68 -115 186.5t-41 272.5z" />
+<glyph unicode="D" horiz-adv-x="1482" d="M125 0l221 1579h561q127 0 223 -33q100 -35 173 -100q70 -63 110 -178q39 -109 39 -258q0 -479 -201 -746q-199 -264 -565 -264h-561zM487 236h218q86 0 155 38q74 41 119 105q47 63 82 164q33 94 49 207q14 102 14 239q0 164 -59 258q-57 92 -180 92h-238z" />
+<glyph unicode="E" d="M92 0l211 1577h934l-35 -238h-608l-53 -397h544l-30 -231h-549l-66 -478h650l-48 -233h-950z" />
+<glyph unicode="F" horiz-adv-x="1163" d="M106 0l222 1577h981l-37 -270h-660l-47 -363h606l-32 -233h-607l-104 -711h-322z" />
+<glyph unicode="G" horiz-adv-x="1376" d="M125 555q0 219 41 383q43 172 117 295q72 119 176 205q100 82 219 123q115 39 246 38q74 0 159.5 -16t133.5 -35q55 -20 94 -41q49 -25 63 -34l23 -15l-111 -233q-2 0 -8 4t-10 6q-18 8 -54 22q-47 18 -84 29q-49 14 -108 23q-72 10 -131 10q-201 0 -320 -199 q-121 -201 -120 -538q0 -180 69 -263q68 -80 201 -79q45 0 123 22q88 25 125 41l51 23l47 307h-291l33 235h557l-125 -868h-209l-12 139q-45 -70 -143 -123q-96 -53 -205 -53q-547 0 -547 592z" />
+<glyph unicode="H" horiz-adv-x="1503" d="M119 0l221 1577h324l-89 -637h547l90 637h320l-221 -1577h-320l101 707h-549l-101 -707h-323z" />
+<glyph unicode="I" horiz-adv-x="880" d="M43 0l23 154h174l172 1261h-174l26 162h662l-27 -162h-174l-172 -1261h174l-25 -154h-659z" />
+<glyph unicode="J" horiz-adv-x="884" d="M70 154q43 8 88 18q31 8 69 23q43 16 56 26q37 29 43 33q20 18 30 37l21 43q10 20 16 51q2 8 6 26.5t6.5 29t5.5 34t5 31.5l149 1071h320l-146 -1038q-2 -12 -14 -90q-4 -29 -18.5 -90.5t-26.5 -92.5q-10 -25 -41 -86q-18 -37 -57 -80t-76 -69q-53 -39 -100 -58 q-68 -27 -125 -39q-82 -18 -156 -20z" />
+<glyph unicode="K" horiz-adv-x="1368" d="M106 0h322l94 676h60l372 -676h373l-389 688l-49 98l86 111l522 680h-362l-517 -668h-61l92 668h-321z" />
+<glyph unicode="L" horiz-adv-x="1093" d="M106 0l224 1577h321l-188 -1344h594l-35 -233h-916z" />
+<glyph unicode="M" horiz-adv-x="1898" d="M139 0l162 1151l72 426h387l65 -428l80 -602l23 -232l78 226l266 647l170 389h389l-57 -526l-152 -1051h-293l158 1108l-344 -875l-109 -233h-297l-47 295l-100 809l-160 -1104h-291z" />
+<glyph unicode="N" horiz-adv-x="1554" d="M106 0l162 1157l70 420h338l147 -352l303 -750l146 1102h299l-162 -1157l-70 -420h-327l-156 360l-297 746l-153 -1106h-300z" />
+<glyph unicode="O" horiz-adv-x="1429" d="M129 588q0 236 61 428q61 195 164 317q104 127 244 195q143 70 299 69q115 0 213 -41q102 -43 170 -116q70 -76 111 -203q39 -119 39 -285q0 -180 -41 -348q-39 -162 -111 -278q-68 -111 -168 -199q-96 -84 -207 -123q-117 -41 -235 -41q-250 0 -394 156 q-145 158 -145 469zM459 614q0 -375 248 -374q181 0 288 196q109 199 109 519q0 366 -246 366q-55 0 -119 -27q-51 -23 -108 -82q-51 -53 -88 -137q-43 -96 -62 -201q-22 -125 -22 -260z" />
+<glyph unicode="P" horiz-adv-x="1277" d="M106 0l222 1577h403q324 0 473 -102q145 -100 146 -316q0 -66 -9 -112q-37 -254 -217 -359q-182 -104 -561 -104h-53l-82 -584h-322zM547 788h53q440 0 440 336q0 49 -16 88q-14 33 -55 68q-31 27 -107 43q-72 16 -166 16h-80z" />
+<glyph unicode="Q" horiz-adv-x="1441" d="M127 569q0 74 10 172q6 68 37 191q27 109 64 194q43 100 100 181q59 82 141 151q74 61 187 103q109 39 237 38q94 0 170 -20t147.5 -69.5t118.5 -116.5q47 -70 76 -174q27 -100 27 -236q0 -61 -6 -129q-6 -76 -21 -152q-14 -78 -41 -165q-20 -68 -69 -162 q-45 -86 -99 -152q-49 -61 -137 -125q-80 -57 -176 -88l246 -274l-181 -156l-348 393q-115 16 -194 54q-84 39 -151.5 112.5t-100.5 177.5q-37 117 -37 252zM459 580q0 -176 63.5 -258t190.5 -82q158 0 254 127q100 133 137 401q14 100 14 195q0 356 -254 356 q-313 0 -391 -551q-14 -100 -14 -188z" />
+<glyph unicode="R" horiz-adv-x="1351" d="M92 0l221 1577h367q270 0 393 -25q229 -45 283 -206q16 -53 16 -111q0 -51 -8 -102q-18 -125 -133 -220q-114 -92 -326 -104q71 -3 123 -12q51 -8 100 -29q41 -16 72 -47q29 -29 47 -72q20 -47 21 -98q0 -61 -8 -127l-62 -424h-317l59 469q6 49 6 86t-10 63.5t-24.5 41 t-39.5 24.5q-20 8 -53 12q-61 6 -65 6q-12 0 -39 -1t-41 -1h-56h-102l-102 -700h-322zM545 897h80q442 0 442 274q0 100 -70 134q-74 35 -272 34h-121z" />
+<glyph unicode="S" horiz-adv-x="1269" d="M100 31l52 295q0 -3 67 -25q207 -61 340 -61q301 0 301 219q0 100 -104 151l-367 176q-88 43 -143 129q-53 82 -53 199q0 221 157 352q162 133 424 133q143 0 236 -16q100 -18 110 -20q6 -2 21.5 -5.5t23.5 -5.5l37 -10l35 -8l-43 -295q-33 16 -143 39q-195 41 -260 41 q-82 0 -105 -2q-35 -4 -72 -12q-39 -10 -59 -25q-49 -37 -49 -100.5t43 -94.5q55 -39 106 -61q29 -12 70 -33l184 -84q129 -59 199 -159.5t70 -231.5q0 -145 -78 -285q-109 -188 -346 -245q-96 -23 -164 -23q-82 0 -106.5 2t-69.5 6t-68 9q-10 2 -31.5 5t-31.5 5 q-41 8 -60 12l-88 21z" />
+<glyph unicode="T" horiz-adv-x="1069" d="M127 1337l35 240h1095l-34 -240h-387l-187 -1337h-317l186 1337h-391z" />
+<glyph unicode="U" horiz-adv-x="1525" d="M199 502q0 109 14 221l121 854h321l-120 -858q-18 -125 -19 -207q0 -158 51 -221q49 -61 172 -62q104 0 172 45q61 41 107 150q41 100 69 295l121 858h322l-119 -854q-25 -174 -74 -311q-47 -129 -114 -219q-61 -82 -150 -136q-86 -53 -174 -73q-84 -20 -197 -21 q-96 0 -165 14q-72 14 -140 54q-63 37 -106 98q-45 63 -68 154q-24 94 -24 219z" />
+<glyph unicode="V" horiz-adv-x="1249" d="M182 1575l301 2l146 -1161l495 1161h314l-680 -1577h-373z" />
+<glyph unicode="W" horiz-adv-x="1861" d="M217 1577h307l43 -1139l357 1127h360l33 -1127l383 1139h311l-536 -1577h-398l-28 1124l-375 -1124h-359z" />
+<glyph unicode="X" horiz-adv-x="1325" d="M-8 0l563 788l-344 789h367l198 -498l340 498h369l-563 -789l340 -788h-365l-201 489l-342 -489h-362z" />
+<glyph unicode="Y" horiz-adv-x="1187" d="M135 1577h342l182 -655l377 655h357l-627 -1059l-72 -518h-317l72 518z" />
+<glyph unicode="Z" horiz-adv-x="1177" d="M43 0l35 248l809 1089h-651l28 240h1030l-32 -231l-811 -1108h653l-29 -238h-1032z" />
+<glyph unicode="[" horiz-adv-x="1064" d="M209 0l215 1532h696l-37 -262h-387l-141 -1008h387l-37 -262h-696z" />
+<glyph unicode="\" horiz-adv-x="1241" d="M440 1616l279 51l301 -1763l-285 -51z" />
+<glyph unicode="]" horiz-adv-x="1095" d="M119 0l37 262h387l141 1008h-387l37 262h696l-215 -1532h-696z" />
+<glyph unicode="^" horiz-adv-x="1880" d="M635 563l323 639h228l168 -639h-250l-66 314l-141 -314h-262z" />
+<glyph unicode="_" horiz-adv-x="1142" d="M61 -98l37 262h926l-37 -262h-926z" />
+<glyph unicode="`" horiz-adv-x="667" d="M154 1024h395v-709h-203z" />
+<glyph unicode="a" horiz-adv-x="1155" d="M80 395q0 133 45 260q49 135 121 232q78 104 182 166q106 63 221 63q84 0 156 -14q90 -18 133 -35q66 -25 96 -41q49 -25 64 -35l20 -14l-137 -977h-221l-41 166q-33 -80 -107 -129q-76 -51 -182 -51q-178 0 -264 110.5t-86 298.5zM395 430q0 -213 135 -213q123 0 183 72 l80 583q-43 14 -113 15q-49 0 -100 -37q-52 -37 -93 -98q-43 -66 -65 -146q-27 -94 -27 -176z" />
+<glyph unicode="b" horiz-adv-x="1183" d="M84 0l221 1589l320 47l-90 -643q109 127 288 127q154 0 238 -114q82 -113 82 -308q0 -68 -13 -149q-20 -131 -53 -219q-39 -100 -94 -178q-58 -80 -147 -123q-94 -45 -201 -45t-170 53q-61 53 -72 129l-92 -166h-217zM434 291q37 -72 164 -72q68 0 117 53.5t73 130.5 q20 66 35 158q10 63 11 148q0 178 -113 178q-117 0 -213 -90z" />
+<glyph unicode="c" horiz-adv-x="976" d="M139 438q0 152 49 281q51 133 129 217q80 86 184.5 135t215.5 49q115 0 188 -24q70 -23 148 -72l-88 -221q-20 27 -86 53q-70 29 -138 29q-129 0 -192.5 -76t-87.5 -252q-6 -49 -6 -96q0 -240 215 -240q43 0 96 17q49 14 65 26l62 39l25 -219q-100 -53 -166 -74 q-80 -25 -197 -24q-184 0 -301 118q-115 117 -115 334z" />
+<glyph unicode="d" horiz-adv-x="1218" d="M121 399q0 133 31 260q29 119 92 232q55 100 153 166q94 63 209 63q178 0 246 -139l84 602l319 53l-231 -1636h-223l-41 166q-33 -78 -109 -129q-78 -53 -182 -53q-184 0 -266 112.5t-82 302.5zM432 432q0 -213 137 -213q127 0 185 70l71 508q-72 90 -188 90 q-41 0 -70 -21q-35 -25 -51 -51q-20 -37 -35 -76l-22 -88q-2 -6 -17 -96q-10 -76 -10 -123z" />
+<glyph unicode="e" horiz-adv-x="1001" d="M115 428q0 101 24 203q25 98 74 188q45 82 119 156q66 66 160 106q90 39 196 39q156 0 238 -79.5t82 -190.5q0 -203 -154 -307q-158 -106 -434 -113q0 -96 49 -157.5t141 -61.5q137 0 256 88l56 -205q-199 -109 -396 -108q-190 0 -301 118q-110 121 -110 324zM434 571 q2 0 8.5 1t10.5 1l49 9q29 4 67 16q41 12 72 27q43 20 68 39q29 23 47 55q20 37 20 69q0 47 -24.5 78t-77.5 31q-72 0 -125 -53q-57 -57 -84 -127q-29 -74 -31 -146z" />
+<glyph unicode="f" horiz-adv-x="780" d="M135 -225l164 1169h-129l23 158h129q16 111 47 190q34 89 86 160t129 111q78 41 170 41q98 0 190 -29l-35 -254q-55 25 -125 25q-55 0 -96 -66q-37 -59 -53 -178h237l-22 -158h-240l-164 -1169h-311z" />
+<glyph unicode="g" horiz-adv-x="1120" d="M-31 -293q0 -47 11 -76q12 -35 44.5 -67.5t86.5 -57.5q49 -23 141 -38q84 -14 207 -15q100 0 178 15q80 14 139 40q57 27 98 58q45 37 70 72q29 45 43 81q16 49 23 80q6 37 6 78q0 125 -98 201q-94 74 -330 123l-281 59l281 88q236 61 330 156q100 100 102 270 q0 23 -6 53q-2 6 -5 25.5t-5 28.5l-7 18l228 2l30 225l-104 -6q-139 0 -262 -57q-70 57 -264 57q-115 0 -207 -35q-90 -35 -139 -92q-55 -66 -76 -119q-25 -65 -25 -129q0 -31 10 -67q10 -35 25 -60q4 -6 9 -15t10.5 -17l11.5 -17q18 -25 35 -41q23 -23 32 -30 q4 -4 12.5 -11.5t10.5 -9.5l6 -8l-76 -20q-137 -37 -174 -99q-16 -27 -22 -108q0 -6 -1 -13.5t-1 -9.5q0 -20 2 -31q2 -12 14 -28l16 -23q6 -8 23 -18q20 -12 24 -15q2 0 10.5 -6l14.5 -10q6 -2 15 -7l8 -3l-127 -123q-52 -49 -74 -105q-23 -57 -23 -143zM219 -197 q0 33 41 86q43 55 76 86q33 29 43 35l172 -33q111 -22 154 -49t43 -73q0 -92 -62 -131q-59 -39 -182 -39q-285 -1 -285 118zM438 745q0 74 37 113q37 41 141 41q137 0 138 -119q0 -20 -4 -53q-2 -23 -17 -53q-12 -29 -35 -51q-29 -29 -59 -45q-49 -27 -94 -39l-25 36 q-27 41 -53 91q-29 52 -29 79z" />
+<glyph unicode="h" horiz-adv-x="1216" d="M100 0l222 1589l317 60l-94 -668l3 6q3 6 7 10q10 12 35 35q25 20 57 41q27 16 84 33q49 14 109 14q154 0 231 -84q80 -86 80 -252q0 -57 -8 -112l-94 -672h-314l96 684q4 33 5 53q0 74 -35 113q-35 37 -94 37q-63 0 -103 -19q-37 -16 -82 -55l-110 -813h-312z" />
+<glyph unicode="i" horiz-adv-x="622" d="M111 0l151 1104h311l-151 -1104h-311zM313 1464q12 80 68 129q59 53 127 54q70 0 113 -54q33 -41 33 -96q0 -16 -3 -33q-10 -80 -65 -129q-59 -53 -129 -53t-113 53q-33 41 -33 96q-1 16 2 33z" />
+<glyph unicode="j" horiz-adv-x="694" d="M0 -113q96 59 154 131q55 70 73 205l127 881h310l-127 -901q-14 -104 -62 -201q-47 -98 -110 -164q-65 -68 -142 -117q-74 -47 -162 -69zM379 1464q12 80 67 129q59 53 127 54q70 0 113 -54q35 -43 35 -98q0 -15 -2 -31q-9 -77 -68 -129q-59 -53 -128.5 -53t-112.5 53 q-33 41 -34 96q0 16 3 33z" />
+<glyph unicode="k" horiz-adv-x="1118" d="M92 0l219 1589l320 49l-131 -927l362 393h346l-446 -481l350 -623h-332l-254 461l-71 -68l-52 -393h-311z" />
+<glyph unicode="l" horiz-adv-x="647" d="M133 0l225 1589l320 47l-232 -1636h-313z" />
+<glyph unicode="m" horiz-adv-x="1703" d="M70 0l153 1104h223l46 -176q33 74 118 135q82 57 168 57q113 0 172 -37q66 -41 92 -137q66 90 140 131q76 43 188 43q137 0 203 -78q68 -80 67 -229q0 -53 -8 -111l-96 -702h-309l100 719l4 53q0 113 -86 113q-41 0 -80 -21q-29 -16 -92 -71l-110 -793h-312l103 727 q4 41 4 61q0 55 -20.5 76t-59.5 21q-12 0 -33 -4q-23 -4 -33 -11l-28 -16q-14 -8 -29 -18q-20 -16 -25 -21l-20 -18l-16 -15l-111 -782h-313z" />
+<glyph unicode="n" horiz-adv-x="1157" d="M70 0l153 1104h238l39 -141q45 61 125 110q76 45 161 45q162 0 234 -78q74 -80 74 -239q0 -55 -11 -133l-92 -668h-313l96 682q6 43 6 78q0 63 -28 96q-27 29 -90 29q-98 0 -166 -74l-113 -811h-313z" />
+<glyph unicode="o" horiz-adv-x="1138" d="M100 426q0 35 9 117q6 53 26 131q18 66 49 131q31 63 76 120.5t107 102.5q57 43 143 68q84 25 180 24q211 0 319.5 -114.5t108.5 -323.5q0 -39 -8 -121q-4 -49 -27 -129q-14 -51 -49 -133q-23 -55 -76 -121q-41 -53 -106 -100q-58 -43 -141 -68q-90 -27 -181 -26 q-209 0 -319.5 116.5t-110.5 325.5zM412 428q0 -211 151 -211q94 0 154 84q57 80 82 254q10 86 10 127q0 104 -37 153.5t-115 49.5q-96 0 -153 -80q-57 -78 -82 -250q-10 -76 -10 -127z" />
+<glyph unicode="p" horiz-adv-x="1165" d="M23 -393l208 1497h240l39 -141q49 77 129 116q82 41 160 41q176 0 262 -114t86 -314q0 -201 -63.5 -358.5t-184.5 -253.5t-278 -96q-154 0 -215 127l-72 -504h-311zM432 305q70 -88 191 -88q37 0 69 23q31 23 53 53q20 31 37 78q18 57 27 92q10 53 16 96q10 76 11 119 q0 207 -140 207q-117 0 -192 -72z" />
+<glyph unicode="q" horiz-adv-x="1196" d="M109 418q0 61 8 119q16 121 57 235q37 104 98 184q59 78 150 121q89 43 203 43q86 0 137 -41t69 -123l64 148h264l-211 -1497h-309l72 504q-96 -127 -250 -127q-88 0 -162 34q-70 33 -106 93q-84 137 -84 307zM412 395q0 -178 112 -178q121 0 215 88l68 486 q-14 39 -57 65q-45 29 -105 29q-174 0 -219 -326q-14 -88 -14 -164z" />
+<glyph unicode="r" horiz-adv-x="794" d="M90 0l156 1104h266l16 -141q23 39 58 73.5t57 46.5q25 14 68 25q23 6 67 10q20 2 76 2l-41 -274q-35 16 -94 16q-104 0 -205 -74l-111 -788h-313z" />
+<glyph unicode="s" horiz-adv-x="1001" d="M76 88l90 217l47 -22q33 -16 109 -37q84 -23 141 -23q74 0 117 24.5t43 96.5q0 29 -19 45q-16 14 -63 33l-129 55q-127 55 -184.5 118.5t-57.5 158.5q0 164 123 264q121 100 334 100q76 0 170 -22q86 -20 141 -45l49 -23l-90 -215q-8 4 -45 21q-16 6 -102 28 q-74 18 -127 19q-100 0 -135 -20.5t-35 -63.5q0 -27 14 -41.5t53 -30.5l119 -49q16 -6 88 -39q27 -12 74 -41q35 -20 59 -53q22 -28 37 -68q14 -37 14 -88q0 -180 -125 -291q-126 -111 -337 -110q-240 0 -373 102z" />
+<glyph unicode="t" horiz-adv-x="780" d="M104 946l21 156h129l51 391l318 84l-68 -475h256l-23 -156h-253l-76 -573q-6 -37 -6 -64q0 -119 94 -119q23 0 67 11q18 4 62 20q25 9 24 12l52 -170q-16 -10 -45 -22q-31 -14 -113 -35q-86 -23 -160 -22q-135 0 -213 79q-78 82 -78 256q0 55 11 134l69 493h-119z" />
+<glyph unicode="u" horiz-adv-x="1216" d="M104 324q0 57 11 135l88 643h313l-92 -670q-6 -43 -6 -78q0 -61 35 -96q39 -39 92 -41q106 8 170 78l110 807h314l-154 -1102h-221l-45 168q-29 -74 -96.5 -129t-169.5 -55q-164 0 -258 88q-91 84 -91 252z" />
+<glyph unicode="v" horiz-adv-x="1007" d="M131 1102h287l80 -750l282 750h307l-452 -1102h-365z" />
+<glyph unicode="w" horiz-adv-x="1351" d="M123 1102h276l25 -699l231 699h265l26 -696l246 696h260l-393 -1102h-301l-37 651l-217 -651h-297z" />
+<glyph unicode="x" horiz-adv-x="1021" d="M0 0l399 555l-249 549h319l123 -303l205 303h313l-397 -549l237 -555h-309l-121 322l-207 -322h-313z" />
+<glyph unicode="y" horiz-adv-x="1001" d="M6 -223l109 35q106 35 172 100q60 60 60 100q0 5 -1 11l-242 1079h293l146 -705l266 705h295l-455 -1135q-68 -168 -172 -258q-111 -94 -278 -145l-131 -39z" />
+<glyph unicode="z" horiz-adv-x="1005" d="M94 0l33 233l512 633h-406l29 236h727l-31 -221l-505 -648h419l-28 -233h-750z" />
+<glyph unicode="{" horiz-adv-x="815" d="M195 551l26 188q55 0 86 62q35 70 55 225q14 113 54 203q39 92 82 137q53 55 104 82q66 33 115 41q61 10 119 10l-25 -188q-41 0 -63.5 -18.5t-43 -88t-42.5 -223.5q-8 -68 -29 -127q-20 -61 -39 -90q-23 -37 -49 -59q-28 -25 -49 -37q-27 -14 -50 -23q160 -68 123 -338 q-18 -135 -20 -180q-4 -72 4 -98q8 -31 25 -41q14 -8 45 -8l-27 -191q-27 0 -72 4q-23 2 -71 14q-29 6 -64 27q-25 12 -57 43q-31 27 -45.5 59.5t-28.5 83.5q-12 45 -12 107q0 53 10 135q20 164 8 227q-12 62 -69 62z" />
+<glyph unicode="|" horiz-adv-x="790" d="M297 -121v1802l287 -2v-1800h-287z" />
+<glyph unicode="}" horiz-adv-x="833" d="M104 -211l29 191q39 0 57.5 16t40.5 90q18 63 45 221q43 270 213 338q-25 12 -35 18.5t-30 26.5q-18 18 -27 41q-10 29 -16 60q-6 33 -6 81q0 41 10 109q12 80 23 180q6 68 -2.5 98.5t-22.5 41t-41 10.5l29 188q41 0 78 -6q33 -6 71 -18q37 -12 65.5 -35t53.5 -60 q27 -39 35 -84q12 -63 14 -116q3 -68 -12 -154q-25 -172 -14 -227q12 -59 63 -60l-29 -188q-51 0 -82 -62q-33 -68 -57 -227q-18 -117 -55 -203q-39 -90 -80 -137q-43 -49 -100 -80q-61 -33 -109 -41q-70 -12 -109 -12z" />
+<glyph unicode="~" horiz-adv-x="1146" d="M170 336q49 338 260 338q53 0 105 -23q53 -23 81 -49q33 -29 70 -49q41 -23 74 -23q35 0 47 21q14 25 22 84h203q-23 -152 -90 -238q-70 -88 -170 -88q-51 0 -106 25q-53 25 -91 51q-49 37 -75 53q-37 23 -64 23q-29 0 -47 -29q-16 -25 -27 -96h-192z" />
+<glyph unicode="&#xa2;" horiz-adv-x="978" d="M109 438q0 158 47 281q51 133 129 217q80 86 184 135t217 49h41l47 240l119 -21l-47 -235q90 -25 176 -80l-88 -221q-8 12 -49 35q-37 23 -86 34l-129 -651q33 2 80 21q27 10 59 26l53 35l25 -219q-141 -77 -264 -92l-37 -185l-119 21l33 158q-178 10 -285 127 q-106 118 -106 325zM424 461q0 -182 125 -228l131 652q-113 -10 -170 -86t-80 -242q-6 -49 -6 -96z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1120" d="M117 0l28 225l93 111l2 2q4 4 6 8q2 2 5 7t5 7l12 19l13 24q12 25 14 31l12 37q6 18 12 43q4 16 9 49h-117l14 105h94l-14 26q-51 104 -51 215q0 47 16 107q16 57 52 110q39 59 90 99q55 43 139 69q90 29 186 29q82 0 145.5 -14.5t110.5 -34.5q51 -23 76 -39 q33 -23 45 -33l12 -12l-153 -219l-10 10q-12 12 -26.5 22.5t-47.5 26.5q-20 10 -65.5 20.5t-84.5 10.5q-43 0 -73 -8q-41 -10 -66 -29q-29 -18 -47 -61q-18 -41 -18 -95q0 -37 10 -92q8 -43 22 -76l11 -28h391l-17 -109h-372q-8 -61 -31 -120.5t-45 -94.5q-27 -41 -49 -65 q-25 -27 -39 -39l-15 -13h560l-33 -231h-811z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1187" d="M182 1577h353l172 -766l387 766h356l-473 -807h186l-16 -119h-242l-76 -129h299l-16 -121h-301l-57 -401h-324l57 401h-301l17 121h299l-39 129h-242l17 119h188z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1939" d="M166 795q27 184 121 354q90 162 223 276q123 104 283 172q152 63 307 64q117 0 215 -27q96 -27 172 -73q72 -45 131 -105q53 -53 96 -129q39 -68 64 -137q23 -63 32 -135q18 -131 -2 -287q-10 -68 -26 -121q-16 -55 -53 -135q-37 -78 -82 -147q-47 -70 -115 -142 q-66 -70 -156 -129q-84 -55 -196 -102q-154 -61 -320 -62q-164 0 -299 64q-137 63 -235.5 174t-141.5 275t-18 352zM391 795q-25 -176 29 -326q51 -143 180 -231q126 -86 301 -86q169 0 320 86q143 82 243 237q96 150 121 326q8 49 6 100q-4 70 -8 107q-6 51 -29 106 q-29 70 -47 103q-25 45 -71 88q-45 41 -97 71q-45 27 -122 47q-63 16 -152 17q-111 0 -219 -45q-115 -47 -205 -129q-98 -88 -162 -205q-65 -121 -88 -266zM549 676q-4 66 8 119q35 236 168 375t340 139q70 0 137.5 -20.5t102.5 -45.5l20 -14l-31 -211l-63 37q-23 14 -82 30 q-51 14 -119 15q-53 0 -88 -17q-39 -18 -68 -47q-20 -20 -47 -69q-20 -37 -32.5 -82t-18.5 -90q-16 -117 2 -183q18 -68 64 -96q41 -27 112 -27q98 0 213 58l74 37l-29 -219l-28 -15q-139 -70 -248 -69q-80 0 -152 22q-66 20 -110 59q-39 33 -72 87q-33 51 -41 108 q-10 60 -12 119z" />
+<glyph unicode="&#xad;" d="M145 604l33 232h815l-32 -232h-816z" />
+<glyph unicode="&#xae;" horiz-adv-x="1312" d="M188 1108q16 109 68 207q47 90 131 170q70 68 182 114q102 43 211 43q139 0 252 -71q111 -70 162 -193q51 -119 29 -270q-23 -150 -107 -270.5t-215 -192.5t-270 -72q-147 0 -254 74q-113 78 -160 195q-49 125 -29 266zM301 1106q-25 -180 72 -299q98 -121 272 -121 q178 0 307 121q133 125 158 299q25 181 -74 301q-98 121 -272 121q-178 0 -307 -121q-131 -121 -156 -301zM492 817l83 596h111q61 0 105 -6q45 -6 81.5 -24.5t51.5 -51.5q16 -35 10 -82q-10 -70 -47 -106q-41 -41 -115 -62l123 -229l-115 -57l-114 266h-31l-35 -244h-108z M651 1159h41q61 0 92 18.5t37 67.5q6 41 -22 55q-33 16 -125 17z" />
+<glyph unicode="&#xb4;" horiz-adv-x="901" d="M389 313l195 684h389l-383 -684h-201z" />
+<glyph unicode="&#x2000;" horiz-adv-x="868" />
+<glyph unicode="&#x2001;" horiz-adv-x="1738" />
+<glyph unicode="&#x2002;" horiz-adv-x="868" />
+<glyph unicode="&#x2003;" horiz-adv-x="1738" />
+<glyph unicode="&#x2004;" horiz-adv-x="579" />
+<glyph unicode="&#x2005;" horiz-adv-x="434" />
+<glyph unicode="&#x2006;" horiz-adv-x="288" />
+<glyph unicode="&#x2007;" horiz-adv-x="288" />
+<glyph unicode="&#x2008;" horiz-adv-x="215" />
+<glyph unicode="&#x2009;" horiz-adv-x="346" />
+<glyph unicode="&#x200a;" horiz-adv-x="94" />
+<glyph unicode="&#x2010;" d="M145 604l33 232h815l-32 -232h-816z" />
+<glyph unicode="&#x2011;" d="M145 604l33 232h815l-32 -232h-816z" />
+<glyph unicode="&#x2012;" d="M145 604l33 232h815l-32 -232h-816z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M145 604v232h758v-232h-758z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M145 604v232h1782v-232h-1782z" />
+<glyph unicode="&#x2018;" horiz-adv-x="667" d="M123 846l59 424q8 57 31 110q22 52 49 86q37 45 57 64q37 33 62 45l53 27q6 2 18.5 7t18.5 7l14 4l80 -123q0 1 -37 -33q-23 -23 -79 -94q-43 -55 -50 -98h189l-60 -426h-405z" />
+<glyph unicode="&#x2019;" horiz-adv-x="722" d="M8 1161l60 428h405l-59 -426q-8 -57 -31 -110q-22 -52 -49 -86q-37 -45 -58 -64q-31 -28 -61 -43l-53 -26q-6 -2 -18.5 -7.5t-18.5 -7.5l-14 -4l-80 123q0 -1 37 33q37 33 82 92q41 51 47 98h-189z" />
+<glyph unicode="&#x201c;" horiz-adv-x="1169" d="M102 846l62 424q10 63 29 110q22 52 49 86q37 45 57 64q37 33 61 45l54 27q37 14 39 14l14 4l80 -123q0 3 -39 -33q-23 -23 -80 -94q-41 -51 -47 -98h186l-59 -426h-406zM627 846l59 424q8 57 31 110q22 52 49 86q37 45 57 64q37 33 62 45l53 27q37 14 39 14l12 4 l80 -123q0 1 -37 -33q-23 -23 -80 -94q-43 -55 -49 -98h189l-60 -426h-405z" />
+<glyph unicode="&#x201d;" horiz-adv-x="1001" d="M8 1161l60 428h405l-59 -426q-8 -57 -31 -110q-22 -52 -49 -86q-37 -45 -58 -64q-31 -28 -61 -43l-53 -26q-6 -2 -18.5 -7.5t-18.5 -7.5l-14 -4l-80 123q0 -1 37 33q37 33 82 92q41 51 47 98h-189zM532 1161l60 428h405l-59 -426q-8 -57 -31 -110q-22 -52 -49 -86 q-37 -45 -57 -64q-31 -28 -62 -43l-53 -26q-37 -14 -39 -15l-12 -4l-80 123q0 -1 37 33q29 27 80 92q43 55 49 98h-189z" />
+<glyph unicode="&#x2022;" horiz-adv-x="1120" d="M293 627q0 111 57 204q61 100 156 156q96 57 207 57q135 0 225 -90t90 -221q0 -111 -57.5 -205t-155.5 -153q-94 -57 -205 -58q-139 0 -227 89q-90 90 -90 221z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1337" d="M82 170q12 80 68 129q59 53 126 53q70 0 113 -53q43 -52 31 -129q-9 -77 -68 -129q-59 -53 -127 -53q-70 0 -112 53q-43 52 -31 129zM508 170q12 80 67 129q59 53 127 53q70 0 113 -53q43 -52 31 -129q-9 -77 -68 -129q-59 -53 -127 -53q-70 0 -112 53q-43 52 -31 129z M934 170q12 80 67 129q59 53 127 53q70 0 113 -53q43 -52 31 -129q-9 -77 -68 -129q-59 -53 -127 -53q-70 0 -112 53q-43 52 -31 129z" />
+<glyph unicode="&#x202f;" horiz-adv-x="346" />
+<glyph unicode="&#x205f;" horiz-adv-x="434" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1329" d="M115 555l28 188h136q0 10 3 26.5t6 41.5l5 43h-176l28 190h191q41 127 100 224q66 102 150 176q88 76 207 115q123 41 266 40q71 0 135 -12q78 -14 111 -26q57 -20 79 -31q31 -14 50 -29l16 -10l-109 -264q-2 0 -8 4t-10 6l-45 23q-29 12 -70 26q-45 14 -88 23 q-57 10 -100 10q-113 0 -203 -72q-84 -68 -141 -203h389l-29 -190h-415q-12 -63 -17 -111h369l-29 -188h-346q16 -315 268 -315q47 0 101 12q59 14 92 27q27 10 71 30q18 8 50 29l16 10l57 -254q-61 -51 -176 -92q-111 -39 -266 -39q-123 0 -215 33q-94 33 -170 102.5 t-115 184.5q-41 119 -41 272h-155z" />
+<glyph unicode="&#x2122;" horiz-adv-x="2969" d="M127 1337l35 240h1095l-34 -240h-387l-187 -1337h-317l186 1337h-391zM1210 0l162 1151l72 426h387l65 -428l80 -602l23 -232l78 226l266 647l170 389h389l-57 -526l-152 -1051h-293l158 1108l-344 -875l-109 -233h-297l-47 295l-100 809l-160 -1104h-291z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1105" d="M0 1105h1105v-1105h-1105v1105z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1404" d="M893 0l151 1104h311l-151 -1104h-311zM1095 1464q12 80 68 129q59 53 127 54q70 0 113 -54q33 -41 33 -96q0 -16 -3 -33q-10 -80 -65 -129q-59 -53 -129 -53t-113 53q-33 41 -33 96q-1 16 2 33zM135 -225l164 1169h-129l23 158h129q16 111 47 190q34 89 86 160t129 111 q78 41 170 41q98 0 190 -29l-35 -254q-55 25 -125 25q-55 0 -96 -66q-37 -59 -53 -178h237l-22 -158h-240l-164 -1169h-311z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1429" d="M915 0l225 1589l320 47l-232 -1636h-313zM135 -225l164 1169h-129l23 158h129q16 111 47 190q34 89 86 160t129 111q78 41 170 41q98 0 190 -29l-35 -254q-55 25 -125 25q-55 0 -96 -66q-37 -59 -53 -178h237l-22 -158h-240l-164 -1169h-311z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="2185" d="M1676 0l151 1104h311l-151 -1104h-311zM1878 1464q12 80 68 129q59 53 127 54q70 0 113 -54q33 -41 33 -96q0 -16 -3 -33q-10 -80 -65 -129q-59 -53 -129 -53t-113 53q-33 41 -33 96q-1 16 2 33zM917 -225l164 1169h-129l23 158h129q16 111 47 190q34 89 86 160t129 111 q78 41 170 41q98 0 190 -29l-35 -254q-55 25 -125 25q-55 0 -96 -66q-37 -59 -53 -178h237l-22 -158h-240l-164 -1169h-311zM135 -225l164 1169h-129l23 158h129q16 111 47 190q34 89 86 160t129 111q78 41 170 41q98 0 190 -29l-35 -254q-55 25 -125 25q-55 0 -96 -66 q-37 -59 -53 -178h237l-22 -158h-240l-164 -1169h-311z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="2211" d="M1698 0l225 1589l320 47l-232 -1636h-313zM917 -225l164 1169h-129l23 158h129q16 111 47 190q34 89 86 160t129 111q78 41 170 41q98 0 190 -29l-35 -254q-55 25 -125 25q-55 0 -96 -66q-37 -59 -53 -178h237l-22 -158h-240l-164 -1169h-311zM135 -225l164 1169h-129 l23 158h129q16 111 47 190q34 89 86 160t129 111q78 41 170 41q98 0 190 -29l-35 -254q-55 25 -125 25q-55 0 -96 -66q-37 -59 -53 -178h237l-22 -158h-240l-164 -1169h-311z" />
+</font>
+</defs></svg> 
\ No newline at end of file
blob - /dev/null
blob + 54dedd83b6a187db6c026fa31397e7e4a1bf7249 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_bold_italic-webfont.ttf differ
blob - /dev/null
blob + d88da7512d8a1e608548a42b499f752a313ca267 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_bold_italic-webfont.woff differ
blob - /dev/null
blob + c8f700921b4ae7bc5cafa3192c77740254d730a6 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_italic-webfont.eot differ
blob - /dev/null
blob + a4a3a01a6063ef167ed5815b85f9ae598712bfce (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_italic-webfont.svg
@@ -0,0 +1,148 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 20072010 by vernon adams All rights reserved
+</metadata>
+<defs>
+<font id="webfonttc09wOXW" horiz-adv-x="794" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="466" />
+<glyph unicode=" "  horiz-adv-x="466" />
+<glyph unicode="&#x09;" horiz-adv-x="466" />
+<glyph unicode="&#xa0;" horiz-adv-x="466" />
+<glyph unicode="!" horiz-adv-x="589" d="M113 86q0 57 41 104q39 45 94 46q43 0 69 -31q27 -29 27 -76q0 -57 -41 -104q-39 -45 -90 -45q-45 0 -74 30q-26 29 -26 76zM213 399l90 979l27 201h211l-29 -203l-199 -977h-100z" />
+<glyph unicode="&#x22;" horiz-adv-x="733" d="M188 1059l13 475l6 41h211l-6 -41l-121 -475h-103zM506 1059l10 475l4 41h213l-6 -41l-123 -475h-98z" />
+<glyph unicode="#" horiz-adv-x="1206" d="M139 430l19 94h184l88 348h-186l20 95h189l96 366h131l-98 -366h254l96 364h131l-96 -364h178l-25 -95h-174l-88 -348h184l-18 -94h-186l-90 -367h-132l93 367h-254l-93 -367h-131l93 367h-185zM473 524h252l90 348h-250z" />
+<glyph unicode="$" horiz-adv-x="1116" d="M92 61l66 132l27 -18l10 -5q39 -20 108 -43q72 -23 123 -23l90 496q-77 34 -135 68q-55 33 -107 80q-49 46 -73 104q-25 57 -25 127q0 133 119 229.5t336 96.5l24 151h84l-24 -153q25 0 90 -9q49 -6 86 -18l31.5 -10.5t38.5 -12.5l49 -16l16 -6l-49 -119l-47 16 q-46 15 -117 31q-66 14 -121 15l-74 -447q108 -46 172.5 -80t110.5 -80q41 -43 62 -100q18 -55 18 -133q0 -119 -70 -207q-66 -84 -176 -125q-104 -39 -241 -39l-25 -151h-90l24 155q-29 0 -45 2q-20 2 -47 11q-29 8 -45 12q-29 6 -45 14l-20.5 7t-20.5 10l-35 14 q-10 4 -26 12l-19 8zM317 985q0 -61 15 -92q16 -37 61 -68q53 -37 144 -71l71 422q-131 -4 -211 -50t-80 -141zM520 102q158 0 240 54q80 53 80 178q0 49 -9 76q-8 29 -34 61q-27 35 -74 57q-51 25 -125 47z" />
+<glyph unicode="%" horiz-adv-x="1701" d="M182 1071q0 37 6.5 80t18.5 104.5t38.5 114.5t63.5 103q39 51 99 77q63 29 135 29q68 0 121 -25q52 -25 79 -67q29 -45 41.5 -94.5t12.5 -112.5q0 -61 -9 -119q-6 -43 -36 -135q-23 -72 -64 -129q-37 -55 -104 -96q-63 -39 -150 -39q-72 0 -123 26q-47 25 -78 76 q-27 43 -38 99q-13 53 -13 108zM301 1065q0 -199 148 -199q184 0 227 310q8 49 8 108q0 102 -39 147.5t-110 45.5q-180 0 -224 -301q-10 -72 -10 -111zM362 -51l863 1710l98 -45l-866 -1706zM899 279q0 16 4 65q4 39 12 90q6 31 27 98q15 49 43 99q29 51 64 86q39 39 90 59 q57 23 118 23q70 0 121 -25q52 -25 80 -67q27 -41 39 -93q12 -49 12 -112q0 -98 -20 -183q-23 -96 -64 -167q-43 -78 -110 -127q-66 -47 -152 -48q-74 0 -129 25q-51 23 -82 70q-27 43 -41 96q-12 50 -12 111zM1018 279q0 -190 139 -191q53 0 96 25q45 25 68 65q29 51 41 84 q16 47 22 94q14 88 15 154q0 88 -33 135q-34 49 -117 49q-57 0 -94 -22q-43 -27 -65 -70q-29 -51 -41 -94q-10 -35 -23 -117q-8 -63 -8 -112z" />
+<glyph unicode="&#x26;" horiz-adv-x="1540" d="M111 317q0 106 41 197q45 100 135 178t223 119q-10 10 -18 16q-16 12 -43 39q-35 35 -54 62q-23 31 -41 76q-18 43 -18 83q0 39 10 76q14 47 41 94q29 47 74 91q45 41 123 69q80 29 172 29q158 0 245 -78q84 -76 84 -201q0 -20 -4 -53q-18 -137 -100 -217t-256 -135 l387 -397q104 190 164 389l133 -2q-35 -125 -86 -244q-49 -111 -86 -176l-35 -60l195 -178l-94 -100l-173 176q-72 -123 -194.5 -166t-337.5 -43q-223 0 -354 94q-133 96 -133 262zM264 354q0 -131 96.5 -196.5t255.5 -65.5q88 0 140 6q61 8 106 21q51 14 94 51t82 86 l-454 461q-137 -31 -230 -131q-90 -101 -90 -232zM489 1094q0 -20 7 -41q4 -14 16 -39q8 -16 20.5 -34.5t26.5 -33.5l29 -28q6 -4 13 -12.5t11 -10.5q16 -12 23 -16q4 -2 8 -6.5t6 -6.5l6 -4q98 29 162 68q55 35 80 76q29 51 37 112q2 8 2 33q0 76 -55 119q-53 41 -146 41 q-65 0 -110 -19q-45 -18 -72 -45q-25 -27 -41 -59q-15 -34 -18 -55q-5 -29 -5 -39z" />
+<glyph unicode="'" horiz-adv-x="514" d="M248 1030h96l172 543h-240z" />
+<glyph unicode="(" horiz-adv-x="792" d="M256 471q0 100 16 225q18 131 56 256q33 109 82 211q33 68 94 164q49 78 94 125q47 49 84 84q41 37 57 49l23 14l72 -100q-14 -10 -33 -26q-16 -14 -78 -89q-55 -66 -107 -153q-47 -80 -98 -229.5t-72 -307.5q-18 -117 -18 -227q0 -104 21 -217q18 -102 43 -164 q25 -59 53 -109q29 -47 45 -63l18 -20l-100 -99q-14 14 -27 25q-18 15 -61 74q-41 55 -76 129q-34 71 -61 190q-27 115 -27 258z" />
+<glyph unicode=")" horiz-adv-x="792" d="M76 -106l18 14l43 43q31 31 66 76q33 43 71 108q43 72 76 148q31 70 64 184q29 104 49 227q16 106 16 232q0 76 -10 161q-10 78 -25 134q-12 45 -34 104q-14 41 -39 80q-27 45 -33 53q-14 20 -27 33l-10 8l100 100q2 -2 27 -22q14 -12 61 -76q41 -55 76 -129 q29 -61 60 -192q27 -115 26 -258q0 -117 -14 -226q-16 -119 -57 -256q-37 -121 -80 -211q-39 -82 -94 -163q-51 -78 -95 -123q-45 -49 -82 -82q-33 -31 -59 -49l-23 -17z" />
+<glyph unicode="*" horiz-adv-x="862" d="M141 1137l17 110l288 -10l-110 272l106 58l90 -275l183 279l88 -58l-205 -276l295 10l-16 -110l-289 8l112 -273l-114 -57l-94 248l-170 -248l-89 57l199 273z" />
+<glyph unicode="+" horiz-adv-x="985" d="M154 518l18 133h291l49 344h129l-47 -344h293l-21 -133h-291l-47 -344h-135l51 344h-290z" />
+<glyph unicode="," horiz-adv-x="571" d="M72 -160q70 23 104 62q29 33 39 98h-121l41 293h246l-21 -291q-2 -53 -22 -98q-14 -35 -55 -72q-31 -29 -76 -49q-35 -16 -101 -37z" />
+<glyph unicode="-" d="M158 508l18 131h547l-18 -131h-547z" />
+<glyph unicode="." horiz-adv-x="491" d="M96 86q0 57 41 104q39 45 94 46q43 0 70 -31q27 -29 27 -76q0 -57 -41 -104q-39 -45 -90 -45q-45 0 -72 30q-29 33 -29 76z" />
+<glyph unicode="/" horiz-adv-x="944" d="M96 -96l836 1827l143 -60l-850 -1833z" />
+<glyph unicode="0" horiz-adv-x="1302" d="M109 469q0 66 8 121q12 82 41 174q29 90 78 168q51 82 118 143q70 63 164 99q98 37 211 36q96 0 178 -28q76 -27 129 -74q52 -46 86 -111q31 -57 47 -135q14 -66 15 -147q0 -57 -10 -125q-12 -98 -41 -176q-33 -94 -82 -168q-51 -78 -121 -142q-66 -59 -166 -98 q-96 -37 -209 -37q-92 0 -172 29q-78 29 -127 74q-53 49 -86 112q-31 57 -47 135q-14 66 -14 150zM279 459q0 -78 14 -133q18 -68 47 -111q35 -51 92 -78q55 -27 141 -26q82 0 152 28q66 27 113 74q46 46 80 111q35 66 53 131q20 72 28 137q10 76 11 131q0 346 -299 346 q-80 0 -146 -25q-61 -23 -110 -69q-51 -47 -82 -105q-27 -49 -54 -131q-16 -49 -30 -147q-10 -82 -10 -133z" />
+<glyph unicode="1" horiz-adv-x="829" d="M203 1083l231 86h197l-164 -1169h-164l148 1057l-220 -90z" />
+<glyph unicode="2" horiz-adv-x="1101" d="M100 0l19 141l155 121l318 246q102 80 172 174q72 96 72 197q0 86 -63.5 133t-176.5 47q-57 0 -133 -17q-57 -12 -107 -32l-39 -17l-38 123q2 0 8 3l10 5l49 21q35 14 78 24q68 16 98 21q51 8 117 8q170 0 256 -86q84 -84 84 -233q0 -238 -305 -467l-350 -262l522 2 l-21 -152h-725z" />
+<glyph unicode="3" horiz-adv-x="1071" d="M82 -102l63 122q16 -8 47 -20t117 -30.5t160 -18.5q88 0 147 26q66 29 95 70q33 45 47 90q12 37 12 96q0 205 -274 238l18 143q76 0 137.5 18.5t96.5 47.5q33 27 55 65q27 45 31 72q8 45 8 72q0 88 -60 129q-57 39 -184 39q-63 0 -139 -17q-63 -14 -109 -32l-37 -17 l-28 133q20 10 51 23q49 18 121 37q94 23 168 22q37 0 98 -8q49 -6 100 -24q47 -16 88 -52q37 -31 62 -82q25 -52 24 -116q0 -92 -32 -164q-37 -80 -80 -121q-47 -45 -105 -70q-55 -25 -100 -24q45 -10 82 -27q35 -16 80 -51t69 -94q27 -63 27 -135q0 -80 -31 -162 q-29 -76 -76 -123q-53 -53 -112 -84q-70 -37 -133 -51q-72 -16 -142 -17q-53 0 -118 11q-59 10 -103 24q-49 18 -73 29l-28 11t-24 11z" />
+<glyph unicode="4" horiz-adv-x="1218" d="M127 205l778 1003l150 -39l-135 -970h167l-20 -131h-168l-45 -326l-158 -29l54 355h-615zM295 197h473l115 768z" />
+<glyph unicode="5" horiz-adv-x="1218" d="M109 -131l14 139l10 -5t14.5 -6t16.5 -7q20 -8 112 -29q86 -18 183 -18q174 0 274.5 100t100.5 268q0 229 -250 230q-74 0 -160 -21q-77 -18 -111 -37l-94 80l115 608h678l-19 -149h-549l-84 -410q4 0 48 19q16 8 41.5 17l31.5 11q14 6 82 23q41 10 92 10q162 0 242 -94 q82 -98 82 -268q0 -242 -151.5 -389.5t-391.5 -147.5q-92 0 -174 19q-74 16 -119 38z" />
+<glyph unicode="6" horiz-adv-x="1198" d="M145 285q0 -209 101 -324q102 -117 299 -117q109 0 200 37q90 37 152 94q61 58 104 136q45 82 64 155q18 77 18 154q0 169 -98 270q-98 102 -276 103q-201 0 -336 -144q27 92 80 176q45 70 114 138q66 63 131 102q76 47 138 70q53 20 131 39l-21 145q-102 -25 -213 -78 q-113 -53 -201 -127q-95 -80 -172 -178q-70 -88 -129 -231q-55 -131 -75 -279q-11 -78 -11 -141zM309 285q0 47 10 129q8 66 23 108q43 43 135 86q104 49 213 49q100 0 164 -61q66 -61 66 -188q0 -74 -21 -142q-22 -71 -61 -135q-39 -63 -113 -104q-72 -41 -162 -41 q-254 0 -254 299z" />
+<glyph unicode="7" horiz-adv-x="1118" d="M158 -160l579 957l135 223h-206h-443l19 149h778l35 -122l-752 -1283z" />
+<glyph unicode="8" horiz-adv-x="1316" d="M145 178q0 23 5 60q8 63 32 129q18 51 51 98q23 33 62 72q37 37 63 53q31 18 56 31q20 10 41 18l14 2l-6 2l-19 8l-13 6.5l-13 6.5q-12 4 -29 18q-31 25 -33 27q-8 8 -28 36q-14 18 -27 46q-8 18 -16 55q-6 31 -6 67q0 66 18 127q20 70 55 117q41 57 94 98q51 39 136 66 q74 23 176 22q176 0 276 -81q102 -84 103 -232q0 -59 -17 -119q-14 -51 -41 -94q-23 -37 -55 -69q-37 -35 -61 -52q-51 -31 -56 -32l-41 -17l-14 -6q2 0 9 -2t13 -4q12 -4 52 -31q41 -27 65 -57q33 -41 51 -92q23 -63 23 -136q0 -119 -43 -206q-43 -90 -114.5 -143.5 t-164.5 -82.5q-86 -27 -194 -26q-83 0 -153.5 18.5t-129.5 54.5q-53 33 -88 101q-33 63 -33 143zM319 201q0 -104 62 -148q63 -45 184 -45q66 0 131 15q55 12 103 47q51 37 73 96q25 63 25 156q0 227 -246 260q-70 -10 -114 -29q-49 -20 -86 -47q-31 -23 -57.5 -59.5 t-39.5 -67.5q-14 -37 -22 -68q-6 -23 -10 -59q-3 -16 -3 -51zM434 909q0 -104 57.5 -149t180.5 -62q111 16 168 47q141 80 141 273q0 190 -240 190q-72 0 -127 -18q-51 -16 -88 -47q-34 -28 -55 -68q-16 -31 -29 -82q-8 -35 -8 -84z" />
+<glyph unicode="9" horiz-adv-x="1161" d="M156 739q0 -170 98 -272t276 -102q205 0 338 145q-27 -92 -80 -176q-47 -76 -114 -139q-57 -53 -133 -101q-86 -51 -138 -71q-57 -23 -129 -39l21 -146q102 25 213 78q106 51 200.5 129t170.5 176q74 94 131 232q51 123 73 280q10 78 11 139q0 209 -101 324 q-102 119 -297 119q-109 0 -200 -37q-90 -37 -154 -96q-61 -58 -104 -135t-62 -154q-20 -86 -20 -154zM319 750q0 53 12.5 110.5t41.5 114.5q31 59 67.5 100t102.5 70q59 27 133 26q256 0 256 -297q0 -31 -12 -129q-10 -78 -21 -110q-39 -39 -135 -84q-104 -49 -213 -49 q-100 0 -166 61.5t-66 186.5z" />
+<glyph unicode=":" horiz-adv-x="708" d="M156 0l43 264h258l-43 -264h-258zM246 612l43 265h258l-43 -265h-258z" />
+<glyph unicode=";" horiz-adv-x="739" d="M162 -160q70 23 104 62q29 33 39 98h-121l41 293h244l-18 -291q-2 -47 -25 -98q-16 -39 -53 -72q-31 -29 -76 -49q-35 -16 -100 -37zM246 612l43 265h258l-43 -265h-258z" />
+<glyph unicode="&#x3c;" horiz-adv-x="980" d="M240 481l26 185l621 383l-31 -195l-453 -276l377 -281l-28 -199z" />
+<glyph unicode="=" horiz-adv-x="915" d="M166 281l16 131h547l-16 -131h-547zM197 508l18 131h547l-19 -131h-546z" />
+<glyph unicode="&#x3e;" horiz-adv-x="911" d="M176 98l621 383l24 185l-512 383l-28 -207l358 -267l-434 -270z" />
+<glyph unicode="?" horiz-adv-x="1044" d="M201 59q0 49 32 84q33 37 78 37q41 0 64 -26q20 -23 20 -62q0 -47 -30.5 -84t-79.5 -37q-33 0 -60 27q-24 24 -24 61zM264 1423l58 -141l67 31q111 51 236 51q129 0 186 -43t57 -129q0 -2 -4 -47q-10 -57 -43 -112.5t-82 -100.5q-37 -35 -106 -86q-51 -37 -112.5 -72 t-102.5 -53l-38 -18.5t-36 -16.5l-29 -12l-47 -371h148l47 277l20 10q8 4 25.5 12t28.5 12q37 16 75 39q72 41 90 54q43 29 95 69q39 31 90 86q39 43 76 99q37 57 53 114q18 65 18 129q0 70 -18 121q-18 53 -64 98q-43 43 -120.5 68t-188.5 25q-63 0 -149 -17 q-80 -15 -136 -37z" />
+<glyph unicode="@" horiz-adv-x="1843" d="M137 469q0 66 8 123q25 186 111 346q88 164 209 272q125 113 276.5 176.5t315.5 63.5q199 0 344 -64q150 -66 233 -194q86 -131 86 -315q0 -63 -8 -121q-18 -135 -67 -240q-49 -102 -105 -162q-49 -51 -127 -94q-68 -37 -121 -49q-43 -10 -98 -10t-76 24q-20 23 -20 68 q0 23 2 37q3 22 43 166l-10 2q-4 -8 -7 -17q0 -4 -20 -43q-14 -29 -34.5 -59.5t-51.5 -61.5q-41 -41 -71.5 -61t-92.5 -41q-49 -16 -117 -16q-133 0 -208.5 81.5t-75.5 229.5q0 37 6 80q12 104 65 194q55 95 136 172q86 82 184 125q111 47 217 47q41 0 151 -16l56.5 -8 t39 -6t13.5 -2l37 -111l-154 -668q39 0 72 9q35 8 82 36q51 31 84 72q39 49 72 129q33 82 49 195q8 47 8 112q0 223 -139 334q-141 113 -390 113q-145 0 -280 -60q-133 -59 -229 -161q-92 -98 -158 -232q-61 -127 -84 -276q-8 -51 -8 -105q0 -223 145 -350 q147 -129 418 -129q88 0 176 16q72 12 137 39q39 14 94 45q43 23 60 37l16 17q33 -49 64 -90l-21 -21q-10 -10 -63.5 -47t-110.5 -59q-68 -27 -162 -47q-106 -23 -217 -23q-309 0 -497 160q-187 159 -187 438zM598 512q0 -182 180 -182q281 0 387 420l58 237q-2 0 -29 6 q-10 2 -33.5 5t-32.5 6q-25 4 -65 4q-168 0 -301 -125q-135 -127 -160 -310q-4 -36 -4 -61z" />
+<glyph unicode="A" horiz-adv-x="1466" d="M2 0l705 1575h288l269 -1575h-177l-57 387h-670l-163 -387h-195zM403 492h611l-131 780l-41 250l-103 -258z" />
+<glyph unicode="B" horiz-adv-x="1347" d="M100 0l224 1575h364q315 0 451 -70q133 -68 133 -235q0 -61 -15 -125q-12 -57 -32 -94q-25 -45 -51 -72q-35 -37 -62 -51q-25 -14 -68 -33q-31 -12 -65 -21q-28 -6 -61 -12q29 -4 81 -16q41 -10 88 -35q43 -23 80 -59q33 -33 55.5 -94.5t22.5 -129.5q0 -119 -39 -217 q-37 -92 -102 -151q-68 -61 -158 -97q-82 -33 -196 -49q-94 -14 -228 -14h-422zM301 143h242q49 0 119 4q49 2 108 13q63 10 102 26q47 20 82 47q43 33 66 70q27 43 41 98q16 61 16 131q0 143 -98 198.5t-309 55.5h-279zM410 915h272q57 0 139 9q57 6 117 28q61 25 94 52 q41 35 61.5 84t20.5 120v35q0 109 -94 152q-90 41 -344 41h-193z" />
+<glyph unicode="C" horiz-adv-x="1230" d="M104 557q0 78 11 184q8 94 37 199q31 115 65 199q43 104 102 182q68 90 144 152q80 63 188 100q111 37 238 37q152 0 262 -68l135 -84l-78 -127l-125 80q-51 31 -94 39t-115 8q-100 0 -186 -37t-143.5 -94t-104.5 -139q-45 -78 -73 -164q-27 -78 -45 -170 q-18 -89 -25 -160q-6 -72 -6 -133q0 -129 26 -215q31 -96 76 -139q57 -53 117 -74q68 -23 149 -22q119 0 199 39l164 79l55 -129l-180 -80q-52 -25 -129 -43q-76 -18 -150 -18q-111 0 -204 35q-92 35 -162 100q-68 63 -109 187q-39 114 -39 276z" />
+<glyph unicode="D" horiz-adv-x="1476" d="M102 0l226 1575h512q518 0 518 -565q0 -51 -8 -158q-6 -74 -29 -182q-20 -98 -55 -193q-35 -96 -90 -180q-57 -86 -134 -154q-72 -63 -186 -104q-109 -39 -240 -39h-514zM305 150h334q96 0 174 32.5t133 88t96 128.5q39 68 66 154q23 68 39 164t22 157q4 47 5 138 q0 221 -89 315q-90 96 -268 96h-334z" />
+<glyph unicode="E" horiz-adv-x="1183" d="M113 0l225 1575h899l-20 -139h-719l-76 -545h627l-15 -115h-628l-91 -633h732l-19 -143h-915z" />
+<glyph unicode="F" horiz-adv-x="1099" d="M127 0l225 1575h899l-20 -139h-717l-78 -557h639l-16 -117h-639l-111 -762h-182z" />
+<glyph unicode="G" horiz-adv-x="1363" d="M102 553q0 78 11 184q8 94 37 199q29 106 67 201q43 104 102 182q68 90 144 151q84 68 188 103q111 37 238 37q129 0 241 -58l156 -75l-65 -136l-148 74q-82 43 -199 43q-96 0 -184 -35q-84 -33 -143 -92q-63 -63 -107 -135q-47 -80 -73 -158q-31 -90 -48 -172 q-18 -86 -24 -166q-6 -74 -6 -145q0 -233 96 -340q94 -104 272 -104q188 0 285 77q100 82 115 199l39 297h-162h-223l20 127h547l-115 -811h-96v170q-2 -2 -7 -9t-9 -14q-2 -4 -47 -49q-37 -37 -84.5 -65.5t-124.5 -48.5q-92 -25 -170 -25q-252 0 -387.5 145.5t-135.5 448.5 z" />
+<glyph unicode="H" horiz-adv-x="1562" d="M106 0l224 1575h176l-98 -696h780l98 696h176l-223 -1575h-176l108 764h-780l-108 -764h-177z" />
+<glyph unicode="I" horiz-adv-x="831" d="M92 0l14 102h193l193 1381h-191l14 92h551l-12 -92h-192l-193 -1381h190l-14 -102h-553z" />
+<glyph unicode="J" horiz-adv-x="833" d="M2 -70l115 25l37 6q131 31 182 133q37 72 57 238q2 6 8 53l166 1190h176l-161 -1155q-2 -10 -5.5 -39t-5.5 -41t-8 -40t-8 -40q-8 -45 -18 -82q-10 -35 -27 -78q-20 -49 -37 -77q-18 -31 -47 -66q-31 -39 -61 -57q-47 -29 -78 -43q-47 -20 -94 -29l-46 -8l-118 -25z" />
+<glyph unicode="K" horiz-adv-x="1271" d="M127 0l225 1575h180l-102 -729h188l574 729h203l-604 -762l-23 -29l16 -28l443 -756h-199l-428 739h-186l-105 -739h-182z" />
+<glyph unicode="L" horiz-adv-x="1064" d="M113 0l225 1575h178l-201 -1432h695l-21 -143h-876z" />
+<glyph unicode="M" horiz-adv-x="1955" d="M113 0l254 1575h297l213 -1296l20 -138l57 129l584 1305h289l-191 -1575h-176l152 1227l33 239l-95 -206l-567 -1260h-215l-199 1188l-45 266l-43 -254l-190 -1200h-178z" />
+<glyph unicode="N" horiz-adv-x="1564" d="M94 0h156l201 1427l540 -1427h250l227 1575h-163l-199 -1409l-531 1409h-258z" />
+<glyph unicode="O" horiz-adv-x="1503" d="M145 553q0 102 9 184q8 88 34 199q25 106 62 201q31 78 98 182q53 82 133 151q74 66 181 103q104 37 227 37q119 0 205 -33q92 -35 159 -102q72 -72 109 -187q37 -117 37 -274q0 -82 -10.5 -184.5t-32.5 -198.5q-25 -102 -62 -199q-37 -94 -96 -182q-55 -82 -135 -152 q-72 -63 -178 -100q-111 -39 -228 -39q-119 0 -208 33q-86 31 -160 102q-70 66 -107 185q-37 116 -37 274zM332 557q0 -233 88 -339.5t260 -106.5q88 0 162 32q82 37 129 86q55 59 96 131q41 74 70 156q23 68 45 172q18 88 24 170q6 80 6 160q0 231 -86 335.5t-258 104.5 q-82 0 -163 -33q-74 -29 -132 -84q-47 -45 -96 -129q-39 -66 -69 -155q-25 -72 -46 -170q-18 -88 -24 -170q-6 -80 -6 -160z" />
+<glyph unicode="P" horiz-adv-x="1271" d="M113 0l225 1575h367q317 0 456 -84q137 -82 137 -277q0 -139 -38 -237q-41 -104 -103 -166q-59 -59 -164 -102q-98 -39 -207 -56q-100 -14 -243 -14h-160l-88 -639h-182zM406 784h159q106 0 203 11q88 10 157.5 36.5t114.5 75.5q41 43 66 119q23 68 22 174q0 86 -36 135 q-39 51 -131 76q-95 25 -265 25h-198z" />
+<glyph unicode="Q" horiz-adv-x="1562" d="M123 555q0 80 10 182q8 88 35 199q25 102 61 199q37 95 99 184q61 90 135 151q80 68 182 103q109 37 229 37q88 0 164 -19q68 -16 142 -65q66 -43 112 -113q43 -61 72 -170q27 -98 27 -233q0 -76 -7 -156q-4 -63 -26 -176q-18 -95 -49 -184q-33 -94 -78 -177 q-47 -86 -113 -157q-63 -70 -151 -119q-94 -51 -197 -70l293 -282l-109 -113l-317 307l-86 82q-94 12 -170 51t-135.5 109t-89.5 178q-33 119 -33 252zM309 557q0 -229 90 -337.5t267 -108.5q89 0 165 30q76 31 131.5 86.5t98.5 128.5q39 66 69 156q25 72 46 170 q18 88 24 170q6 80 6 160q0 231 -88 338q-90 109 -264 108q-86 0 -168 -33q-74 -29 -131 -84q-51 -49 -98 -129q-43 -76 -72 -155q-20 -55 -43 -170q-23 -104 -27 -170q-6 -80 -6 -160z" />
+<glyph unicode="R" horiz-adv-x="1349" d="M113 0l225 1575h348q31 0 78 -1t63 -1q8 0 127 -10q55 -4 115 -21q39 -10 92 -37q45 -23 76 -59q27 -33 45 -84q16 -47 16 -119q0 -102 -30 -182q-29 -76 -82 -129q-51 -51 -109 -80q-59 -29 -116 -43q-51 -12 -103 -12q174 -23 252 -95q82 -76 82 -217q0 -2 -4 -43 q-2 -20 -2 -45l-45 -397h-168l45 412q0 14 2 32q4 37 4 39q0 139 -106 197q-100 53 -351 53h-168l-104 -733h-182zM418 862h139q98 0 137 2q55 2 121 13q76 10 111 22q43 14 88 43t67 64q29 45 43 90q14 49 15 121q0 51 -13 88q-12 35 -45 61q-20 16 -65 37q-37 16 -96 22 q-43 4 -113 9q-37 2 -139 2h-170z" />
+<glyph unicode="S" horiz-adv-x="1267" d="M113 74l57 151l192 -78q98 -37 199 -36q106 0 170 18q135 37 199 147q47 76 47 181q0 174 -203 250l-299 106q-119 43 -190 127q-70 82 -70 211q0 203 160 332q158 127 409 127q145 0 236 -45l154 -78l-68 -137l-145 71q-74 37 -191 37q-172 0 -276 -78 q-109 -80 -109 -206q0 -132 166 -191l295 -102q127 -47 213 -136q43 -43 67 -108q25 -74 25 -150q0 -94 -27 -172q-78 -264 -368 -333q-94 -23 -229.5 -23t-247.5 45z" />
+<glyph unicode="T" horiz-adv-x="1044" d="M156 1436l18 139h1030l-18 -139h-424l-203 -1436h-178l205 1436h-430z" />
+<glyph unicode="U" horiz-adv-x="1562" d="M186 489q0 100 19 226l121 860h178l-119 -864q-23 -180 -23 -242q0 -203 80 -287q80 -82 258 -82q117 0 189 29q76 31 137 100q59 68 100 189q39 111 64 293l125 864h178l-121 -860q-25 -178 -74 -309q-53 -143 -110 -218q-65 -83 -148 -135q-82 -51 -170 -73 q-82 -20 -190 -21q-84 0 -160 16q-74 16 -135 51t-106 97q-41 57 -68 153q-25 92 -25 213z" />
+<glyph unicode="V" horiz-adv-x="1255" d="M207 1575h164l172 -1159l43 -305l125 303l499 1161h164l-678 -1575h-252z" />
+<glyph unicode="W" horiz-adv-x="1951" d="M190 1575h162l76 -1419l2 -88l33 92l455 1415h296l66 -1331l6 -121l41 125l465 1327h162l-553 -1575h-258l-80 1522l-502 -1522h-280z" />
+<glyph unicode="X" horiz-adv-x="1267" d="M29 0l561 791l-340 784h186l271 -645l436 645h200l-563 -784l342 -791h-190l-264 633l-447 -633h-192z" />
+<glyph unicode="Y" horiz-adv-x="1171" d="M193 1575h161l213 -703l62 -206l106 206l404 703h176l-631 -1090l-68 -485h-178l74 516z" />
+<glyph unicode="Z" horiz-adv-x="1126" d="M45 0l25 180l790 1047l164 209h-227h-551l20 139h959l-23 -156l-774 -1030l-192 -246h237h551l-20 -143h-959z" />
+<glyph unicode="[" horiz-adv-x="1187" d="M281 0l223 1579h616l-20 -143h-438l-181 -1293h439l-21 -143h-618z" />
+<glyph unicode="\" horiz-adv-x="815" d="M135 1706l150 25l319 -1870l-145 -29z" />
+<glyph unicode="]" horiz-adv-x="1130" d="M113 0l22 143h438l183 1293h-439l21 143h614l-219 -1579h-620z" />
+<glyph unicode="^" horiz-adv-x="1323" d="M430 358l203 330l123 201h112l45 -201l68 -330h-137l-45 234l-19 84l-55 -94l-137 -224h-158z" />
+<glyph unicode="_" horiz-adv-x="1167" d="M100 -111l21 144h874l-20 -144h-875z" />
+<glyph unicode="`" horiz-adv-x="712" d="M231 977h242l6 -621h-73z" />
+<glyph unicode="a" horiz-adv-x="1093" d="M100 399q0 94 29 199q28 101 80 197q51 92 125 170q72 74 168 120q92 45 198 45q68 0 164 -26q74 -20 140 -51l53 -27l-148 -1026h-129l6 197q-55 -104 -145 -160q-92 -57 -192 -57q-92 0 -162 34.5t-109 92t-57 131.5q-21 81 -21 161zM262 406q0 -158 57 -228 q55 -68 168 -67q53 0 101 20q45 20 86 51q35 27 67 64q27 29 45 57l97 658q-8 4 -23 10q-31 12 -65 20q-47 10 -84 10q-117 0 -219 -81q-100 -80 -166 -220q-64 -134 -64 -294z" />
+<glyph unicode="b" horiz-adv-x="1132" d="M72 0l231 1638l170 15l-119 -824q43 109 158 205t223 96q72 0 127.5 -24.5t87.5 -63.5q31 -35 54 -98q23 -61 28 -119q6 -59 6 -131q0 -80 -12 -159q-10 -72 -39 -162q-25 -82 -67 -152q-43 -72 -95 -125q-49 -51 -126.5 -83.5t-157.5 -32.5q-193 0 -299 202l-54 -182 h-116zM276 281q0 -2 5.5 -8.5t7.5 -10.5q6 -10 33 -41q20 -23 57 -51q31 -25 74 -41q47 -18 96 -18q68 0 121 32q51 31 88 93q35 57 59 120q25 65 37 136q18 106 20 122q4 35 5 93v61q0 12 -5 57q-2 29 -10 56q-10 33 -16 47q-12 25 -31 37q-31 20 -41 24q-23 8 -59 8 q-51 0 -110.5 -32.5t-112.5 -85.5q-59 -59 -93 -103q-45 -57 -67 -94z" />
+<glyph unicode="c" horiz-adv-x="976" d="M129 408q0 37 8 118q6 63 25 133q20 76 45 136q33 76 69 129q41 59 99 106q51 43 131 71.5t166 28.5q164 0 274 -110l55 -55l-86 -93l-57 56q-25 25 -43 37q-20 14 -55 22q-41 10 -92 10q-86 0 -152 -39q-68 -39 -106 -100q-45 -70 -70 -139q-27 -80 -37 -158 q-10 -86 -10 -151q0 -299 242 -299q96 0 165 41l95 57l63 -109l-125 -73q-80 -49 -221 -50q-180 0 -281 111q-102 113 -102 320z" />
+<glyph unicode="d" horiz-adv-x="1122" d="M100 416q0 95 19 190q18 100 57 191q37 90 96 168q57 78 140 120q84 45 186 45q52 0 98 -18q49 -20 78 -45q39 -35 55 -53l35 -45l10 -19l95 688l170 15l-236 -1653h-112v182q-74 -90 -164 -145q-94 -57 -191 -57q-90 0 -157 36q-70 39 -105 99q-37 66 -55 137 q-19 74 -19 164zM260 408q0 -53 10 -109q10 -51 29 -92q23 -47 61 -72q40 -25 99 -24q57 0 100 16q53 20 88 43l70 51q33 27 47 43l14 19l80 555q-6 12 -10 18l-7 7l-13.5 13.5t-14.5 16.5q-25 28 -55 49q-29 20 -76 39q-41 16 -94 16q-76 0 -133 -45q-63 -51 -95 -110 q-37 -74 -59 -150q-18 -63 -31 -155q-10 -78 -10 -129z" />
+<glyph unicode="e" horiz-adv-x="1011" d="M90 412q0 -197 96 -316q96 -117 275 -116q53 0 96 6q39 6 80 22q33 14 51 25l47 28l135 86l-65 103l-107 -70q-106 -70 -206 -69q-137 0 -199 96q-43 67 -43 199q0 50 6 110h205q111 0 198 21q98 23 164 61q70 41 115 117q41 70 41 176q0 96 -80 168q-82 72 -213 71 q-113 0 -223 -57q-106 -55 -191 -151q-82 -94 -131 -230q-51 -141 -51 -280zM274 616q47 150 168 267q117 115 242 116q82 0 117 -34q37 -37 37 -95q0 -61 -29 -112q-28 -49 -80 -80q-45 -27 -115 -43q-63 -14 -139 -19h-201z" />
+<glyph unicode="f" horiz-adv-x="620" d="M84 -410l199 1411h-158l8 78h162l10 84q18 123 53 213q33 84 84 129q45 39 103 60q47 16 121 16q49 0 92 -20.5t71 -44.5q25 -20 25 -25l-72 -125q-61 74 -135 74q-51 0 -81.5 -18.5t-55.5 -80.5q-23 -57 -39 -174l-12 -88h307l-10 -78h-307l-201 -1413z" />
+<glyph unicode="g" horiz-adv-x="1161" d="M41 -172q6 98 57 162q45 57 99 90q49 31 86 49l-50 23q-92 39 -92 152q0 130 201 179l111 27q-100 18 -168 80q-66 59 -66 166q0 100 47 182q61 119 207 168q86 29 170 29q154 -2 240 -64l26 -18l78 37q92 43 207 55h18v-156h-254l33 -43q41 -63 41 -129q0 -133 -94 -233 q-104 -111 -299 -150l-270 -53q-104 -20 -105 -76q0 -45 43 -63q39 -16 94 -23l314 -35q184 -23 256 -121q39 -53 45 -141q1 -12 1 -24q0 -69 -30 -131q-49 -104 -207 -152q-154 -45 -315 -45q-184 0 -305 72q-119 69 -119 186zM182 -137q0 -82 80 -119q84 -39 236 -39 q250 0 336 92q41 45 40 105q0 39 -26 88q-37 68 -238 86l-237 22q-191 -118 -191 -235zM373 759.5q0 -100.5 57 -145.5q59 -47 139 -47h11q203 0 270 109q37 58 37 147q0 88 -68 138q-66 47 -155 47q-168 0 -234 -84q-57 -64 -57 -164.5z" />
+<glyph unicode="h" horiz-adv-x="1142" d="M72 0l231 1638l168 15l-113 -799q170 276 435 276q117 0 182 -77q63 -76 63 -215q0 -49 -20 -201l-92 -637h-164l90 637q12 84 12 154q0 113 -26 159q-27 49 -101 49q-186 0 -403 -315l-96 -684h-166z" />
+<glyph unicode="i" horiz-adv-x="643" d="M160 0l155 1110h162l-155 -1110h-162zM340 1409q0 61 41 104q43 45 94 46q41 0 70 -31q27 -29 26 -76q0 -57 -41 -104q-39 -45 -92 -45q-45 0 -71 30q-27 29 -27 76z" />
+<glyph unicode="j" horiz-adv-x="612" d="M18 -258q55 39 97 82q37 39 61 96q20 45 35 109q12 53 25 143l133 938h168l-138 -954q-31 -217 -129 -355q-100 -141 -227 -174zM393 1409q0 61 41 104q43 45 94 46q41 0 70 -31q27 -29 27 -76q0 -57 -41 -104q-39 -45 -90 -45q-43 0 -72 30q-29 33 -29 76z" />
+<glyph unicode="k" horiz-adv-x="1007" d="M72 0h166l61 428l121 96l336 -524h157l-389 602l547 508h-190l-557 -514l147 1057l-168 -15z" />
+<glyph unicode="l" horiz-adv-x="587" d="M168 0l231 1638l168 15l-233 -1653h-166z" />
+<glyph unicode="m" horiz-adv-x="1730" d="M72 0l157 1110h123v-260q70 141 176 211q109 70 217 69q244 0 248 -290q33 86 78 139q49 59 103 90q55 33 104 47t100 14q121 0 187 -77q61 -74 61 -222q0 -63 -6 -100l-107 -731h-163l102 727q8 55 8 107q0 84 -26 122q-29 41 -97 41q-96 0 -192 -73q-90 -70 -164 -242 l-98 -682h-162l104 725q8 55 9 106q0 84 -27 125t-98 41q-96 0 -197 -82q-94 -78 -178 -231l-96 -684h-166z" />
+<glyph unicode="n" horiz-adv-x="1142" d="M72 0l157 1110h123v-260q172 281 445 280q119 0 180 -77.5t61 -214.5q0 -25 -22 -201l-90 -637h-164l90 637q12 84 12 154q0 113 -26 159q-27 49 -101 49q-182 0 -401 -315l-98 -684h-166z" />
+<glyph unicode="o" horiz-adv-x="1124" d="M100 426q0 70 13 143q12 78 37 156q25 82 67 152q41 68 102 129q55 55 143.5 89.5t184.5 34.5q101 0 178 -36q78 -37 119 -99q47 -70 66 -141q20 -76 20 -174q0 -109 -20 -203q-23 -100 -66 -190q-43 -88 -108.5 -158t-153.5 -109q-92 -41 -197 -40q-96 0 -176 34 q-78 35 -121 97q-45 63 -65 141q-23 84 -23 174zM262 426q0 -151 62 -233q61 -82 182 -82q68 0 129 28q57 27 96 76q37 45 66 107q29 59 43 124q18 78 22 125q6 58 6 111q0 315 -229 315q-70 0 -131 -28q-63 -31 -100 -76q-29 -37 -68 -109q-29 -53 -45 -125 q-20 -88 -25 -122q-8 -78 -8 -111z" />
+<glyph unicode="p" horiz-adv-x="1132" d="M4 -410l215 1520h123l-2 -281q63 129 176 215q115 86 217 86q72 0 127 -24.5t88 -63t51 -98.5q20 -68 27 -117q6 -57 6 -131q0 -94 -18 -190q-20 -109 -56 -191q-39 -94 -96 -170q-55 -74 -139 -118q-88 -47 -184 -47q-88 0 -166 53q-74 49 -121 129l-82 -572h-166z M266 272q8 -8 15 -16q12 -16 36 -41q20 -20 62 -49q27 -18 80 -39q43 -16 96 -16q104 0 176 90q76 94 108.5 223t32.5 283v61q0 14 -4 59q-2 29 -10 56q-6 25 -18 47q-12 27 -29 37q-23 14 -43 22q-23 8 -59 8q-53 0 -111 -32q-61 -35 -111 -82q-45 -43 -92 -101 q-35 -43 -71 -98z" />
+<glyph unicode="q" horiz-adv-x="1107" d="M100 418q0 84 17 182q14 80 55 188q39 102 92 173q59 80 142 122q88 47 186 47q55 0 110 -22q47 -18 84 -53t60 -62q27 -33 35 -53l10 -22l57 192h119l-225 -1589l-168 -23l94 664q-68 -80 -154 -131q-88 -51 -178 -51q-72 0 -131 24.5t-96 65.5q-37 40 -62 98 q-29 70 -36 119q-11 68 -11 131zM260 408q0 -46 6 -86t19 -80q12 -37 37 -70q18 -25 57 -45q31 -16 80 -16q53 0 100 16q55 20 90 41q35 23 70 49q41 33 49 41l16 18l76 545l-14 21q-6 8 -39 41q-45 45 -59 55q-31 20 -80 41q-45 18 -95 18q-240 0 -301 -442 q-12 -92 -12 -147z" />
+<glyph unicode="r" horiz-adv-x="741" d="M104 0l158 1110h125v-260q59 115 166 201q98 80 176 79q18 0 47 -4q22 -3 31 -6l6 -2l-22 -155q-33 8 -56 8q-53 0 -108 -25q-53 -23 -99 -59q-12 -10 -79 -72q-27 -25 -58 -59l-18 -25l-103 -731h-166z" />
+<glyph unicode="s" horiz-adv-x="917" d="M55 96l80 113l74 -43q94 -55 213 -55q55 0 104 16q43 14 70 41q29 29 41 55q18 41 20 58q4 33 5 53q0 53 -31 84q-31 35 -113 67l-137 58q-70 29 -115 61q-43 33 -65 70q-25 41 -29 65q-8 41 -8 66q0 156 104 242q102 84 267 83q145 0 241 -59l96 -59l-79 -115l-80 51 q-74 49 -176 49q-119 0 -172 -53q-55 -55 -56 -123q0 -45 27 -71q28 -22 98 -56l129 -59q63 -31 111 -60q41 -25 75.5 -57.5t51.5 -73.5q14 -37 14 -96q0 -57 -10 -98q-12 -49 -41 -100q-27 -47 -72 -87q-43 -37 -116.5 -61.5t-165.5 -24.5q-82 0 -140 15q-51 10 -123 51z " />
+<glyph unicode="t" horiz-adv-x="778" d="M125 1001h154l-97 -651q-12 -84 -12 -127q0 -111 59 -176q57 -63 154 -63q63 0 104 14q57 20 111 53l94 60l-71 102l-89 -55q-41 -27 -65 -33q-29 -6 -66 -6q-31 0 -49 26.5t-18 65.5q0 57 10 121l98 669h256l13 78h-258l73 523l-170 -46l-67 -477h-156z" />
+<glyph unicode="u" horiz-adv-x="1118" d="M100 305q0 47 11 109l100 696h164l-99 -682q-8 -59 -8 -109q0 -100 49 -155q47 -53 136 -53q66 0 112 18q57 23 97 49q25 16 73 58q29 25 49 47l17 20l114 807h164l-157 -1110h-129l6 213q-135 -233 -373 -233q-150 0 -238 81.5t-88 243.5z" />
+<glyph unicode="v" horiz-adv-x="942" d="M106 1110h158l139 -852l9 -51l20 47l377 856h172l-496 -1110h-192z" />
+<glyph unicode="w" horiz-adv-x="1415" d="M113 1110h153l74 -903l4 -72l27 72l319 903h174l68 -911l6 -64l20 62l338 913h164l-444 -1110h-199l-55 891l-4 63l-19 -51l-323 -903h-189z" />
+<glyph unicode="x" horiz-adv-x="974" d="M-16 0l409 532l19 23l-19 37l-256 518h166l178 -397l19 -45l26 41l285 401h178l-399 -524l-25 -31l19 -35l258 -520h-176l-174 408l-11 24h-4l-18 -29l-293 -403h-182z" />
+<glyph unicode="y" horiz-adv-x="976" d="M6 -334l111 31q74 23 114 84q49 76 111 219l-233 1110h174l129 -639q12 -59 23 -119.5t16.5 -84t5.5 -25.5l67 166l297 702h174l-506 -1110q-6 -12 -26 -63l-33 -82q-15 -37 -43 -86q-27 -47 -57 -84q-33 -39 -76 -68q-47 -31 -96 -43l-123 -33z" />
+<glyph unicode="z" horiz-adv-x="892" d="M41 0l20 164l371 457l287 354h-170h-348l20 135h660l-23 -164l-336 -414l-313 -387h166h370l-20 -145h-684z" />
+<glyph unicode="{" horiz-adv-x="913" d="M203 551q129 0 88 -289q-10 -82 -10 -135q0 -66 8 -107q8 -39 26 -83q14 -35 39 -60q27 -27 51.5 -43t61.5 -27q45 -12 65 -14q45 -4 72 -4l25 170q-49 0 -66 2q-29 4 -53 14q-27 12 -39 33q-14 25 -22.5 57.5t-8.5 90.5q0 53 13 131q23 162 -17 243q-41 88 -102 115 q176 66 219 356q16 106 22 132q8 37 35 90q14 29 39 57q16 20 49 33q29 12 56 14q18 2 67 2l23 170q-59 0 -117 -10q-47 -8 -106 -41q-61 -35 -99 -82q-41 -53 -73 -137q-37 -94 -52 -203q-39 -287 -168 -287z" />
+<glyph unicode="|" horiz-adv-x="546" d="M152 -111l254 1807h165l-254 -1807h-165z" />
+<glyph unicode="}" horiz-adv-x="903" d="M123 -211l24 170q45 0 62 2q29 4 53 14q31 14 47 33q20 23 37 58q18 35 33 90q14 47 27 131q12 86 36 149q27 68 56 107q33 43 61 65q33 27 59 37q-147 66 -102 356q14 84 14 152q0 66 -8 96q-10 35 -35 54q-27 20 -53 22q-37 4 -74 4l27 170q43 0 76 -6q49 -8 69 -18 q45 -20 62 -35q20 -18 45 -60q25 -43 33 -84q10 -55 10 -116q0 -57 -14 -154q-45 -287 73 -287l-28 -188q-119 0 -164 -289q-18 -113 -53 -203t-72 -137q-35 -45 -94 -80q-55 -33 -101 -41q-65 -12 -106 -12z" />
+<glyph unicode="~" horiz-adv-x="706" d="M59 1274v6q33 254 226 254q43 0 88 -18q27 -10 78 -43q53 -33 71 -43q41 -20 64 -21q34 0 49 31q14 29 20 80h148q-2 0 -2 -2v-5q-31 -229 -191 -243h-12q-4 0 -8 -1l-4 -1q-53 0 -119 30q-72 35 -115 60q-53 31 -76 31q-34 0 -49 -31q-14 -29 -20 -84h-148z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1048" d="M139 440q0 59 11 138q20 154 77 276q55 121 131 190.5t164 106.5q86 35 191 39l14 108h100l-16 -114q55 -6 113 -23q55 -16 73 -26l23 -13l4 -143l-29 14l-77 25q-61 18 -127 24l-129 -919q72 6 129 20q63 14 94 31l28 14l-45 -149q-86 -41 -227 -57l-16 -117h-99l17 115 q-188 6 -295 124q-109 121 -109 336zM309 436q0 -152 66 -229q63 -76 188 -84l129 924q-154 -6 -246 -119q-94 -115 -127 -350q-10 -60 -10 -142z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1138" d="M127 0h743l19 133h-590q8 8 14 17q2 2 8.5 10l14.5 18t16 23q23 33 51 86q23 43 50 125q25 76 36 163h398l16 111h-416q-2 4 -5 8t-7 11.5t-6 13.5q-12 20 -33 78q-20 55 -20 110.5t14 98.5q16 47 47 88q31 39 88 63q53 23 135 23q45 0 91 -13q49 -12 83 -30 q57 -29 68 -35q16 -10 45 -33l19 -10l63 131l-12 12q-4 4 -45 33q-27 18 -74 39q-45 20 -113 35q-63 14 -143 14q-106 0 -207 -59q-96 -57 -156 -154q-57 -94 -57 -199q0 -12 4 -41q2 -14 6 -39q4 -20 9 -34l12 -31l12 -29q2 -4 5 -11t5 -11q8 -12 11 -15l6 -10l4 -4h-162 l-14 -111h182q-12 -84 -36.5 -157.5t-47.5 -118.5q-25 -49 -51 -84l-41 -53q-4 -4 -12.5 -11.5t-12.5 -11.5l-2 -2z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1142" d="M195 354l18 131h283l16 131h-281l19 132h260l-299 831h162l256 -731l473 731h162l-535 -831h254l-18 -132h-277l-16 -131h274l-18 -131h-275l-51 -354h-176l49 354h-280z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1853" d="M158 666q0 72 8 129q25 174 106 321q86 154 203 260q115 104 270 170q147 63 310 64q152 0 280 -56q127 -53 213 -153q86 -98 131 -221t45 -267q0 -63 -8 -118q-25 -184 -112 -336q-94 -162 -211 -258q-123 -101 -271 -160q-150 -59 -297 -59q-188 0 -346 88 q-150 84 -237 243q-84 154 -84 353zM289 678q0 -252 153 -416q154 -162 404 -162q131 0 254 50q121 49 223 141q100 90 170 221q68 127 90 283q8 51 8 108q0 123 -35 221q-37 106 -104 189q-63 78 -174 129q-106 49 -238 49q-133 0 -262 -55.5t-227 -147.5t-166 -221 q-66 -127 -88 -272q-8 -47 -8 -117zM514 682q0 57 8 113q31 231 162 370q133 143 340 144q53 0 115 -17q70 -18 90 -26q16 -6 37 -21l-9 -110q-16 8 -30 14q-22 9 -86 25q-70 16 -127 16q-80 0 -146 -31q-65 -31 -104 -86q-45 -61 -68 -125q-25 -68 -37 -153q-8 -55 -8 -117 q0 -279 250 -279q123 0 262 70l-22 -117q-147 -72 -260 -71q-98 0 -172 30q-63 27 -113 90q-37 49 -61 127q-21 68 -21 154z" />
+<glyph unicode="&#xad;" d="M158 508l18 131h547l-18 -131h-547z" />
+<glyph unicode="&#xae;" horiz-adv-x="1261" d="M211 1032q0 55 4 76q23 150 104 264q86 119 213 191q125 70 265 69q193 0 315 -127q123 -126 123 -319q0 -57 -4 -78q-22 -144 -105 -264t-208 -191q-125 -70 -269 -69q-186 0 -313 129q-125 126 -125 319zM305 1038q0 -160 101 -260q102 -102 256 -102q117 0 217 55 q104 57 171.5 155.5t86.5 219.5q4 25 4 65q0 162 -100.5 264.5t-258.5 102.5q-174 0 -311 -125t-162 -307q-4 -25 -4 -68zM518 829l82 574h102q123 0 183 -33q57 -33 57 -98q0 -16 -2 -29q-10 -70 -55 -106.5t-121 -55.5q2 -2 10 -13t17 -21q4 -6 9 -14.5t8 -12.5l3 -4 l86 -160l-94 -47q0 2 -6 15.5l-18.5 41t-24.5 58.5q-29 74 -64 147h-45l-35 -242h-92zM657 1147h52q70 0 100.5 22.5t40.5 75.5q0 2 1 8.5t1 10.5q0 39 -37 51t-133 12z" />
+<glyph unicode="&#xb4;" horiz-adv-x="737" d="M233 352l193 623h240l-299 -623h-134z" />
+<glyph unicode="&#x2000;" horiz-adv-x="864" />
+<glyph unicode="&#x2001;" horiz-adv-x="1728" />
+<glyph unicode="&#x2002;" horiz-adv-x="864" />
+<glyph unicode="&#x2003;" horiz-adv-x="1728" />
+<glyph unicode="&#x2004;" horiz-adv-x="575" />
+<glyph unicode="&#x2005;" horiz-adv-x="430" />
+<glyph unicode="&#x2006;" horiz-adv-x="286" />
+<glyph unicode="&#x2007;" horiz-adv-x="286" />
+<glyph unicode="&#x2008;" horiz-adv-x="215" />
+<glyph unicode="&#x2009;" horiz-adv-x="344" />
+<glyph unicode="&#x200a;" horiz-adv-x="94" />
+<glyph unicode="&#x2010;" d="M158 508l18 131h547l-18 -131h-547z" />
+<glyph unicode="&#x2011;" d="M158 508l18 131h547l-18 -131h-547z" />
+<glyph unicode="&#x2012;" d="M158 508l18 131h547l-18 -131h-547z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M158 508v131h792v-131h-792z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M158 508v131h1816v-131h-1816z" />
+<glyph unicode="&#x2018;" horiz-adv-x="712" d="M231 977h242l6 -621h-73z" />
+<glyph unicode="&#x2019;" horiz-adv-x="514" d="M248 1030h96l172 543h-240z" />
+<glyph unicode="&#x201c;" horiz-adv-x="874" d="M211 1100l18 291q2 47 25 98q16 39 53 72q31 29 76 49q35 16 100 37l35 -95q-70 -23 -104 -61q-29 -33 -39 -98h121l-41 -293h-244zM563 1100l21 291q2 53 22 98q14 35 56 72q31 29 75 49q35 16 101 37l34 -95q-70 -23 -104 -61q-29 -33 -39 -98h121l-41 -293h-246z" />
+<glyph unicode="&#x201d;" horiz-adv-x="841" d="M211 1130q70 23 102 60q29 33 39 98h-121l41 293h246l-20 -291q-2 -51 -23 -96q-16 -39 -53 -72q-29 -27 -78 -49q-40 -18 -98 -37zM563 1130q72 25 105 60q29 33 39 98h-121l41 293h245l-20 -291q-2 -51 -23 -96q-14 -35 -55 -72q-31 -29 -76 -49q-35 -16 -100 -37z" />
+<glyph unicode="&#x2022;" horiz-adv-x="1208" d="M328 643q0 100 51 188q53 92 139 144q88 53 184 53q121 0 201 -82t80 -205q0 -154 -112.5 -268.5t-262.5 -114.5q-123 0 -202 82q-78 80 -78 203z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1421" d="M96 86q0 57 41 104q39 45 94 46q43 0 70 -31q27 -29 27 -76q0 -57 -41 -104q-39 -45 -90 -45q-45 0 -72 30q-29 33 -29 76zM569 86q0 57 41 104q39 45 97 46q40 0 67 -31q29 -33 29 -76q0 -57 -41 -104q-39 -45 -92 -45q-43 0 -72 30q-29 33 -29 76zM1044 86q0 57 41 104 q39 45 95 46q41 0 69 -31q27 -29 27 -76q0 -57 -41 -104q-39 -45 -90 -45q-47 0 -74 30q-27 29 -27 76z" />
+<glyph unicode="&#x202f;" horiz-adv-x="344" />
+<glyph unicode="&#x205f;" horiz-adv-x="430" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1105" d="M119 573l18 123h148q0 2 1 8.5t3 18.5l4 25q2 16 7 37.5t5 23.5h-168l19 123h188q45 233 182.5 370.5t356.5 137.5q72 0 143.5 -16.5t99.5 -30.5l29 -17l-55 -123l-33 17q-8 4 -84 22q-66 16 -123 17q-151 0 -246 -99q-94 -98 -118 -278h366l-18 -123h-375l-23 -113h328 l-16 -123h-330q-18 -111 -10 -188q10 -88 28 -135q20 -51 58 -86q33 -31 74 -47q35 -14 81 -15q68 0 136 19q59 16 104 39l37 18l31 -123l-2 -2q-10 -6 -35 -18t-66 -29q-45 -18 -112 -31q-76 -14 -140 -14q-61 0 -116 25q-59 27 -103 71q-47 51 -78 123q-31 74 -43 172.5 t0 220.5h-153z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1597" d="M139 1311l15 102h516l-15 -102h-194l-96 -686h-125l96 686h-197zM662 625l110 788h213l80 -655l262 655h213l-110 -788h-119l94 663l-277 -663h-165l-91 663l-92 -663h-118z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1110" d="M0 1110h1110v-1110h-1110v1110z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1265" d="M783 0l155 1110h162l-155 -1110h-162zM963 1409q0 61 41 104q43 45 94 46q41 0 70 -31q27 -29 26 -76q0 -57 -41 -104q-39 -45 -92 -45q-45 0 -71 30q-27 29 -27 76zM84 -410l199 1411h-158l8 78h162l10 84q18 123 53 213q33 84 84 129q45 39 103 60q47 16 121 16 q49 0 92 -20.5t71 -44.5q25 -20 25 -25l-72 -125q-61 74 -135 74q-51 0 -81.5 -18.5t-55.5 -80.5q-23 -57 -39 -174l-12 -88h307l-10 -78h-307l-201 -1413z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1208" d="M791 0l231 1638l168 15l-233 -1653h-166zM84 -410l199 1411h-158l8 78h162l10 84q18 123 53 213q33 84 84 129q45 39 103 60q47 16 121 16q49 0 92 -20.5t71 -44.5q25 -20 25 -25l-72 -125q-61 74 -135 74q-51 0 -81.5 -18.5t-55.5 -80.5q-23 -57 -39 -174l-12 -88h307 l-10 -78h-307l-201 -1413z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1888" d="M1403 0l155 1110h162l-155 -1110h-162zM1583 1409q0 61 41 104q43 45 94 46q41 0 70 -31q27 -29 26 -76q0 -57 -41 -104q-39 -45 -92 -45q-45 0 -71 30q-27 29 -27 76zM707 -410l199 1411h-158l8 78h162l10 84q18 123 53 213q33 84 84 129q45 39 103 60q47 16 121 16 q49 0 92 -20.5t71 -44.5q25 -20 25 -25l-72 -125q-61 74 -135 74q-51 0 -81.5 -18.5t-55.5 -80.5q-23 -57 -39 -174l-12 -88h307l-10 -78h-307l-201 -1413zM84 -410l199 1411h-158l8 78h162l10 84q18 123 53 213q33 84 84 129q45 39 103 60q47 16 121 16q49 0 92 -20.5 t71 -44.5q25 -20 25 -25l-72 -125q-61 74 -135 74q-51 0 -81.5 -18.5t-55.5 -80.5q-23 -57 -39 -174l-12 -88h307l-10 -78h-307l-201 -1413z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1830" d="M1411 0l231 1638l168 15l-233 -1653h-166zM707 -410l199 1411h-158l8 78h162l10 84q18 123 53 213q33 84 84 129q45 39 103 60q47 16 121 16q49 0 92 -20.5t71 -44.5q25 -20 25 -25l-72 -125q-61 74 -135 74q-51 0 -81.5 -18.5t-55.5 -80.5q-23 -57 -39 -174l-12 -88h307 l-10 -78h-307l-201 -1413zM84 -410l199 1411h-158l8 78h162l10 84q18 123 53 213q33 84 84 129q45 39 103 60q47 16 121 16q49 0 92 -20.5t71 -44.5q25 -20 25 -25l-72 -125q-61 74 -135 74q-51 0 -81.5 -18.5t-55.5 -80.5q-23 -57 -39 -174l-12 -88h307l-10 -78h-307 l-201 -1413z" />
+</font>
+</defs></svg> 
\ No newline at end of file
blob - /dev/null
blob + ff56b0e0aee70be62a09a252fe26ea0faacbec6f (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_italic-webfont.ttf differ
blob - /dev/null
blob + af1582bbfaccf3fb6a5c9e29835d415d12faf8c5 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/nobile_italic-webfont.woff differ
blob - /dev/null
blob + d0fee425be7094e1c1b39208042d4fc7c4486966 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/Nobile-fontfacekit/stylesheet.css
@@ -0,0 +1,52 @@
+/* Generated by Font Squirrel (http://www.fontsquirrel.com) on August 1, 2011 05:21:55 AM America/New_York */
+
+
+
+@font-face {
+    font-family: 'NobileRegular';
+    src: url('nobile-webfont.eot');
+    src: url('nobile-webfont.eot?#iefix') format('embedded-opentype'),
+         url('nobile-webfont.woff') format('woff'),
+         url('nobile-webfont.ttf') format('truetype'),
+         url('nobile-webfont.svg#NobileRegular') format('svg');
+    font-weight: normal;
+    font-style: normal;
+
+}
+
+@font-face {
+    font-family: 'NobileItalic';
+    src: url('nobile_italic-webfont.eot');
+    src: url('nobile_italic-webfont.eot?#iefix') format('embedded-opentype'),
+         url('nobile_italic-webfont.woff') format('woff'),
+         url('nobile_italic-webfont.ttf') format('truetype'),
+         url('nobile_italic-webfont.svg#NobileItalic') format('svg');
+    font-weight: normal;
+    font-style: normal;
+
+}
+
+@font-face {
+    font-family: 'NobileBold';
+    src: url('nobile_bold-webfont.eot');
+    src: url('nobile_bold-webfont.eot?#iefix') format('embedded-opentype'),
+         url('nobile_bold-webfont.woff') format('woff'),
+         url('nobile_bold-webfont.ttf') format('truetype'),
+         url('nobile_bold-webfont.svg#NobileBold') format('svg');
+    font-weight: normal;
+    font-style: normal;
+
+}
+
+@font-face {
+    font-family: 'NobileBoldItalic';
+    src: url('nobile_bold_italic-webfont.eot');
+    src: url('nobile_bold_italic-webfont.eot?#iefix') format('embedded-opentype'),
+         url('nobile_bold_italic-webfont.woff') format('woff'),
+         url('nobile_bold_italic-webfont.ttf') format('truetype'),
+         url('nobile_bold_italic-webfont.svg#NobileBoldItalic') format('svg');
+    font-weight: normal;
+    font-style: normal;
+
+}
+
blob - /dev/null
blob + 0b98e3966682f6e77a7d386893d531ed292c7909 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/dream_orphanage_rg-demo.html
@@ -0,0 +1,622 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript" charset="utf-8"></script>
+	<script src="specimen_files/easytabs.js" type="text/javascript" charset="utf-8"></script>
+	<link rel="stylesheet" href="specimen_files/specimen_stylesheet.css" type="text/css" charset="utf-8" />
+	<link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8" />
+
+	<style type="text/css">
+			body{
+			font-family: 'DreamOrphanageRegular';
+					}
+</style>
+
+<title>Dream Orphanage Regular Specimen</title>
+	
+	
+	<script type="text/javascript" charset="utf-8">
+		$(document).ready(function() {
+			$('#container').easyTabs({defaultContent:1});
+		});
+	</script>
+</head>
+
+<body>
+<div id="container">
+	<div id="header">
+		Dream Orphanage Regular	</div>
+	<ul class="tabs">
+		<li><a href="#specimen">Specimen</a></li>
+		<li><a href="#layout">Sample Layout</a></li>
+		<li><a href="#rendering">Windows Rendering</a></li>		<li><a href="#glyphs">Glyphs &amp; Languages</a></li>
+		<li><a href="#installing">Installing Webfonts</a></li>
+		
+	</ul>
+	
+	<div id="main_content">
+
+		
+			<div id="specimen">
+		
+				<div class="section">
+					<div class="grid12 firstcol">
+						<div class="huge">AaBb</div>
+					</div>
+				</div>
+		
+				<div class="section">
+					<div class="glyph_range">A&#x200B;B&#x200b;C&#x200b;D&#x200b;E&#x200b;F&#x200b;G&#x200b;H&#x200b;I&#x200b;J&#x200b;K&#x200b;L&#x200b;M&#x200b;N&#x200b;O&#x200b;P&#x200b;Q&#x200b;R&#x200b;S&#x200b;T&#x200b;U&#x200b;V&#x200b;W&#x200b;X&#x200b;Y&#x200b;Z&#x200b;a&#x200b;b&#x200b;c&#x200b;d&#x200b;e&#x200b;f&#x200b;g&#x200b;h&#x200b;i&#x200b;j&#x200b;k&#x200b;l&#x200b;m&#x200b;n&#x200b;o&#x200b;p&#x200b;q&#x200b;r&#x200b;s&#x200b;t&#x200b;u&#x200b;v&#x200b;w&#x200b;x&#x200b;y&#x200b;z&#x200b;1&#x200b;2&#x200b;3&#x200b;4&#x200b;5&#x200b;6&#x200b;7&#x200b;8&#x200b;9&#x200b;0&#x200b;&amp;&#x200b;.&#x200b;,&#x200b;?&#x200b;!&#x200b;&#64;&#x200b;(&#x200b;)&#x200b;#&#x200b;$&#x200b;%&#x200b;*&#x200b;+&#x200b;-&#x200b;=&#x200b;:&#x200b;;</div>
+				</div>
+				<div class="section">
+					<div class="grid12 firstcol">
+						<table class="sample_table">
+							<tr><td>10</td><td class="size10">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>11</td><td class="size11">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>12</td><td class="size12">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>13</td><td class="size13">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>14</td><td class="size14">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>16</td><td class="size16">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>18</td><td class="size18">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>20</td><td class="size20">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>24</td><td class="size24">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>30</td><td class="size30">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>36</td><td class="size36">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>48</td><td class="size48">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>60</td><td class="size60">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>72</td><td class="size72">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+							<tr><td>90</td><td class="size90">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</td></tr>
+						</table>
+				
+					</div>
+			
+				</div>
+		
+		
+		
+								<div class="section" id="bodycomparison">
+
+
+										<div id="xheight">
+				<div class="fontbody">&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;&#xE000;body</div><div class="arialbody">body</div><div class="verdanabody">body</div><div class="georgiabody">body</div></div>
+										<div class="fontbody" style="z-index:1">
+											body<span>Dream Orphanage Regular</span>
+										</div>
+										<div class="arialbody" style="z-index:1">
+											body<span>Arial</span>
+										</div>
+										<div class="verdanabody" style="z-index:1">
+											body<span>Verdana</span>
+										</div>
+										<div class="georgiabody" style="z-index:1">
+											body<span>Georgia</span>
+										</div>
+
+
+
+								</div>
+		
+		
+				<div class="section psample psample_row1" id="">
+					
+					<div class="grid2 firstcol">
+						<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid3">
+						<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid3">
+						<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid4">
+						<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="white_blend"></div>
+					
+				</div>
+				<div class="section psample psample_row2" id="">
+					<div class="grid3 firstcol">
+						<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid4">
+						<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid5">
+						<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+
+					<div class="white_blend"></div>
+
+				</div>
+				
+				<div class="section psample psample_row3" id="">
+					<div class="grid5 firstcol">
+						<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+					</div>
+					<div class="grid7">
+						<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+					</div>
+					
+					<div class="white_blend"></div>
+					
+				</div>
+				
+				<div class="section psample psample_row4" id="">
+					<div class="grid12 firstcol">
+						<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+					</div>
+					<div class="white_blend"></div>
+					
+				</div>
+				
+				
+				
+				<div class="section psample psample_row1 fullreverse">
+					<div class="grid2 firstcol">
+						<p class="size10"><span>10.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid3">
+						<p class="size11"><span>11.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid3">
+						<p class="size12"><span>12.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid4">
+						<p class="size13"><span>13.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="black_blend"></div>
+					
+				</div>
+				
+				<div class="section psample psample_row2 fullreverse">
+					<div class="grid3 firstcol">
+						<p class="size14"><span>14.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid4">
+						<p class="size16"><span>16.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="grid5">
+						<p class="size18"><span>18.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+			
+					</div>
+					<div class="black_blend"></div>
+
+				</div>
+				
+				<div class="section psample fullreverse psample_row3" id="">
+					<div class="grid5 firstcol">
+						<p class="size20"><span>20.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+					</div>
+					<div class="grid7">
+						<p class="size24"><span>24.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+					</div>
+					
+					<div class="black_blend"></div>
+					
+				</div>
+				
+				<div class="section psample fullreverse psample_row4" id="" style="border-bottom: 20px #000 solid;">
+					<div class="grid12 firstcol">
+						<p class="size30"><span>30.</span>Aenean lacinia bibendum nulla sed consectetur. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Nullam id dolor id nibh ultricies vehicula ut id elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla vitae elit libero, a pharetra augue.</p>
+					</div>
+					<div class="black_blend"></div>
+					
+				</div>
+				
+				
+				
+				
+			</div>
+			
+			<div id="layout">
+				
+				<div class="section">
+					
+					<div class="grid12 firstcol">
+						<h1>Lorem Ipsum Dolor</h1>
+						<h2>Etiam porta sem malesuada magna mollis euismod</h2>
+						
+						<p class="byline">By <a href="#link">Aenean Lacinia</a></p>
+					</div>
+				</div>
+				<div class="section">
+					<div class="grid8 firstcol">
+						<p class="large">Donec sed odio dui. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+						
+						<h3>Pellentesque ornare sem</h3>
+
+						<p>Maecenas sed diam eget risus varius blandit sit amet non magna. Maecenas faucibus mollis interdum. Donec ullamcorper nulla non metus auctor fringilla. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam id dolor id nibh ultricies vehicula ut id elit. </p>
+
+						<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
+
+						<p>Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean lacinia bibendum nulla sed consectetur. </p>
+
+						<p>Nullam quis risus eget urna mollis ornare vel eu leo. Nullam quis risus eget urna mollis ornare vel eu leo. Maecenas sed diam eget risus varius blandit sit amet non magna. Donec ullamcorper nulla non metus auctor fringilla. </p>
+
+						<h3>Cras mattis consectetur</h3>
+
+						<p>Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Aenean lacinia bibendum nulla sed consectetur. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras mattis consectetur purus sit amet fermentum. </p>
+
+						<p>Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo. Cras mattis consectetur purus sit amet fermentum.</p>
+					</div>
+					
+					<div class="grid4 sidebar">
+						
+						<div class="box reverse">
+							<p class="last">Nullam quis risus eget urna mollis ornare vel eu leo. Donec ullamcorper nulla non metus auctor fringilla. Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
+						</div>
+						
+						<p class="caption">Maecenas sed diam eget risus varius.</p>
+
+						<p>Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper. Sed posuere consectetur est at lobortis. Maecenas sed diam eget risus varius blandit sit amet non magna. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+					
+
+						<p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo. </p>
+
+						<p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec ullamcorper nulla non metus auctor fringilla. Maecenas faucibus mollis interdum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. </p>
+
+					</div>
+				</div>
+				
+			</div>
+
+
+									<div id="rendering">
+							<div class="section">
+								<div class="grid12 firstcol">
+								<h1>ClearType (GDI)</h1>
+
+								<p><img src="specimen_files/dream_orphanage_rg-cleartype.png" /></p>
+								</div>
+							</div>
+						</div>
+			
+
+
+
+		<div id="glyphs">
+			<div class="section">
+				<div class="grid12 firstcol">
+					
+				<h1>Language Support</h1>
+				<p>The subset of Dream Orphanage Regular in this kit supports the following languages:<br />
+					
+					Albanian, Danish, Dutch, English, Faroese, French, German, Icelandic, Italian, Malagasy, Norwegian, Spanish, Swedish				</p>
+				<h1>Glyph Chart</h1>
+				<p>The subset of Dream Orphanage Regular in this kit includes all the glyphs listed below. Unicode entities are included above each glyph to help you insert individual characters into your layout.</p>
+				<div id="glyph_chart">
+					
+																														 <div><p>&amp;#32;</p>&#32;</div>
+																				 <div><p>&amp;#33;</p>&#33;</div>
+																				 <div><p>&amp;#34;</p>&#34;</div>
+																				 <div><p>&amp;#35;</p>&#35;</div>
+																				 <div><p>&amp;#36;</p>&#36;</div>
+																				 <div><p>&amp;#37;</p>&#37;</div>
+																				 <div><p>&amp;#38;</p>&#38;</div>
+																				 <div><p>&amp;#39;</p>&#39;</div>
+																				 <div><p>&amp;#40;</p>&#40;</div>
+																				 <div><p>&amp;#41;</p>&#41;</div>
+																				 <div><p>&amp;#42;</p>&#42;</div>
+																				 <div><p>&amp;#43;</p>&#43;</div>
+																				 <div><p>&amp;#44;</p>&#44;</div>
+																				 <div><p>&amp;#45;</p>&#45;</div>
+																				 <div><p>&amp;#46;</p>&#46;</div>
+																				 <div><p>&amp;#47;</p>&#47;</div>
+																				 <div><p>&amp;#48;</p>&#48;</div>
+																				 <div><p>&amp;#49;</p>&#49;</div>
+																				 <div><p>&amp;#50;</p>&#50;</div>
+																				 <div><p>&amp;#51;</p>&#51;</div>
+																				 <div><p>&amp;#52;</p>&#52;</div>
+																				 <div><p>&amp;#53;</p>&#53;</div>
+																				 <div><p>&amp;#54;</p>&#54;</div>
+																				 <div><p>&amp;#55;</p>&#55;</div>
+																				 <div><p>&amp;#56;</p>&#56;</div>
+																				 <div><p>&amp;#57;</p>&#57;</div>
+																				 <div><p>&amp;#58;</p>&#58;</div>
+																				 <div><p>&amp;#59;</p>&#59;</div>
+																				 <div><p>&amp;#60;</p>&#60;</div>
+																				 <div><p>&amp;#61;</p>&#61;</div>
+																				 <div><p>&amp;#62;</p>&#62;</div>
+																				 <div><p>&amp;#63;</p>&#63;</div>
+																				 <div><p>&amp;#64;</p>&#64;</div>
+																				 <div><p>&amp;#65;</p>&#65;</div>
+																				 <div><p>&amp;#66;</p>&#66;</div>
+																				 <div><p>&amp;#67;</p>&#67;</div>
+																				 <div><p>&amp;#68;</p>&#68;</div>
+																				 <div><p>&amp;#69;</p>&#69;</div>
+																				 <div><p>&amp;#70;</p>&#70;</div>
+																				 <div><p>&amp;#71;</p>&#71;</div>
+																				 <div><p>&amp;#72;</p>&#72;</div>
+																				 <div><p>&amp;#73;</p>&#73;</div>
+																				 <div><p>&amp;#74;</p>&#74;</div>
+																				 <div><p>&amp;#75;</p>&#75;</div>
+																				 <div><p>&amp;#76;</p>&#76;</div>
+																				 <div><p>&amp;#77;</p>&#77;</div>
+																				 <div><p>&amp;#78;</p>&#78;</div>
+																				 <div><p>&amp;#79;</p>&#79;</div>
+																				 <div><p>&amp;#80;</p>&#80;</div>
+																				 <div><p>&amp;#81;</p>&#81;</div>
+																				 <div><p>&amp;#82;</p>&#82;</div>
+																				 <div><p>&amp;#83;</p>&#83;</div>
+																				 <div><p>&amp;#84;</p>&#84;</div>
+																				 <div><p>&amp;#85;</p>&#85;</div>
+																				 <div><p>&amp;#86;</p>&#86;</div>
+																				 <div><p>&amp;#87;</p>&#87;</div>
+																				 <div><p>&amp;#88;</p>&#88;</div>
+																				 <div><p>&amp;#89;</p>&#89;</div>
+																				 <div><p>&amp;#90;</p>&#90;</div>
+																				 <div><p>&amp;#91;</p>&#91;</div>
+																				 <div><p>&amp;#92;</p>&#92;</div>
+																				 <div><p>&amp;#93;</p>&#93;</div>
+																				 <div><p>&amp;#94;</p>&#94;</div>
+																				 <div><p>&amp;#95;</p>&#95;</div>
+																				 <div><p>&amp;#96;</p>&#96;</div>
+																				 <div><p>&amp;#97;</p>&#97;</div>
+																				 <div><p>&amp;#98;</p>&#98;</div>
+																				 <div><p>&amp;#99;</p>&#99;</div>
+																				 <div><p>&amp;#100;</p>&#100;</div>
+																				 <div><p>&amp;#101;</p>&#101;</div>
+																				 <div><p>&amp;#102;</p>&#102;</div>
+																				 <div><p>&amp;#103;</p>&#103;</div>
+																				 <div><p>&amp;#104;</p>&#104;</div>
+																				 <div><p>&amp;#105;</p>&#105;</div>
+																				 <div><p>&amp;#106;</p>&#106;</div>
+																				 <div><p>&amp;#107;</p>&#107;</div>
+																				 <div><p>&amp;#108;</p>&#108;</div>
+																				 <div><p>&amp;#109;</p>&#109;</div>
+																				 <div><p>&amp;#110;</p>&#110;</div>
+																				 <div><p>&amp;#111;</p>&#111;</div>
+																				 <div><p>&amp;#112;</p>&#112;</div>
+																				 <div><p>&amp;#113;</p>&#113;</div>
+																				 <div><p>&amp;#114;</p>&#114;</div>
+																				 <div><p>&amp;#115;</p>&#115;</div>
+																				 <div><p>&amp;#116;</p>&#116;</div>
+																				 <div><p>&amp;#117;</p>&#117;</div>
+																				 <div><p>&amp;#118;</p>&#118;</div>
+																				 <div><p>&amp;#119;</p>&#119;</div>
+																				 <div><p>&amp;#120;</p>&#120;</div>
+																				 <div><p>&amp;#121;</p>&#121;</div>
+																				 <div><p>&amp;#122;</p>&#122;</div>
+																				 <div><p>&amp;#123;</p>&#123;</div>
+																				 <div><p>&amp;#124;</p>&#124;</div>
+																				 <div><p>&amp;#125;</p>&#125;</div>
+																				 <div><p>&amp;#126;</p>&#126;</div>
+																				 <div><p>&amp;#160;</p>&#160;</div>
+																				 <div><p>&amp;#161;</p>&#161;</div>
+																				 <div><p>&amp;#162;</p>&#162;</div>
+																				 <div><p>&amp;#163;</p>&#163;</div>
+																				 <div><p>&amp;#164;</p>&#164;</div>
+																				 <div><p>&amp;#165;</p>&#165;</div>
+																				 <div><p>&amp;#166;</p>&#166;</div>
+																				 <div><p>&amp;#167;</p>&#167;</div>
+																				 <div><p>&amp;#168;</p>&#168;</div>
+																				 <div><p>&amp;#169;</p>&#169;</div>
+																				 <div><p>&amp;#170;</p>&#170;</div>
+																				 <div><p>&amp;#171;</p>&#171;</div>
+																				 <div><p>&amp;#172;</p>&#172;</div>
+																				 <div><p>&amp;#173;</p>&#173;</div>
+																				 <div><p>&amp;#174;</p>&#174;</div>
+																				 <div><p>&amp;#175;</p>&#175;</div>
+																				 <div><p>&amp;#176;</p>&#176;</div>
+																				 <div><p>&amp;#177;</p>&#177;</div>
+																				 <div><p>&amp;#178;</p>&#178;</div>
+																				 <div><p>&amp;#179;</p>&#179;</div>
+																				 <div><p>&amp;#180;</p>&#180;</div>
+																				 <div><p>&amp;#181;</p>&#181;</div>
+																				 <div><p>&amp;#182;</p>&#182;</div>
+																				 <div><p>&amp;#183;</p>&#183;</div>
+																				 <div><p>&amp;#184;</p>&#184;</div>
+																				 <div><p>&amp;#185;</p>&#185;</div>
+																				 <div><p>&amp;#186;</p>&#186;</div>
+																				 <div><p>&amp;#187;</p>&#187;</div>
+																				 <div><p>&amp;#188;</p>&#188;</div>
+																				 <div><p>&amp;#189;</p>&#189;</div>
+																				 <div><p>&amp;#190;</p>&#190;</div>
+																				 <div><p>&amp;#191;</p>&#191;</div>
+																				 <div><p>&amp;#192;</p>&#192;</div>
+																				 <div><p>&amp;#193;</p>&#193;</div>
+																				 <div><p>&amp;#194;</p>&#194;</div>
+																				 <div><p>&amp;#195;</p>&#195;</div>
+																				 <div><p>&amp;#196;</p>&#196;</div>
+																				 <div><p>&amp;#197;</p>&#197;</div>
+																				 <div><p>&amp;#198;</p>&#198;</div>
+																				 <div><p>&amp;#199;</p>&#199;</div>
+																				 <div><p>&amp;#200;</p>&#200;</div>
+																				 <div><p>&amp;#201;</p>&#201;</div>
+																				 <div><p>&amp;#202;</p>&#202;</div>
+																				 <div><p>&amp;#203;</p>&#203;</div>
+																				 <div><p>&amp;#204;</p>&#204;</div>
+																				 <div><p>&amp;#205;</p>&#205;</div>
+																				 <div><p>&amp;#206;</p>&#206;</div>
+																				 <div><p>&amp;#207;</p>&#207;</div>
+																				 <div><p>&amp;#208;</p>&#208;</div>
+																				 <div><p>&amp;#209;</p>&#209;</div>
+																				 <div><p>&amp;#210;</p>&#210;</div>
+																				 <div><p>&amp;#211;</p>&#211;</div>
+																				 <div><p>&amp;#212;</p>&#212;</div>
+																				 <div><p>&amp;#213;</p>&#213;</div>
+																				 <div><p>&amp;#214;</p>&#214;</div>
+																				 <div><p>&amp;#215;</p>&#215;</div>
+																				 <div><p>&amp;#216;</p>&#216;</div>
+																				 <div><p>&amp;#217;</p>&#217;</div>
+																				 <div><p>&amp;#218;</p>&#218;</div>
+																				 <div><p>&amp;#219;</p>&#219;</div>
+																				 <div><p>&amp;#220;</p>&#220;</div>
+																				 <div><p>&amp;#221;</p>&#221;</div>
+																				 <div><p>&amp;#222;</p>&#222;</div>
+																				 <div><p>&amp;#223;</p>&#223;</div>
+																				 <div><p>&amp;#224;</p>&#224;</div>
+																				 <div><p>&amp;#225;</p>&#225;</div>
+																				 <div><p>&amp;#226;</p>&#226;</div>
+																				 <div><p>&amp;#227;</p>&#227;</div>
+																				 <div><p>&amp;#228;</p>&#228;</div>
+																				 <div><p>&amp;#229;</p>&#229;</div>
+																				 <div><p>&amp;#230;</p>&#230;</div>
+																				 <div><p>&amp;#231;</p>&#231;</div>
+																				 <div><p>&amp;#232;</p>&#232;</div>
+																				 <div><p>&amp;#233;</p>&#233;</div>
+																				 <div><p>&amp;#234;</p>&#234;</div>
+																				 <div><p>&amp;#235;</p>&#235;</div>
+																				 <div><p>&amp;#236;</p>&#236;</div>
+																				 <div><p>&amp;#237;</p>&#237;</div>
+																				 <div><p>&amp;#238;</p>&#238;</div>
+																				 <div><p>&amp;#239;</p>&#239;</div>
+																				 <div><p>&amp;#240;</p>&#240;</div>
+																				 <div><p>&amp;#241;</p>&#241;</div>
+																				 <div><p>&amp;#242;</p>&#242;</div>
+																				 <div><p>&amp;#243;</p>&#243;</div>
+																				 <div><p>&amp;#244;</p>&#244;</div>
+																				 <div><p>&amp;#245;</p>&#245;</div>
+																				 <div><p>&amp;#246;</p>&#246;</div>
+																				 <div><p>&amp;#247;</p>&#247;</div>
+																				 <div><p>&amp;#248;</p>&#248;</div>
+																				 <div><p>&amp;#249;</p>&#249;</div>
+																				 <div><p>&amp;#250;</p>&#250;</div>
+																				 <div><p>&amp;#251;</p>&#251;</div>
+																				 <div><p>&amp;#252;</p>&#252;</div>
+																				 <div><p>&amp;#253;</p>&#253;</div>
+																				 <div><p>&amp;#254;</p>&#254;</div>
+																				 <div><p>&amp;#255;</p>&#255;</div>
+																				 <div><p>&amp;#338;</p>&#338;</div>
+																				 <div><p>&amp;#339;</p>&#339;</div>
+																				 <div><p>&amp;#376;</p>&#376;</div>
+																				 <div><p>&amp;#710;</p>&#710;</div>
+																				 <div><p>&amp;#732;</p>&#732;</div>
+																				 <div><p>&amp;#8192;</p>&#8192;</div>
+																				 <div><p>&amp;#8193;</p>&#8193;</div>
+																				 <div><p>&amp;#8194;</p>&#8194;</div>
+																				 <div><p>&amp;#8195;</p>&#8195;</div>
+																				 <div><p>&amp;#8196;</p>&#8196;</div>
+																				 <div><p>&amp;#8197;</p>&#8197;</div>
+																				 <div><p>&amp;#8198;</p>&#8198;</div>
+																				 <div><p>&amp;#8199;</p>&#8199;</div>
+																				 <div><p>&amp;#8200;</p>&#8200;</div>
+																				 <div><p>&amp;#8201;</p>&#8201;</div>
+																				 <div><p>&amp;#8202;</p>&#8202;</div>
+																				 <div><p>&amp;#8208;</p>&#8208;</div>
+																				 <div><p>&amp;#8209;</p>&#8209;</div>
+																				 <div><p>&amp;#8210;</p>&#8210;</div>
+																				 <div><p>&amp;#8211;</p>&#8211;</div>
+																				 <div><p>&amp;#8212;</p>&#8212;</div>
+																				 <div><p>&amp;#8216;</p>&#8216;</div>
+																				 <div><p>&amp;#8217;</p>&#8217;</div>
+																				 <div><p>&amp;#8218;</p>&#8218;</div>
+																				 <div><p>&amp;#8220;</p>&#8220;</div>
+																				 <div><p>&amp;#8221;</p>&#8221;</div>
+																				 <div><p>&amp;#8222;</p>&#8222;</div>
+																				 <div><p>&amp;#8226;</p>&#8226;</div>
+																				 <div><p>&amp;#8230;</p>&#8230;</div>
+																				 <div><p>&amp;#8239;</p>&#8239;</div>
+																				 <div><p>&amp;#8249;</p>&#8249;</div>
+																				 <div><p>&amp;#8250;</p>&#8250;</div>
+																				 <div><p>&amp;#8287;</p>&#8287;</div>
+																				 <div><p>&amp;#8364;</p>&#8364;</div>
+																				 <div><p>&amp;#8482;</p>&#8482;</div>
+																				 <div><p>&amp;#57344;</p>&#57344;</div>
+																				 <div><p>&amp;#64257;</p>&#64257;</div>
+																				 <div><p>&amp;#64258;</p>&#64258;</div>
+																				 <div><p>&amp;#64259;</p>&#64259;</div>
+																				 <div><p>&amp;#64260;</p>&#64260;</div>
+																		</div>	
+				</div>
+				
+				
+			</div>
+		</div>
+		
+		
+		<div id="specs">
+			
+		</div>
+	
+		<div id="installing">
+			<div class="section">
+				<div class="grid7 firstcol">
+					<h1>Installing Webfonts</h1>
+					
+					<p>Webfonts are supported by all major browser platforms but not all in the same way. There are currently four different font formats that must be included in order to target all browsers. This includes TTF, WOFF, EOT and SVG.</p>
+					
+					<h2>1. Upload your webfonts</h2>
+					<p>You must upload your webfont kit to your website. They should be in or near the same directory as your CSS files.</p>
+					
+					<h2>2. Include the webfont stylesheet</h2>
+					<p>A special CSS @font-face declaration helps the various browsers select the appropriate font it needs without causing you a bunch of headaches. Learn more about this syntax by reading the <a href="http://www.fontspring.com/blog/further-hardening-of-the-bulletproof-syntax">Fontspring blog post</a> about it. The code for it is as follows:</p>
+					
+					
+<code>
+@font-face{ 
+	font-family: 'MyWebFont';
+	src: url('WebFont.eot');
+	src: url('WebFont.eot?iefix') format('eot'),
+	     url('WebFont.woff') format('woff'),
+	     url('WebFont.ttf') format('truetype'),
+	     url('WebFont.svg#webfont') format('svg');
+}
+</code>
+
+	<p>We've already gone ahead and generated the code for you. All you have to do is link to the stylesheet in your HTML, like this:</p>
+	<code>&lt;link rel=&quot;stylesheet&quot; href=&quot;stylesheet.css&quot; type=&quot;text/css&quot; charset=&quot;utf-8&quot; /&gt;</code>
+
+					<h2>3. Modify your own stylesheet</h2>
+					<p>To take advantage of your new fonts, you must tell your stylesheet to use them. Look at the original @font-face declaration above and find the property called "font-family." The name linked there will be what you use to reference the font. Prepend that webfont name to the font stack in the "font-family" property, inside the selector you want to change. For example:</p>
+<code>p { font-family: 'MyWebFont', Arial, sans-serif; }</code>
+
+<h2>4. Test</h2>
+<p>Getting webfonts to work cross-browser <em>can</em> be tricky. Use the information in the sidebar to help you if you find that fonts aren't loading in a particular browser.</p>
+				</div>
+				
+				<div class="grid5 sidebar">
+					<div class="box">
+						<h2>Troubleshooting<br />Font-Face Problems</h2>
+						<p>Having trouble getting your webfonts to load in your new website? Here are some tips to sort out what might be the problem.</p>
+
+						<h3>Fonts not showing in any browser</h3>
+
+						<p>This sounds like you need to work on the plumbing. You either did not upload the fonts to the correct directory, or you did not link the fonts properly in the CSS. If you've confirmed that all this is correct and you still have a problem, take a look at your .htaccess file and see if requests are getting intercepted.</p>
+
+						<h3>Fonts not loading in iPhone or iPad</h3>
+
+						<p>The most common problem here is that you are serving the fonts from an IIS server. IIS refuses to serve files that have unknown MIME types. If that is the case, you must set the MIME type for SVG to "image/svg+xml" in the server settings. Follow these instructions from Microsoft if you need help.</p>
+
+						<h3>Fonts not loading in Firefox</h3>
+
+						<p>The primary reason for this failure? You are still using a version Firefox older than 3.5. So upgrade already! If that isn't it, then you are very likely serving fonts from a different domain. Firefox requires that all font assets be served from the same domain. Lastly it is possible that you need to add WOFF to your list of MIME types (if you are serving via IIS.)</p>
+
+						<h3>Fonts not loading in IE</h3>
+
+						<p>Are you looking at Internet Explorer on an actual Windows machine or are you cheating by using a service like Adobe BrowserLab? Many of these screenshot services do not render @font-face for IE. Best to test it on a real machine.</p>
+
+						<h3>Fonts not loading in IE9</h3>
+
+						<p>IE9, like Firefox, requires that fonts be served from the same domain as the website. Make sure that is the case.</p>
+					</div>
+				</div>
+			</div>
+			
+		</div>
+	
+	</div>
+	<div id="footer">
+		<p>&copy;2010-2011 Fontspring. All rights reserved.</p>
+	</div>
+</div>
+</body>
+</html>
blob - /dev/null
blob + 6bf1fb3199178f5831a2460a7ba32ecae25b0de0 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/dream_orphanage_rg-webfont.eot differ
blob - /dev/null
blob + 92c864dba5416b3f40a6ba2108409771b6630248 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/dream_orphanage_rg-webfont.svg
@@ -0,0 +1,244 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Fontspring.
+</metadata>
+<defs>
+<font id="webfontQbNt380i" horiz-adv-x="1001" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="595" />
+<glyph unicode=" "  horiz-adv-x="595" />
+<glyph unicode="&#x09;" horiz-adv-x="595" />
+<glyph unicode="&#xa0;" horiz-adv-x="595" />
+<glyph unicode="!" horiz-adv-x="598" d="M113 1491q0 104 186 104q184 0 184 -104q0 -18 -6 -56t-17 -99.5t-18 -114.5q-57 -428 -77 -818h-132q-23 403 -79 818l-19 113l-16 100q-6 37 -6 57zM164 92q0 53 36 86t99 33q61 0 96 -33t35 -86q0 -55 -35 -86t-96 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#x22;" horiz-adv-x="735" d="M78 1628h223l-45 -590h-133zM420 1628h223l-45 -590h-133z" />
+<glyph unicode="#" horiz-adv-x="1024" d="M49 369v139h172l33 344h-186v139h198l33 352h137l-35 -352h283l35 352h135l-37 -352h156v-139h-168l-35 -344h184v-139h-196l-35 -369h-133l37 369h-285l-37 -369h-133l35 369h-158zM354 508h285l33 344h-285z" />
+<glyph unicode="$" horiz-adv-x="915" d="M90 371l98 65q74 -139 238 -139q80 0 133 40t53 107q0 63 -51 103.5t-123.5 63t-146.5 50t-125 86t-51 146.5q0 123 80.5 189.5t205.5 80.5v180h150v-180q164 -23 217 -125l-96 -71q-45 94 -185 94q-70 0 -126 -34t-56 -93q0 -63 53.5 -101t130 -58.5t152.5 -46.5 t129 -86t53 -159q0 -115 -75.5 -189.5t-196.5 -96.5v-197h-150v188q-104 4 -189 51.5t-122 131.5z" />
+<glyph unicode="%" horiz-adv-x="1382" d="M55 1069q0 190 72 280.5t242 90.5q246 0 245 -326q0 -201 -73.5 -288t-245.5 -87q-127 0 -183.5 78t-56.5 252zM102 -29l988 1401h141l-983 -1401h-146zM221 1085q0 -152 21.5 -205t81.5 -53q72 0 97 53.5t25 207t-22.5 208t-83.5 54.5q-70 0 -94.5 -53.5t-24.5 -211.5z M768 295q0 190 71.5 280.5t241.5 90.5q246 0 246 -326q0 -201 -73.5 -288t-245.5 -87q-127 0 -183.5 78t-56.5 252zM934 311q0 -152 21.5 -205t80.5 -53q72 0 97.5 53.5t25.5 207t-22.5 207.5t-83.5 54q-70 0 -94.5 -53t-24.5 -211z" />
+<glyph unicode="&#x26;" horiz-adv-x="1243" d="M41 416q0 176 67.5 285.5t227.5 150.5q-104 39 -155.5 126t-51.5 191q0 426 434 426q207 0 285 -102l-62 -104q-57 84 -206 84q-225 0 -226 -271q0 -147 59.5 -232t166.5 -85h518v-127h-197v-494q0 -80 38 -127t112 -47q94 0 141 68l43 -109q-90 -78 -225 -78 q-207 0 -258 162q-70 -162 -306 -162q-215 0 -310 106t-95 339zM319 444q0 -188 46.5 -265t146.5 -77q66 0 113 35t55 99v522h-107q-139 0 -196.5 -75t-57.5 -239z" />
+<glyph unicode="'" horiz-adv-x="380" d="M78 1628h223l-45 -590h-133z" />
+<glyph unicode="(" horiz-adv-x="704" d="M152 710.5q0 274.5 45 484.5t120.5 332t164.5 185.5t188 71.5l2 -68q-342 -55 -342 -1005q0 -948 342 -1006l-2 -67q-98 8 -187.5 71.5t-165 185t-120.5 331.5t-45 484.5z" />
+<glyph unicode=")" horiz-adv-x="704" d="M29 -295q344 55 344 1005.5t-344 1005.5l6 68q98 -8 186 -71.5t164 -185.5t120 -332t44 -484.5t-44 -484.5t-120 -331.5t-164 -185t-186 -71.5z" />
+<glyph unicode="*" horiz-adv-x="862" d="M70 1276l49 129l256 -113l-27 277h158l-23 -279l265 107l40 -133l-274 -68l176 -217l-125 -86l-137 231l-154 -223l-118 90l182 205z" />
+<glyph unicode="+" d="M90 608v135h342v342h135v-342h342v-135h-342v-342h-135v342h-342z" />
+<glyph unicode="," horiz-adv-x="462" d="M90 98q25 113 150 113q59 0 95 -34t36 -89q0 -86 -73 -165t-169 -118q66 115 66 203q-1 90 -105 90z" />
+<glyph unicode="-" horiz-adv-x="694" d="M63 625v131h566v-131h-566z" />
+<glyph unicode="." horiz-adv-x="448" d="M90 92q0 53 36 86t99.5 33t98 -33t34.5 -86q0 -55 -34.5 -87t-98 -32t-99.5 34t-36 85z" />
+<glyph unicode="/" horiz-adv-x="704" d="M8 -172l541 1743h145l-542 -1743h-144z" />
+<glyph unicode="0" horiz-adv-x="1243" d="M70 631q0 379 142 560t476 181q240 0 361.5 -168t121.5 -483q0 -401 -145 -575.5t-485 -174.5q-248 0 -359.5 156t-111.5 504zM342 657q0 -313 53.5 -427.5t192.5 -114.5q178 0 244.5 119.5t66.5 443.5q0 307 -57.5 426t-198.5 119q-174 0 -237.5 -121t-63.5 -445z" />
+<glyph unicode="1" horiz-adv-x="546" d="M25 1272l424 119v-1391h-230v1149q0 66 -65 55l-125 -14z" />
+<glyph unicode="2" horiz-adv-x="1009" d="M8 0q317 274 490 500q207 272 207 475q0 244 -222 244q-225 0 -315 -150l-86 102q121 201 438 201q412 0 412 -379q0 -100 -37 -199.5t-87 -176t-139 -168t-155 -147.5l-170 -142h604v-160h-940z" />
+<glyph unicode="3" horiz-adv-x="962" d="M8 1219q135 154 400 153q197 0 301 -88t104 -248q0 -106 -56.5 -182t-160.5 -106q137 -16 212 -121t75 -230q0 -176 -64.5 -317t-174 -230.5t-237.5 -142.5t-272 -69l-37 120q250 55 390.5 209t140.5 404q0 125 -54.5 200.5t-162.5 75.5q-53 0 -107 -20l-22 100 q147 37 226 100.5t79 200.5q0 98 -56.5 152.5t-160.5 54.5q-188 0 -287 -121z" />
+<glyph unicode="4" horiz-adv-x="997" d="M8 0l854 1427v-1304h109v-123h-109v-336h-239v336h-615zM221 123h402v696z" />
+<glyph unicode="5" horiz-adv-x="833" d="M20 930l123 416h625v-175h-545l-43 -159q266 0 425 -157t159 -425q0 -332 -189.5 -537.5t-504.5 -230.5l-19 117q211 35 336 194.5t125 427.5q0 242 -117 373t-375 156z" />
+<glyph unicode="6" horiz-adv-x="1138" d="M66 598q0 422 183 682t535 348l35 -94q-229 -70 -352 -269.5t-139 -453.5q125 152 340 152q205 0 313.5 -118t108.5 -351q0 -92 -31 -182.5t-91.5 -168t-163 -125t-231.5 -47.5q-283 0 -395 150.5t-112 476.5zM319 668q0 -305 67 -430t216 -125q117 0 179.5 85t62.5 216 q0 205 -62.5 294t-216.5 89q-158 0 -246 -129z" />
+<glyph unicode="7" horiz-adv-x="911" d="M25 1124v219h870l-543 -1679h-178l498 1460h-647z" />
+<glyph unicode="8" horiz-adv-x="1181" d="M33 393q0 178 109.5 299t283.5 178q-137 39 -223 133.5t-86 239.5q0 178 118.5 281.5t354.5 103.5q444 0 444 -305q0 -287 -284 -387q174 -45 280.5 -165t106.5 -300q0 -236 -141.5 -368t-436.5 -132q-246 0 -386 108.5t-140 313.5zM213 428q0 -150 84 -231.5t240 -81.5 q330 0 329 311q0 150 -92 246t-246 133q-137 -45 -226 -141.5t-89 -235.5zM371 1296q0 -125 72.5 -203.5t195.5 -103.5q231 76 231 295q0 225 -254 225q-119 0 -182 -57.5t-63 -155.5z" />
+<glyph unicode="9" horiz-adv-x="1138" d="M49 850q0 92 31 182t91 168t162.5 125t231.5 47q281 0 393.5 -150.5t112.5 -476.5q0 -428 -194.5 -724.5t-542.5 -382.5l-33 94q158 47 272.5 169t172 273.5t67.5 321.5q-127 -156 -342 -156q-199 0 -310.5 136t-111.5 374zM297 928q0 -211 65.5 -319.5t212.5 -108.5 q156 0 246 143q0 315 -66.5 450.5t-217.5 135.5q-117 0 -178.5 -85t-61.5 -216z" />
+<glyph unicode=":" horiz-adv-x="471" d="M100 92q0 53 36 86t99.5 33t98.5 -33t35 -86q0 -55 -35 -87t-98.5 -32t-99.5 34t-36 85zM100 987q0 55 36 87t99.5 32t98.5 -32t35 -87q0 -53 -35 -85t-98.5 -32t-99.5 33t-36 84z" />
+<glyph unicode=";" horiz-adv-x="466" d="M84 98q29 113 149 113q59 0 95.5 -34t36.5 -89q0 -86 -73 -165t-169 -118q66 115 65 203q0 90 -104 90zM98 987q0 55 36 87t97 32q63 0 98.5 -32t35.5 -87q0 -53 -35 -85t-99 -32q-61 0 -97 33t-36 84z" />
+<glyph unicode="&#x3c;" d="M90 602v150l819 393v-154l-653 -315l653 -314v-153z" />
+<glyph unicode="=" d="M90 426v133h819v-133h-819zM90 797v133h819v-133h-819z" />
+<glyph unicode="&#x3e;" d="M90 209v153l653 314l-653 315v154l819 -393v-150z" />
+<glyph unicode="?" horiz-adv-x="858" d="M18 1432q154 164 400 163q397 0 397 -342q0 -131 -61.5 -223t-180.5 -188q-61 -49 -96 -82t-71.5 -90.5t-36.5 -110.5q0 -84 59 -149l-129 -37q-123 86 -123 233q0 88 43 160t104 123l120 100q60 49 103.5 115.5t43.5 144.5q0 102 -56.5 153.5t-154.5 51.5 q-156 0 -266 -137zM229 92q0 53 36 86t99.5 33t97.5 -33t34 -86q0 -55 -34 -86t-97.5 -31t-99.5 33t-36 84z" />
+<glyph unicode="@" horiz-adv-x="1552" d="M59 516q0 233 63.5 408.5t179.5 278t264.5 151.5t330.5 49q279 0 435.5 -163t156.5 -458q0 -164 -32 -293t-119 -219t-220 -90q-109 0 -184 82q-74 -84 -197 -84q-223 0 -223 373q0 213 57.5 313.5t176.5 100.5q104 0 170 -101l8 94l118 -26v-641q37 -10 66 -10 q246 0 246 456q0 281 -136.5 420t-379.5 139q-264 0 -431 -193.5t-167 -529.5q0 -328 144 -522t425 -194q117 0 227 39l33 -95q-119 -59 -297 -59q-326 0 -520.5 191.5t-194.5 582.5zM666 586q0 -156 33.5 -227.5t105.5 -71.5q63 0 96 69v428q-33 76 -108 76 q-72 0 -99.5 -61t-27.5 -213z" />
+<glyph unicode="A" horiz-adv-x="935" d="M18 0l357 1569h211l332 -1569h-261l-69 328h-357l-67 -328h-146zM254 459h311l-155 706z" />
+<glyph unicode="B" horiz-adv-x="1064" d="M90 0v1569h512q371 0 371 -355q0 -190 -59.5 -281t-180.5 -118q133 -6 209 -87t76 -234q0 -258 -101.5 -376t-324.5 -118h-502zM344 135h184q119 0 175.5 73t56.5 230q0 168 -41 234.5t-148 66.5h-227v-604zM344 862h209q182 0 182 283q0 156 -40 219t-138 63h-213v-565z " />
+<glyph unicode="C" horiz-adv-x="1034" d="M59 702q0 455 130 674t415 219q164 0 262.5 -78.5t132.5 -195.5l-127 -78q-45 106 -103 154.5t-156.5 48.5t-160 -59.5t-95 -217t-33.5 -428.5q0 -348 64.5 -486t205.5 -138q197 0 262 221l123 -88q-61 -152 -158.5 -215.5t-285.5 -63.5q-236 0 -356 175t-120 556z" />
+<glyph unicode="D" horiz-adv-x="1101" d="M90 0v1569h512q231 0 331.5 -156t100.5 -536q0 -360 -46 -546t-151.5 -258.5t-310.5 -72.5h-436zM344 135h158q102 0 158.5 52.5t84 190.5t27.5 390q0 287 -25.5 429t-74.5 186t-148 44h-180v-1292z" />
+<glyph unicode="E" horiz-adv-x="931" d="M90 0v1569h799v-142h-545v-571h340v-139h-340v-582h545v-135h-799z" />
+<glyph unicode="F" horiz-adv-x="909" d="M90 0v1569h797v-142h-543v-593h387v-140h-387v-694h-254z" />
+<glyph unicode="G" horiz-adv-x="1091" d="M59 717q0 444 131.5 661t421.5 217q158 0 255.5 -78.5t131.5 -195.5l-129 -78q-76 203 -249 203q-104 0 -168 -59.5t-100 -218t-36 -433.5q0 -358 57.5 -488t200.5 -130q213 0 213 227v160q0 33 -16 45t-57 12h-107l15 109h391v-361q0 -174 61 -264l-145 -65 q-53 63 -68 151q-25 -61 -110.5 -110.5t-210.5 -49.5q-172 0 -272.5 61.5t-155 226.5t-54.5 458z" />
+<glyph unicode="H" horiz-adv-x="1071" d="M90 0v1569h254v-695h383v695h254v-1569h-254v735h-383v-735h-254z" />
+<glyph unicode="I" horiz-adv-x="452" d="M98 0v1569h254v-1569h-254z" />
+<glyph unicode="J" horiz-adv-x="921" d="M25 309v140h141v-115q0 -117 47 -172.5t156 -55.5q117 0 167 56.5t50 185.5v1221h252v-1207q0 -391 -426 -391q-387 0 -387 338z" />
+<glyph unicode="K" horiz-adv-x="1069" d="M90 0v1569h254v-717l512 717h176l-356 -496l364 -1073h-272l-266 842l-158 -213v-629h-254z" />
+<glyph unicode="L" horiz-adv-x="776" d="M90 0v1569h254v-1434h404v-135h-658z" />
+<glyph unicode="M" horiz-adv-x="1323" d="M82 0v1569h309l273 -955l301 955h266v-1569h-250v1188l-375 -1217l-360 1227v-1198h-164z" />
+<glyph unicode="N" horiz-adv-x="1050" d="M82 0v1569h213l514 -963v963h158v-1569h-90l-637 1137v-1137h-158z" />
+<glyph unicode="O" horiz-adv-x="1140" d="M59 735q0 440 132.5 650t441.5 210q223 0 335.5 -194.5t112.5 -560.5q0 -463 -134 -666t-449 -203q-231 0 -335 179t-104 585zM330 768q0 -256 20.5 -395.5t64.5 -197.5t126 -58q154 0 211 143t57 531q0 369 -49 512t-168 143q-150 0 -206 -146.5t-56 -531.5z" />
+<glyph unicode="P" horiz-adv-x="1017" d="M90 0v1569h492q219 0 311 -95.5t92 -302.5q0 -317 -98.5 -440t-356.5 -123h-186v-608h-254zM344 748h160q123 0 174 76.5t51 275.5q0 190 -40 258.5t-144 68.5h-201v-679z" />
+<glyph unicode="Q" horiz-adv-x="1136" d="M59 776q0 412 133.5 615.5t440.5 203.5q223 0 335.5 -197.5t112.5 -572.5q0 -303 -58 -488t-185 -271q23 -57 76 -91t120 -34q35 0 76 18l14 -88q-70 -55 -157 -55q-197 0 -271 180q-102 -25 -198 -25q-231 0 -335 186.5t-104 618.5zM328 762q0 -256 20.5 -396.5 t65.5 -200t127 -59.5q152 0 210 145.5t58 532.5q0 371 -49 516.5t-170 145.5q-150 0 -206 -147.5t-56 -536.5z" />
+<glyph unicode="R" horiz-adv-x="1071" d="M90 0v1569h518q383 0 383 -338q0 -219 -78.5 -314.5t-222.5 -117.5q147 -8 221 -80t74 -240v-301q0 -41 10.5 -58.5t42.5 -19.5l15 -100q-29 -14 -111 -14q-106 0 -155.5 42t-49.5 130v370q0 197 -205 197h-188v-725h-254zM344 850h170q121 0 173 67.5t52 225.5 q0 162 -41 223t-155 61h-199v-577z" />
+<glyph unicode="S" horiz-adv-x="958" d="M12 248l131 84q27 -92 97.5 -145.5t173 -53.5t174 67.5t71.5 180.5q0 94 -44 148.5t-140 119.5l-114 77q-34 24 -94 71t-86.5 80.5t-59.5 85t-45.5 106.5t-12.5 121q0 180 112 292.5t308 112.5q131 0 225.5 -61t127.5 -168l-107 -84q-23 76 -79 118t-134 42 q-109 0 -169 -60.5t-60 -167.5q0 -72 33.5 -130t89 -99t122 -80t132 -82t121 -95t89 -132t33.5 -178q0 -197 -129 -322t-350 -125q-145 0 -255 73t-161 204z" />
+<glyph unicode="T" horiz-adv-x="970" d="M33 1219v350h903v-350h-94q0 209 -68 208h-162v-1427h-254v1427h-163q-68 0 -68 -208h-94z" />
+<glyph unicode="U" horiz-adv-x="974" d="M82 332v1237h254v-1239q0 -115 46 -164t153 -49q92 0 142 49t50 170v1233h164v-1219q0 -213 -97.5 -296t-297.5 -83q-221 0 -317.5 86.5t-96.5 274.5z" />
+<glyph unicode="V" horiz-adv-x="897" d="M18 1569h256l230 -1112l233 1112h140l-349 -1569h-182z" />
+<glyph unicode="W" horiz-adv-x="1445" d="M18 1569h244l215 -1127l178 836l-63 291h242l233 -1127l219 1127h139l-315 -1569h-178l-211 971l-213 -971h-178z" />
+<glyph unicode="X" horiz-adv-x="940" d="M14 0l346 786l-335 783h251l230 -565l246 565h137l-309 -723l344 -846h-248l-252 627l-268 -627h-142z" />
+<glyph unicode="Y" horiz-adv-x="913" d="M14 1569h250l240 -602l260 602h131l-317 -733v-836h-250v809z" />
+<glyph unicode="Z" horiz-adv-x="958" d="M20 0l562 1427h-514v142h815l-547 -1434h555v-135h-871z" />
+<glyph unicode="[" horiz-adv-x="550" d="M152 -336v2095h368v-96h-217v-1905h217v-94h-368z" />
+<glyph unicode="\" horiz-adv-x="704" d="M8 1571h146l540 -1743h-141z" />
+<glyph unicode="]" horiz-adv-x="550" d="M29 -242h217v1905h-217v96h368v-2095h-368v94z" />
+<glyph unicode="^" horiz-adv-x="878" d="M90 977l275 592h149l272 -592h-153l-195 424l-190 -424h-158z" />
+<glyph unicode="_" horiz-adv-x="759" d="M90 -139h578v-129h-578v129z" />
+<glyph unicode="`" horiz-adv-x="669" d="M90 1716h250l238 -344h-164z" />
+<glyph unicode="a" d="M41 324q0 162 63.5 251t204.5 138q41 14 177.5 40.5t183.5 61.5v129q0 104 -44 153.5t-153 49.5q-176 0 -250 -160l-119 90q113 215 388 215q96 0 164.5 -13t129 -49t92 -108.5t31.5 -179.5v-752q0 -127 49 -190h-225q-39 57 -43 152q-41 -84 -124 -132.5t-191 -48.5 q-166 0 -250 92.5t-84 260.5zM276 360q0 -121 44.5 -178t138.5 -57q147 0 213 139v438q-25 -14 -57.5 -24t-80 -22.5t-65.5 -18.5q-193 -62 -193 -277z" />
+<glyph unicode="b" horiz-adv-x="1064" d="M90 0v1569l242 59v-495q109 160 291 159q193 0 287 -160.5t94 -451.5q0 -709 -402 -709q-197 0 -299 179l-8 -150h-205zM332 274q23 -57 77 -97t119 -40q121 0 173.5 112.5t52.5 371.5q0 496 -234 495q-129 0 -188 -131v-711z" />
+<glyph unicode="c" horiz-adv-x="942" d="M59 522q0 770 504 770q141 0 228.5 -63.5t113.5 -161.5l-123 -66q-59 156 -204 156q-260 0 -261 -590q0 -244 54.5 -352.5t183.5 -108.5q154 0 215 162l117 -69q-96 -227 -391 -228q-437 0 -437 551z" />
+<glyph unicode="d" horiz-adv-x="1095" d="M90 565q0 352 98.5 539.5t288.5 187.5q90 0 165 -45t122 -112v434l240 59v-1628h-203l-6 150q-109 -178 -306 -179q-399 0 -399 594zM344 649q0 -512 229 -512q61 0 112.5 35t78.5 96v709q-20 57 -74.5 98t-122.5 41q-121 0 -172 -110.5t-51 -356.5z" />
+<glyph unicode="e" horiz-adv-x="1038" d="M59 530q0 379 139.5 570.5t348.5 191.5q252 0 342 -144t92 -511h-676q0 -264 59.5 -395t196.5 -131q174 0 236 147l108 -78q-43 -98 -130 -153.5t-255 -55.5q-240 0 -350.5 138t-110.5 421zM309 752h447q-2 223 -51.5 313t-155.5 90q-207 0 -240 -403z" />
+<glyph unicode="f" horiz-adv-x="673" d="M20 1137v127h109q2 209 109.5 286.5t289.5 77.5q139 0 199 -55l-45 -109q-57 47 -145 47q-164 0 -166 -247h260v-127h-260v-1137h-242v1137h-109z" />
+<glyph unicode="g" horiz-adv-x="1067" d="M20 -109q0 106 80 167t240 85q-131 18 -178 52t-47 84q0 76 112 98q-156 96 -155 399q0 86 11 157t42 140.5t81 115.5t133 74.5t191 28.5q164 0 258 -71q55 23 83 85t28 136l123 -41q0 -78 -38 -155t-118 -105q76 -127 76 -312q0 -109 -19.5 -192.5t-68.5 -158.5 t-147.5 -115.5t-239.5 -40.5q-84 0 -135 16q-49 -10 -49 -51q0 -74 278 -97q293 -23 394.5 -62.5t101.5 -156.5q0 -86 -56.5 -152.5t-152.5 -104.5t-209 -57t-238 -19q-203 0 -292 70t-89 183zM246 -68q0 -63 54 -104t163 -41q197 0 288 48t91 126q0 66 -60.5 93.5 t-265.5 51.5q-270 -37 -270 -174zM303 807q0 -182 48 -270t157 -88q117 0 161 86t44 264q0 186 -48.5 275t-158.5 89q-115 0 -159 -88t-44 -268z" />
+<glyph unicode="h" horiz-adv-x="1058" d="M90 0v1569l242 59v-491q51 66 145 110.5t209 44.5q147 0 219 -78.5t72 -244.5v-969h-242v950q0 92 -41 129t-133 37q-70 0 -134.5 -33.5t-94.5 -78.5v-1004h-242z" />
+<glyph unicode="i" horiz-adv-x="438" d="M92 1522q0 53 36 84.5t99 31.5q61 0 96 -31.5t35 -85t-34.5 -85t-96.5 -31.5q-63 0 -99 33t-36 84zM100 0v1223l242 59v-1282h-242z" />
+<glyph unicode="j" horiz-adv-x="489" d="M-158 -209q174 0 242 69.5t68 211.5v1151l239 59v-1139q0 -238 -109.5 -358.5t-396.5 -120.5zM141 1522q0 53 36 84.5t97.5 31.5t96.5 -31.5t35 -85t-35 -85t-96.5 -31.5t-97.5 33t-36 84z" />
+<glyph unicode="k" horiz-adv-x="995" d="M90 0v1569l246 59v-940l481 576h148l-289 -355l293 -909h-256l-217 698l-160 -184v-514h-246z" />
+<glyph unicode="l" horiz-adv-x="423" d="M90 0v1569l242 59v-1628h-242z" />
+<glyph unicode="m" horiz-adv-x="1601" d="M90 0v1223l238 59v-145q102 150 327 149q195 0 246 -174q131 180 348 180q137 0 203 -78.5t66 -244.5v-969h-236v950q0 92 -37 129t-119 37q-63 0 -118.5 -34.5t-83.5 -77.5v-1004h-238v950q0 92 -37 129t-121 37q-61 0 -117.5 -33.5t-82.5 -78.5v-1004h-238z" />
+<glyph unicode="n" horiz-adv-x="1058" d="M90 0v1223l242 59v-145q51 66 145 110.5t209 44.5q147 0 219 -78.5t72 -244.5v-969h-242v950q0 92 -41 129t-133 37q-70 0 -134.5 -33.5t-94.5 -78.5v-1004h-242z" />
+<glyph unicode="o" horiz-adv-x="1056" d="M59 600q0 147 21.5 262t76 217.5t161 157.5t262.5 55q215 0 315 -149.5t100 -478.5q0 -117 -12 -211.5t-47 -187.5t-90 -155.5t-149.5 -100.5t-219.5 -38q-217 0 -317.5 148.5t-100.5 480.5zM307 643q0 -281 52.5 -409t160.5 -128q133 0 181.5 123t48.5 387 q0 283 -52.5 412t-162.5 129q-131 0 -179.5 -125t-48.5 -389z" />
+<glyph unicode="p" horiz-adv-x="1064" d="M90 -336v1577l197 41l16 -172q106 182 303 182q397 0 398 -596q0 -352 -97.5 -538.5t-288.5 -186.5q-88 0 -163.5 44t-122.5 112v-463h-242zM332 283q23 -57 77 -96.5t119 -39.5q121 0 173.5 109t52.5 356q0 242 -58.5 377t-175.5 135q-129 0 -188 -131v-710z" />
+<glyph unicode="q" horiz-adv-x="1067" d="M59 584q0 709 406 708q186 0 299 -180l14 170l197 -41v-1577h-242v465q-47 -72 -124 -115t-167 -43q-193 0 -288 161t-95 452zM313 643q0 -496 230 -496q135 0 190 132v706q-20 57 -74.5 98t-121.5 41q-121 0 -172.5 -112.5t-51.5 -368.5z" />
+<glyph unicode="r" horiz-adv-x="835" d="M90 0v1223l242 59v-166q41 82 125 127t184 45q141 0 209 -86l-137 -184q-39 57 -75 78.5t-91 21.5q-78 0 -135.5 -42t-79.5 -115v-961h-242z" />
+<glyph unicode="s" horiz-adv-x="903" d="M23 213l112 90q80 -184 266 -184q94 0 144.5 50t50.5 132q0 98 -49 148.5t-137 85.5q-176 72 -265.5 156.5t-89.5 230.5q0 180 109.5 275t288.5 95q256 0 329 -178l-108 -94q-49 129 -203 129q-90 0 -148.5 -44t-58.5 -132q0 -61 32 -105.5t83 -70t113.5 -48t124 -50 t112.5 -67.5t83 -109.5t32 -166.5q0 -178 -117 -281.5t-299 -103.5q-309 0 -405 242z" />
+<glyph unicode="t" horiz-adv-x="727" d="M20 1137v125q106 0 145.5 55t53.5 199l137 28v-280h246v-127h-246v-805q0 -221 176 -221q104 0 160 59l33 -115q-106 -84 -276 -84q-156 0 -244 96.5t-88 264.5v805h-97z" />
+<glyph unicode="u" horiz-adv-x="1058" d="M82 291v932l242 59v-969q0 -94 41 -130t133 -36q70 0 134 34t95 79v963l242 59v-1282h-205l-6 143q-53 -72 -147.5 -122t-217.5 -50q-162 0 -236.5 77t-74.5 243z" />
+<glyph unicode="v" horiz-adv-x="913" d="M18 1264h271l225 -856l242 856h137l-367 -1264h-145z" />
+<glyph unicode="w" horiz-adv-x="1470" d="M18 1264h261l217 -865l174 602l-76 263h260l231 -865l232 865h131l-350 -1264h-144l-223 786l-223 -786h-139z" />
+<glyph unicode="x" horiz-adv-x="987" d="M18 0l363 629l-346 635h252l243 -457l256 457h148l-336 -580l369 -684h-252l-266 504l-285 -504h-146z" />
+<glyph unicode="y" horiz-adv-x="913" d="M18 1264h256l234 -869l248 869h137l-322 -1114q-68 -236 -177 -361t-283 -125l-45 123q104 4 189 70.5t118 179.5z" />
+<glyph unicode="z" horiz-adv-x="907" d="M27 0l544 1128h-479v136h778l-530 -1131h504v-133h-817z" />
+<glyph unicode="{" horiz-adv-x="647" d="M94 674v74q111 10 163 70.5t52 185.5q0 70 -26.5 196.5t-26.5 183.5q0 336 352 402l8 -74q-115 -25 -167 -86t-52 -168q0 -63 32 -196.5t32 -204.5q0 -264 -236 -346q236 -84 236 -346q0 -72 -32 -204t-32 -196q0 -213 219 -254l-8 -73q-176 31 -264 127t-88 274 q0 57 26.5 183t26.5 196q0 123 -52 183.5t-163 72.5z" />
+<glyph unicode="|" horiz-adv-x="524" d="M180 -317v2060h160v-2060h-160z" />
+<glyph unicode="}" horiz-adv-x="645" d="M29 -289q221 41 221 254q0 63 -32 195.5t-32 204.5q0 262 234 346q-233 82 -234 346q0 72 32 205t32 196q0 106 -52.5 168t-168.5 86l10 74q350 -66 350 -402q0 -57 -25.5 -184t-25.5 -196q0 -125 52 -185.5t161 -70.5v-74q-109 -12 -161 -72.5t-52 -183.5 q0 -70 25.5 -196t25.5 -183q0 -178 -88 -274.5t-262 -126.5z" />
+<glyph unicode="~" horiz-adv-x="1003" d="M90 584q8 113 68.5 172t163.5 59q78 0 136 -25.5t86.5 -57.5t70.5 -57.5t92 -25.5q53 0 77.5 25.5t32.5 99.5h94q-8 -113 -69.5 -172t-163.5 -59q-78 0 -136.5 26.5t-86 57t-68.5 57.5t-90 27q-53 0 -78.5 -27t-34.5 -100h-94z" />
+<glyph unicode="&#xa1;" horiz-adv-x="598" d="M113 80q0 18 6 56t17 99.5t18 114.5q57 428 77 817h131q23 -403 80 -817l19 -113l16 -100q6 -37 6 -57q0 -104 -186 -105q-184 1 -184 105zM166 1479q0 55 35 85.5t96 30.5q63 0 99 -32.5t36 -83.5q0 -53 -36 -86t-99 -33q-61 0 -96 33t-35 86z" />
+<glyph unicode="&#xa2;" horiz-adv-x="851" d="M59 598q0 489 336 557v188h150v-178q106 -2 178 -50t94 -111l-112 -52q-55 115 -183 115q-229 0 -229 -434q0 -182 49 -262t166 -80q129 0 188 123l103 -54q-72 -141 -254 -163v-197h-150v193q-336 40 -336 405z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1026" d="M57 59q180 74 195 252q0 129 -27 205h-151v98h121l-33 72q-70 152 -68 252q0 219 146.5 326.5t371.5 107.5q289 0 377 -211l-96 -82q-86 162 -277 162q-129 0 -196.5 -69.5t-67.5 -192.5q0 -63 17.5 -121.5t52.5 -135.5t47 -108h422v-98h-402q20 -57 21 -100 q0 -66 -57.5 -139.5t-163.5 -122.5q63 18 145 18q66 0 168.5 -23.5t153.5 -23.5q141 0 211 115v-168q-76 -98 -250 -99q-68 0 -184.5 25t-180.5 25q-106 0 -258 -48z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1130" d="M90 295l143 137q-84 102 -83 248q0 137 81 248l-139 131l94 92l131 -139q113 86 250 86q135 0 248 -86l131 139l90 -92l-137 -131q86 -104 86 -248q0 -141 -86 -248l137 -137l-88 -92l-135 143q-106 -82 -246 -82q-143 0 -248 82l-135 -143zM270 680q0 -123 87 -209 t210 -86t209 86t86 209t-87 209t-208 86q-123 0 -210 -86t-87 -209z" />
+<glyph unicode="&#xa5;" horiz-adv-x="948" d="M47 1372h244l231 -549l248 549h129l-270 -584h258v-135h-293v-219h293v-135h-293v-299h-244v299h-276v135h276v219h-276v135h235z" />
+<glyph unicode="&#xa6;" horiz-adv-x="524" d="M180 -317v872h160v-872h-160zM180 870v873h160v-873h-160z" />
+<glyph unicode="&#xa7;" d="M72 610q0 125 68.5 210t193.5 120q-217 111 -217 326q0 147 104.5 238t278.5 91q190 0 264 -143l-80 -82q-59 104 -172 105q-94 0 -147.5 -52.5t-53.5 -134.5q0 -63 29 -112.5t84 -84t105.5 -57t127.5 -51.5l35 -12q119 -43 185.5 -118t66.5 -214q0 -119 -66.5 -207 t-189.5 -129q98 -45 155.5 -116.5t57.5 -198.5q0 -160 -117.5 -255t-302.5 -95q-227 0 -336 174l105 82q27 -55 83 -92.5t130 -37.5q98 0 161.5 57.5t63.5 145.5q0 94 -69.5 148.5t-188.5 91.5q-188 66 -273 158.5t-85 244.5zM268 635q0 -188 234 -240q111 8 169 67.5 t58 147.5q0 188 -229 244q-115 -12 -173.5 -71.5t-58.5 -147.5z" />
+<glyph unicode="&#xa8;" horiz-adv-x="940" d="M90 1522q0 53 36 84.5t99.5 31.5t98 -31.5t34.5 -84.5q0 -55 -34.5 -86t-98 -31t-99.5 33t-36 84zM582 1522q0 53 35.5 84.5t99.5 31.5q61 0 96 -31.5t35 -84.5q0 -55 -35 -86t-96 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1529" d="M59 672q0 317 190.5 508.5t524.5 191.5q332 0 513 -190.5t181 -510t-181 -510t-513 -190.5q-330 0 -522.5 199t-192.5 502zM154 672q0 -262 166.5 -434t453.5 -172t443.5 163.5t156.5 442.5q0 276 -156.5 440t-443.5 164q-289 0 -454.5 -165t-165.5 -439zM516 651 q0 227 64.5 337t207.5 110q160 0 199 -140l-63 -36q-20 55 -50 79.5t-81 24.5q-78 0 -114 -78t-36 -280q0 -176 33 -245t106 -69q104 0 138 113l57 -43q-33 -78 -82 -109.5t-150 -31.5q-117 0 -173 87.5t-56 280.5z" />
+<glyph unicode="&#xaa;" horiz-adv-x="677" d="M82 793q0 96 39 145t127 78q18 6 53 12t61.5 14.5t43.5 20.5v72q0 94 -91 94q-84 0 -118 -82l-80 59q61 119 217 119q113 0 173 -40t60 -152v-414q0 -72 29 -105h-150q-16 18 -24 72q-43 -88 -162 -88q-86 0 -132 51.5t-46 143.5zM240 819q0 -117 82 -117q53 0 84 48v239 q-10 -6 -84 -33q-82 -35 -82 -137z" />
+<glyph unicode="&#xab;" horiz-adv-x="892" d="M63 641v168l318 291v-168l-221 -207l221 -211v-164zM510 641v168l317 291v-168l-221 -207l221 -211v-164z" />
+<glyph unicode="&#xac;" d="M90 637v135h819v-772h-135v637h-684z" />
+<glyph unicode="&#xad;" horiz-adv-x="694" d="M63 625v131h566v-131h-566z" />
+<glyph unicode="&#xae;" horiz-adv-x="1529" d="M59 672q0 317 190.5 508.5t524.5 191.5q332 0 513 -190.5t181 -510t-181 -510t-513 -190.5q-330 0 -522.5 199t-192.5 502zM154 672q0 -262 166.5 -434t453.5 -172t443.5 163.5t156.5 442.5q0 276 -156.5 440t-443.5 164q-289 0 -454.5 -165t-165.5 -439zM543 297v788 h260q190 0 190 -172q0 -184 -137 -213q68 -6 102.5 -42.5t34.5 -118.5v-127q0 -61 35 -68v-51q-12 -4 -59 -4q-96 0 -97 88v184q0 45 -31.5 75t-74.5 30h-102v-369h-121zM664 725h94q61 0 87.5 35t26.5 114q0 84 -21.5 114t-80.5 30h-106v-293z" />
+<glyph unicode="&#xaf;" horiz-adv-x="935" d="M90 1399v145h754v-145h-754z" />
+<glyph unicode="&#xb0;" horiz-adv-x="735" d="M90 1307q0 133 78 207.5t201 74.5q121 0 197.5 -74.5t76.5 -207.5t-77 -211t-197 -78q-123 0 -201 78t-78 211zM190 1307q0 -90 48.5 -139.5t130.5 -49.5q80 0 125 48t45 141q0 90 -45 136t-125 46q-82 0 -130.5 -46t-48.5 -136z" />
+<glyph unicode="&#xb1;" d="M90 35v135h819v-135h-819zM90 608v135h342v342h135v-342h342v-135h-342v-342h-135v342h-342z" />
+<glyph unicode="&#xb2;" horiz-adv-x="569" d="M33 918q94 88 154.5 151.5t117.5 159.5t57 174q0 109 -98 108q-96 0 -141 -69l-53 61q59 100 223 101q209 0 209 -189q0 -78 -45 -156.5t-93.5 -126t-130.5 -116.5h277v-98h-477z" />
+<glyph unicode="&#xb3;" horiz-adv-x="544" d="M33 1526q70 78 203 78q207 0 206 -174q0 -51 -28.5 -88t-75.5 -48q68 -10 103.5 -62t35.5 -112q0 -174 -111.5 -270t-269.5 -115l-22 74q248 57 248 301q0 123 -97 123q-29 0 -55 -12l-14 59q72 18 109.5 50t37.5 100q0 92 -96 92q-80 0 -129 -58z" />
+<glyph unicode="&#xb4;" horiz-adv-x="669" d="M90 1372l240 344h248l-322 -344h-166z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1067" d="M90 -336v1559l242 59v-975q0 -90 41 -125t133 -35q70 0 134.5 34t94.5 79v963l242 59v-1282h-205l-8 143q-49 -68 -139 -108.5t-189 -40.5q-68 0 -104 29v-359h-242z" />
+<glyph unicode="&#xb6;" horiz-adv-x="974" d="M57 1235q0 334 250 334h627v-123h-137v-1782h-125v1782h-254v-1782h-129v1219q-72 12 -118 40.5t-80 106.5t-34 205z" />
+<glyph unicode="&#xb7;" horiz-adv-x="448" d="M90 768q0 53 36 86t99.5 33t98 -33t34.5 -86q0 -55 -34.5 -87t-98 -32t-99.5 34t-36 85z" />
+<glyph unicode="&#xb8;" horiz-adv-x="448" d="M90 -150q25 90 141 91q57 0 91 -27t34 -70q0 -82 -69.5 -159.5t-159.5 -108.5q61 96 61 199q0 75 -98 75z" />
+<glyph unicode="&#xb9;" horiz-adv-x="333" d="M41 1552l215 60v-694h-141v552q0 33 -39 33l-33 -4z" />
+<glyph unicode="&#xba;" horiz-adv-x="706" d="M92 944q0 174 62.5 277.5t228.5 103.5q121 0 177 -82t56 -264q0 -174 -63.5 -277.5t-226.5 -103.5q-121 0 -177.5 82t-56.5 264zM258 975q0 -287 98 -287q53 0 73 60.5t20 199.5q0 289 -97 289q-53 0 -73.5 -62.5t-20.5 -199.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="892" d="M63 350v164l224 211l-224 207v168l318 -291v-168zM510 350v164l223 211l-223 207v168l317 -291v-168z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1259" d="M59 -29l988 1401h141l-983 -1401h-146zM180 1368l215 59v-694h-141v553q0 33 -39 33l-33 -4zM715 184l434 721v-647h55v-74h-55v-168h-148v168h-286zM844 258h157v274z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1288" d="M59 -29l988 1401h141l-983 -1401h-146zM180 1368l215 59v-694h-141v553q0 33 -39 33l-33 -4zM756 -20q94 88 154.5 151.5t117.5 159.5t57 174q0 109 -98 108q-96 0 -141 -69l-53 61q59 100 223 101q209 0 209 -189q0 -78 -45 -156.5t-93.5 -126t-130.5 -116.5h277v-98 h-477z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1257" d="M59 -29l988 1401h141l-983 -1401h-146zM145 1464q70 78 203 78q207 0 207 -174q0 -51 -28.5 -88t-75.5 -47q68 -10 103.5 -62.5t35.5 -111.5q0 -174 -111.5 -270.5t-269.5 -114.5l-23 74q248 57 248 301q0 123 -96 122q-27 0 -55 -12l-15 60q72 18 110 49.5t38 99.5 q0 92 -97 92q-80 0 -129 -57zM674 184l434 721v-647h55v-74h-55v-168h-147v168h-287zM803 258h158v274z" />
+<glyph unicode="&#xbf;" horiz-adv-x="858" d="M61 317q0 131 61.5 223.5t180.5 188.5q61 49 96 82t72 90t37 111q0 84 -59 149l129 37q123 -86 122 -233q0 -88 -43 -160t-103 -123l-121 -100q-60 -49 -103 -116t-43 -144q0 -102 56 -153.5t155 -51.5q156 0 266 137l94 -115q-154 -164 -399 -164q-398 0 -398 342z M381 1479q0 55 34 85.5t97 30.5t99 -32.5t36 -83.5q0 -53 -36 -86t-99 -33t-97 33t-34 86z" />
+<glyph unicode="&#xc0;" horiz-adv-x="935" d="M18 0l357 1569h211l332 -1569h-261l-69 328h-357l-67 -328h-146zM162 2021h250l237 -344h-164zM254 459h311l-155 706z" />
+<glyph unicode="&#xc1;" horiz-adv-x="935" d="M18 0l357 1569h211l332 -1569h-261l-69 328h-357l-67 -328h-146zM254 459h311l-155 706zM293 1677l239 344h248l-321 -344h-166z" />
+<glyph unicode="&#xc2;" horiz-adv-x="935" d="M18 0l357 1569h211l332 -1569h-261l-69 328h-357l-67 -328h-146zM39 1675l336 326h200l334 -326h-198l-236 230l-235 -230h-201zM254 459h311l-155 706z" />
+<glyph unicode="&#xc3;" horiz-adv-x="935" d="M18 0l357 1569h211l332 -1569h-261l-69 328h-357l-67 -328h-146zM20 1718q16 254 254 254q70 0 124.5 -18.5t87 -45t61 -53t64.5 -45t79 -18.5q57 0 84 28.5t35 106.5h106q-18 -254 -253 -254q-86 0 -151 29t-95.5 62.5t-75.5 62t-94 28.5q-57 0 -85 -28.5t-34 -108.5 h-107zM254 459h311l-155 706z" />
+<glyph unicode="&#xc4;" horiz-adv-x="935" d="M18 0l357 1569h211l332 -1569h-261l-69 328h-357l-67 -328h-146zM90 1827q0 53 36 85t99.5 32t98 -32t34.5 -85q0 -55 -34.5 -86t-98 -31t-99.5 33t-36 84zM254 459h311l-155 706zM582 1827q0 53 35.5 85t99.5 32q61 0 96 -32t35 -85q0 -55 -35 -86t-96 -31q-63 0 -99 33 t-36 84z" />
+<glyph unicode="&#xc5;" horiz-adv-x="935" d="M18 0l357 1569h211l332 -1569h-261l-69 328h-357l-67 -328h-146zM233 1823q0 94 61.5 146t184.5 52q242 0 242 -198.5t-242 -198.5q-246 0 -246 199zM254 459h311l-155 706zM350 1823q0 -113 129 -113q131 0 131 113q0 115 -131 114q-129 1 -129 -114z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1513" d="M18 -2l357 1571h1095v-142h-512v-571h334v-139h-334v-582h512v-135h-765v328h-386l-67 -330h-234zM344 459h361v968h-156z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1034" d="M59 702q0 455 130 674t415 219q164 0 262.5 -78.5t132.5 -195.5l-127 -78q-45 106 -103 154.5t-156.5 48.5t-160 -59.5t-95 -217t-33.5 -428.5q0 -348 64.5 -486t205.5 -138q197 0 262 221l123 -88q-61 -152 -158.5 -215.5t-285.5 -63.5q-236 0 -356 175t-120 556z M444 -150q25 90 142 91q57 0 91 -27t34 -70q0 -82 -70 -159.5t-160 -108.5q61 96 62 199q-1 75 -99 75z" />
+<glyph unicode="&#xc8;" horiz-adv-x="931" d="M90 0v1569h799v-142h-545v-571h340v-139h-340v-582h545v-135h-799zM184 2021h250l238 -344h-164z" />
+<glyph unicode="&#xc9;" horiz-adv-x="931" d="M90 0v1569h799v-142h-545v-571h340v-139h-340v-582h545v-135h-799zM303 1677l240 344h248l-322 -344h-166z" />
+<glyph unicode="&#xca;" horiz-adv-x="931" d="M61 1675l336 326h201l334 -326h-199l-235 230l-236 -230h-201zM90 0v1569h799v-142h-545v-571h340v-139h-340v-582h545v-135h-799z" />
+<glyph unicode="&#xcb;" horiz-adv-x="931" d="M90 0v1569h799v-142h-545v-571h340v-139h-340v-582h545v-135h-799zM111 1827q0 53 35.5 85t99 32t98.5 -32t35 -85q0 -55 -35 -86t-98.5 -31t-99 33t-35.5 84zM602 1827q0 53 36 85t99 32q61 0 96 -32t35 -85q0 -55 -34.5 -86t-96.5 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#xcc;" horiz-adv-x="452" d="M-78 2021h250l238 -344h-164zM98 0v1569h254v-1569h-254z" />
+<glyph unicode="&#xcd;" horiz-adv-x="452" d="M45 1677l240 344h247l-321 -344h-166zM98 0v1569h254v-1569h-254z" />
+<glyph unicode="&#xce;" horiz-adv-x="452" d="M-209 1675l336 326h201l334 -326h-199l-236 230l-235 -230h-201zM98 0v1569h254v-1569h-254z" />
+<glyph unicode="&#xcf;" horiz-adv-x="452" d="M-152 1827q0 53 36 85t99.5 32t98.5 -32t35 -85q0 -55 -35 -86t-98.5 -31t-99.5 33t-36 84zM98 0v1569h254v-1569h-254zM340 1827q0 53 36 85t99 32q61 0 96 -32t35 -85q0 -55 -34.5 -86t-96.5 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1126" d="M20 717v137h97v715h510q233 0 333.5 -156t100.5 -536q0 -360 -46 -546t-151.5 -258.5t-310.5 -72.5h-436v717h-97zM365 135h165q106 0 164 59.5t83.5 211t25.5 440.5q0 162 -11.5 268.5t-31 170t-60.5 95t-81.5 39.5t-112.5 8h-141v-573h225v-137h-225v-582z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1050" d="M78 1718q16 254 254 254q70 0 124 -18.5t86.5 -45t61.5 -53t65 -45t79 -18.5q57 0 83.5 28.5t34.5 106.5h107q-18 -254 -254 -254q-86 0 -150.5 29t-95.5 62.5t-76 62t-94 28.5q-57 0 -85 -28.5t-34 -108.5h-106zM82 0v1569h213l514 -963v963h158v-1569h-90l-637 1137 v-1137h-158z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1140" d="M59 735q0 440 132.5 650t441.5 210q223 0 335.5 -194.5t112.5 -560.5q0 -463 -134 -666t-449 -203q-231 0 -335 179t-104 585zM264 2021h250l238 -344h-164zM330 768q0 -256 20.5 -395.5t64.5 -197.5t126 -58q154 0 211 143t57 531q0 369 -49 512t-168 143 q-150 0 -206 -146.5t-56 -531.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1140" d="M59 735q0 440 132.5 650t441.5 210q223 0 335.5 -194.5t112.5 -560.5q0 -463 -134 -666t-449 -203q-231 0 -335 179t-104 585zM330 768q0 -256 20.5 -395.5t64.5 -197.5t126 -58q154 0 211 143t57 531q0 369 -49 512t-168 143q-150 0 -206 -146.5t-56 -531.5zM387 1677 l240 344h247l-321 -344h-166z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1140" d="M59 735q0 440 132.5 650t441.5 210q223 0 335.5 -194.5t112.5 -560.5q0 -463 -134 -666t-449 -203q-231 0 -335 179t-104 585zM135 1675l336 326h201l334 -326h-199l-236 230l-235 -230h-201zM330 768q0 -256 20.5 -395.5t64.5 -197.5t126 -58q154 0 211 143t57 531 q0 369 -49 512t-168 143q-150 0 -206 -146.5t-56 -531.5z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1140" d="M59 735q0 440 132.5 650t441.5 210q223 0 335.5 -194.5t112.5 -560.5q0 -463 -134 -666t-449 -203q-231 0 -335 179t-104 585zM123 1718q16 254 254 254q70 0 124 -18.5t87 -45t61.5 -53t64.5 -45t79 -18.5q57 0 83.5 28.5t34.5 106.5h107q-18 -254 -254 -254 q-86 0 -150.5 29t-95.5 62.5t-76 62t-94 28.5q-57 0 -84.5 -28.5t-34.5 -108.5h-106zM330 768q0 -256 20.5 -395.5t64.5 -197.5t126 -58q154 0 211 143t57 531q0 369 -49 512t-168 143q-150 0 -206 -146.5t-56 -531.5z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1140" d="M59 735q0 440 132.5 650t441.5 210q223 0 335.5 -194.5t112.5 -560.5q0 -463 -134 -666t-449 -203q-231 0 -335 179t-104 585zM190 1827q0 53 36 85t99.5 32t98.5 -32t35 -85q0 -55 -35 -86t-98.5 -31t-99.5 33t-36 84zM330 768q0 -256 20.5 -395.5t64.5 -197.5t126 -58 q154 0 211 143t57 531q0 369 -49 512t-168 143q-150 0 -206 -146.5t-56 -531.5zM682 1827q0 53 36 85t99 32q61 0 96 -32t35 -85q0 -55 -34.5 -86t-96.5 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#xd7;" d="M162 434l241 242l-241 242l96 96l242 -242l241 242l97 -96l-242 -242l242 -242l-97 -96l-241 242l-242 -242z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1140" d="M59 735q0 440 132.5 650t441.5 210q80 0 143 -24l35 90h176l-72 -188q166 -186 166 -633q0 -463 -134 -666t-449 -203q-76 0 -138 19l-32 -90h-174l65 176q-160 165 -160 659zM330 768q0 -229 14 -356l367 983q-45 51 -119 51q-150 0 -206 -146.5t-56 -531.5zM426 162 q39 -45 115 -45q154 0 211 143t57 531q0 207 -16 350z" />
+<glyph unicode="&#xd9;" horiz-adv-x="974" d="M82 332v1237h254v-1239q0 -115 46 -164t153 -49q92 0 142 49t50 170v1233h164v-1219q0 -213 -97.5 -296t-297.5 -83q-221 0 -317.5 86.5t-96.5 274.5zM182 2021h250l238 -344h-164z" />
+<glyph unicode="&#xda;" horiz-adv-x="974" d="M82 332v1237h254v-1239q0 -115 46 -164t153 -49q92 0 142 49t50 170v1233h164v-1219q0 -213 -97.5 -296t-297.5 -83q-221 0 -317.5 86.5t-96.5 274.5zM305 1677l240 344h248l-322 -344h-166z" />
+<glyph unicode="&#xdb;" horiz-adv-x="974" d="M53 1675l336 326h201l334 -326h-199l-236 230l-235 -230h-201zM82 332v1237h254v-1239q0 -115 46 -164t153 -49q92 0 142 49t50 170v1233h164v-1219q0 -213 -97.5 -296t-297.5 -83q-221 0 -317.5 86.5t-96.5 274.5z" />
+<glyph unicode="&#xdc;" horiz-adv-x="974" d="M82 332v1237h254v-1239q0 -115 46 -164t153 -49q92 0 142 49t50 170v1233h164v-1219q0 -213 -97.5 -296t-297.5 -83q-221 0 -317.5 86.5t-96.5 274.5zM109 1827q0 53 35.5 85t99 32t98.5 -32t35 -85q0 -55 -35 -86t-98.5 -31t-99 33t-35.5 84zM600 1827q0 53 36 85t99 32 q61 0 96 -32t35 -85q0 -55 -34.5 -86t-96.5 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#xdd;" horiz-adv-x="913" d="M14 1569h250l240 -602l260 602h131l-317 -733v-836h-250v809zM274 1677l240 344h248l-322 -344h-166z" />
+<glyph unicode="&#xde;" horiz-adv-x="1050" d="M90 0v1569h254v-301h254q225 0 320.5 -95.5t95.5 -302.5q0 -322 -101.5 -444.5t-367.5 -122.5h-201v-303h-254zM344 440h174q133 0 188.5 79t55.5 280q0 190 -44 258.5t-157 68.5h-217v-686z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1122" d="M90 0v1274q0 180 119 267t366 87q190 0 311.5 -97t121.5 -308q0 -324 -250 -375q309 -47 309 -381q0 -225 -101.5 -360.5t-328.5 -135.5q-131 0 -186 39v103q63 -14 129 -4q133 12 179 85.5t46 223.5q0 186 -74 273t-233 87l-4 96q160 29 225 90.5t65 215.5 q0 172 -59 242.5t-178 70.5q-215 0 -215 -203v-1290h-242z" />
+<glyph unicode="&#xe0;" d="M41 324q0 162 63.5 251t204.5 138q41 14 177.5 40.5t183.5 61.5v129q0 104 -44 153.5t-153 49.5q-176 0 -250 -160l-119 90q113 215 388 215q96 0 164.5 -13t129 -49t92 -108.5t31.5 -179.5v-752q0 -127 49 -190h-225q-39 57 -43 152q-41 -84 -124 -132.5t-191 -48.5 q-166 0 -250 92.5t-84 260.5zM195 1716h249l238 -344h-164zM276 360q0 -121 44.5 -178t138.5 -57q147 0 213 139v438q-25 -14 -57.5 -24t-80 -22.5t-65.5 -18.5q-193 -62 -193 -277z" />
+<glyph unicode="&#xe1;" d="M41 324q0 162 63.5 251t204.5 138q41 14 177.5 40.5t183.5 61.5v129q0 104 -44 153.5t-153 49.5q-176 0 -250 -160l-119 90q113 215 388 215q96 0 164.5 -13t129 -49t92 -108.5t31.5 -179.5v-752q0 -127 49 -190h-225q-39 57 -43 152q-41 -84 -124 -132.5t-191 -48.5 q-166 0 -250 92.5t-84 260.5zM276 360q0 -121 44.5 -178t138.5 -57q147 0 213 139v438q-25 -14 -57.5 -24t-80 -22.5t-65.5 -18.5q-193 -62 -193 -277zM338 1372l240 344h247l-321 -344h-166z" />
+<glyph unicode="&#xe2;" d="M41 324q0 162 63.5 251t204.5 138q41 14 177.5 40.5t183.5 61.5v129q0 104 -44 153.5t-153 49.5q-176 0 -250 -160l-119 90q113 215 388 215q96 0 164.5 -13t129 -49t92 -108.5t31.5 -179.5v-752q0 -127 49 -190h-225q-39 57 -43 152q-41 -84 -124 -132.5t-191 -48.5 q-166 0 -250 92.5t-84 260.5zM86 1370l336 326h201l333 -326h-198l-236 229l-235 -229h-201zM276 360q0 -121 44.5 -178t138.5 -57q147 0 213 139v438q-25 -14 -57.5 -24t-80 -22.5t-65.5 -18.5q-193 -62 -193 -277z" />
+<glyph unicode="&#xe3;" d="M41 324q0 162 63.5 251t204.5 138q41 14 177.5 40.5t183.5 61.5v129q0 104 -44 153.5t-153 49.5q-176 0 -250 -160l-119 90q113 215 388 215q96 0 164.5 -13t129 -49t92 -108.5t31.5 -179.5v-752q0 -127 49 -190h-225q-39 57 -43 152q-41 -84 -124 -132.5t-191 -48.5 q-166 0 -250 92.5t-84 260.5zM74 1413q16 254 254 254q86 0 149.5 -28.5t94 -61.5t75.5 -61.5t96 -28.5q57 0 84 28.5t35 106.5h107q-18 -254 -254 -254q-86 0 -150.5 28.5t-95.5 62.5t-76 62.5t-94 28.5q-57 0 -85 -28.5t-34 -108.5h-106zM276 360q0 -121 44.5 -178 t138.5 -57q147 0 213 139v438q-25 -14 -57.5 -24t-80 -22.5t-65.5 -18.5q-193 -62 -193 -277z" />
+<glyph unicode="&#xe4;" d="M41 324q0 162 63.5 251t204.5 138q41 14 177.5 40.5t183.5 61.5v129q0 104 -44 153.5t-153 49.5q-176 0 -250 -160l-119 90q113 215 388 215q96 0 164.5 -13t129 -49t92 -108.5t31.5 -179.5v-752q0 -127 49 -190h-225q-39 57 -43 152q-41 -84 -124 -132.5t-191 -48.5 q-166 0 -250 92.5t-84 260.5zM141 1522q0 53 36 84.5t99.5 31.5t98.5 -31.5t35 -84.5q0 -55 -35 -86t-98.5 -31t-99.5 33t-36 84zM276 360q0 -121 44.5 -178t138.5 -57q147 0 213 139v438q-25 -14 -57.5 -24t-80 -22.5t-65.5 -18.5q-193 -62 -193 -277zM633 1522 q0 53 36 84.5t99 31.5q61 0 96 -31.5t35 -84.5q0 -55 -35 -86t-96 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#xe5;" d="M41 324q0 162 63.5 251t204.5 138q41 14 177.5 40.5t183.5 61.5v129q0 104 -44 153.5t-153 49.5q-176 0 -250 -160l-119 90q113 215 388 215q96 0 164.5 -13t129 -49t92 -108.5t31.5 -179.5v-752q0 -127 49 -190h-225q-39 57 -43 152q-41 -84 -124 -132.5t-191 -48.5 q-166 0 -250 92.5t-84 260.5zM276 360q0 -121 44.5 -178t138.5 -57q147 0 213 139v438q-25 -14 -57.5 -24t-80 -22.5t-65.5 -18.5q-193 -62 -193 -277zM276 1518q0 94 61.5 146t184.5 52q242 0 242 -198.5t-242 -198.5q-246 0 -246 199zM393 1518q0 -113 129 -113 q131 0 131 113q0 115 -131 114q-129 1 -129 -114z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1615" d="M41 324q0 162 63.5 251t204.5 138q43 14 173 39.5t180 56.5q14 92 14 131q0 207 -203 207q-176 0 -250 -160l-119 90q113 215 388 215q258 0 350 -114q117 115 282 114q252 0 342 -144t93 -511h-676q0 -264 59 -395t197 -131q174 0 235 147l109 -78q-43 -98 -130 -153.5 t-255 -55.5q-291 0 -396 205q-113 -205 -327 -205q-166 0 -250 92.5t-84 260.5zM276 360q0 -121 44.5 -178t138.5 -57q131 0 209 139q-31 113 -31 266q0 92 8 158q-25 -12 -53.5 -21.5t-66.5 -16.5t-56 -13q-193 -62 -193 -277zM887 752h446q-2 223 -51 313t-156 90 q-206 0 -239 -403z" />
+<glyph unicode="&#xe7;" horiz-adv-x="942" d="M59 522q0 770 504 770q141 0 228.5 -63.5t113.5 -161.5l-123 -66q-59 156 -204 156q-260 0 -261 -590q0 -244 54.5 -352.5t183.5 -108.5q154 0 215 162l117 -69q-96 -227 -391 -228q-437 0 -437 551zM389 -150q25 90 141 91q57 0 91 -27t34 -70q0 -82 -69.5 -159.5 t-159.5 -108.5q61 96 61 199q0 75 -98 75z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1038" d="M59 530q0 379 139.5 570.5t348.5 191.5q252 0 342 -144t92 -511h-676q0 -264 59.5 -395t196.5 -131q174 0 236 147l108 -78q-43 -98 -130 -153.5t-255 -55.5q-240 0 -350.5 138t-110.5 421zM233 1716h250l238 -344h-164zM309 752h447q-2 223 -51.5 313t-155.5 90 q-207 0 -240 -403z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1038" d="M59 530q0 379 139.5 570.5t348.5 191.5q252 0 342 -144t92 -511h-676q0 -264 59.5 -395t196.5 -131q174 0 236 147l108 -78q-43 -98 -130 -153.5t-255 -55.5q-240 0 -350.5 138t-110.5 421zM309 752h447q-2 223 -51.5 313t-155.5 90q-207 0 -240 -403zM336 1372l239 344 h248l-321 -344h-166z" />
+<glyph unicode="&#xea;" horiz-adv-x="1038" d="M59 530q0 379 139.5 570.5t348.5 191.5q252 0 342 -144t92 -511h-676q0 -264 59.5 -395t196.5 -131q174 0 236 147l108 -78q-43 -98 -130 -153.5t-255 -55.5q-240 0 -350.5 138t-110.5 421zM104 1370l336 326h201l334 -326h-199l-235 229l-236 -229h-201zM309 752h447 q-2 223 -51.5 313t-155.5 90q-207 0 -240 -403z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1038" d="M59 530q0 379 139.5 570.5t348.5 191.5q252 0 342 -144t92 -511h-676q0 -264 59.5 -395t196.5 -131q174 0 236 147l108 -78q-43 -98 -130 -153.5t-255 -55.5q-240 0 -350.5 138t-110.5 421zM160 1522q0 53 35.5 84.5t99 31.5t98.5 -31.5t35 -84.5q0 -55 -35 -86 t-98.5 -31t-99 33t-35.5 84zM309 752h447q-2 223 -51.5 313t-155.5 90q-207 0 -240 -403zM651 1522q0 53 36 84.5t99 31.5q61 0 96.5 -31.5t35.5 -84.5q0 -55 -35 -86t-97 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#xec;" horiz-adv-x="532" d="M8 1716h250l238 -344h-164zM195 0v1223l241 59v-1282h-241z" />
+<glyph unicode="&#xed;" horiz-adv-x="526" d="M37 1372l239 344h248l-321 -344h-166zM100 0v1223l242 59v-1282h-242z" />
+<glyph unicode="&#xee;" horiz-adv-x="745" d="M-63 1370l335 326h201l334 -326h-199l-235 229l-236 -229h-200zM252 0v1223l242 59v-1282h-242z" />
+<glyph unicode="&#xef;" horiz-adv-x="663" d="M-49 1522q0 53 36 84.5t99.5 31.5t98 -31.5t34.5 -84.5q0 -55 -34.5 -86t-98 -31t-99.5 33t-36 84zM211 0v1223l242 59v-1282h-242zM442 1522q0 53 36 84.5t100 31.5q61 0 96 -31.5t35 -84.5q0 -55 -35 -86t-96 -31q-63 0 -99.5 33t-36.5 84z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1052" d="M57 451q0 479 396 479q109 0 181.5 -35t145.5 -121q-20 350 -190 535l-305 -230l-54 78l297 215q-129 113 -323 158l20 98q266 -39 430 -164l209 156l56 -78l-195 -137q264 -250 264 -795q0 -639 -481 -639q-219 0 -335 113t-116 367zM309 467q0 -375 213 -375 q211 0 211 389q-39 174 -93 248t-136 74q-102 0 -148.5 -76t-46.5 -260z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1058" d="M82 1413q16 254 254 254q86 0 149.5 -28.5t94 -61.5t75.5 -61.5t97 -28.5q57 0 83.5 28.5t34.5 106.5h107q-18 -254 -254 -254q-86 0 -150.5 28.5t-95.5 62.5t-76 62.5t-94 28.5q-57 0 -84.5 -28.5t-34.5 -108.5h-106zM90 0v1223l242 59v-145q51 66 145 110.5t209 44.5 q147 0 219 -78.5t72 -244.5v-969h-242v950q0 92 -41 129t-133 37q-70 0 -134.5 -33.5t-94.5 -78.5v-1004h-242z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1056" d="M59 600q0 147 21.5 262t76 217.5t161 157.5t262.5 55q215 0 315 -149.5t100 -478.5q0 -117 -12 -211.5t-47 -187.5t-90 -155.5t-149.5 -100.5t-219.5 -38q-217 0 -317.5 148.5t-100.5 480.5zM223 1716h250l238 -344h-164zM307 643q0 -281 52.5 -409t160.5 -128 q133 0 181.5 123t48.5 387q0 283 -52.5 412t-162.5 129q-131 0 -179.5 -125t-48.5 -389z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1056" d="M59 600q0 147 21.5 262t76 217.5t161 157.5t262.5 55q215 0 315 -149.5t100 -478.5q0 -117 -12 -211.5t-47 -187.5t-90 -155.5t-149.5 -100.5t-219.5 -38q-217 0 -317.5 148.5t-100.5 480.5zM307 643q0 -281 52.5 -409t160.5 -128q133 0 181.5 123t48.5 387 q0 283 -52.5 412t-162.5 129q-131 0 -179.5 -125t-48.5 -389zM346 1372l240 344h248l-322 -344h-166z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1056" d="M59 600q0 147 21.5 262t76 217.5t161 157.5t262.5 55q215 0 315 -149.5t100 -478.5q0 -117 -12 -211.5t-47 -187.5t-90 -155.5t-149.5 -100.5t-219.5 -38q-217 0 -317.5 148.5t-100.5 480.5zM92 1370l336 326h201l334 -326h-199l-236 229l-235 -229h-201zM307 643 q0 -281 52.5 -409t160.5 -128q133 0 181.5 123t48.5 387q0 283 -52.5 412t-162.5 129q-131 0 -179.5 -125t-48.5 -389z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1056" d="M59 600q0 147 21.5 262t76 217.5t161 157.5t262.5 55q215 0 315 -149.5t100 -478.5q0 -117 -12 -211.5t-47 -187.5t-90 -155.5t-149.5 -100.5t-219.5 -38q-217 0 -317.5 148.5t-100.5 480.5zM82 1413q16 254 254 254q86 0 149.5 -28.5t94 -61.5t75.5 -61.5t97 -28.5 q57 0 83.5 28.5t34.5 106.5h107q-18 -254 -254 -254q-86 0 -150.5 28.5t-95.5 62.5t-76 62.5t-94 28.5q-57 0 -84.5 -28.5t-34.5 -108.5h-106zM307 643q0 -281 52.5 -409t160.5 -128q133 0 181.5 123t48.5 387q0 283 -52.5 412t-162.5 129q-131 0 -179.5 -125t-48.5 -389z " />
+<glyph unicode="&#xf6;" horiz-adv-x="1056" d="M59 600q0 147 21.5 262t76 217.5t161 157.5t262.5 55q215 0 315 -149.5t100 -478.5q0 -117 -12 -211.5t-47 -187.5t-90 -155.5t-149.5 -100.5t-219.5 -38q-217 0 -317.5 148.5t-100.5 480.5zM150 1522q0 53 35.5 84.5t99 31.5t98.5 -31.5t35 -84.5q0 -55 -35 -86 t-98.5 -31t-99 33t-35.5 84zM307 643q0 -281 52.5 -409t160.5 -128q133 0 181.5 123t48.5 387q0 283 -52.5 412t-162.5 129q-131 0 -179.5 -125t-48.5 -389zM641 1522q0 53 36 84.5t99 31.5q61 0 96 -31.5t35 -84.5q0 -55 -34.5 -86t-96.5 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#xf7;" d="M90 608v135h819v-135h-819zM367 367q0 53 35.5 85.5t99 32.5t98.5 -32.5t35 -85.5q0 -55 -35 -87t-98.5 -32t-99 34t-35.5 85zM367 985q0 53 35.5 86t99 33t98.5 -33t35 -86q0 -55 -35 -87t-98.5 -32t-99 34t-35.5 85z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1056" d="M59 600q0 147 21.5 262t76 217.5t161 157.5t262.5 55q66 0 131 -16l45 108h170l-78 -186q147 -141 147 -534q0 -117 -12 -211.5t-47 -187.5t-90 -155.5t-149.5 -100.5t-219.5 -38q-68 0 -133 17l-53 -131h-168l84 204q-148 142 -148 539zM307 643q0 -182 21 -291l315 762 q-45 43 -108 43q-131 0 -179.5 -125t-48.5 -389zM412 150q43 -43 108 -44q133 0 181.5 123t48.5 387q0 164 -21 293z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1058" d="M82 291v932l242 59v-969q0 -94 41 -130t133 -36q70 0 134 34t95 79v963l242 59v-1282h-205l-6 143q-53 -72 -147.5 -122t-217.5 -50q-162 0 -236.5 77t-74.5 243zM223 1716h250l238 -344h-164z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1058" d="M82 291v932l242 59v-969q0 -94 41 -130t133 -36q70 0 134 34t95 79v963l242 59v-1282h-205l-6 143q-53 -72 -147.5 -122t-217.5 -50q-162 0 -236.5 77t-74.5 243zM346 1372l240 344h248l-322 -344h-166z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1058" d="M82 291v932l242 59v-969q0 -94 41 -130t133 -36q70 0 134 34t95 79v963l242 59v-1282h-205l-6 143q-53 -72 -147.5 -122t-217.5 -50q-162 0 -236.5 77t-74.5 243zM94 1370l336 326h201l334 -326h-199l-236 229l-235 -229h-201z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1058" d="M82 291v932l242 59v-969q0 -94 41 -130t133 -36q70 0 134 34t95 79v963l242 59v-1282h-205l-6 143q-53 -72 -147.5 -122t-217.5 -50q-162 0 -236.5 77t-74.5 243zM150 1522q0 53 35.5 84.5t99 31.5t98.5 -31.5t35 -84.5q0 -55 -35 -86t-98.5 -31t-99 33t-35.5 84z M641 1522q0 53 36 84.5t99 31.5q61 0 96 -31.5t35 -84.5q0 -55 -34.5 -86t-96.5 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#xfd;" horiz-adv-x="913" d="M18 1264h256l234 -869l248 869h137l-322 -1114q-68 -236 -177 -361t-283 -125l-45 123q104 4 189 70.5t118 179.5zM274 1372l240 344h248l-322 -344h-166z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1064" d="M90 -336v1905l242 59v-495q109 160 291 159q193 0 287 -160.5t94 -451.5q0 -348 -99.5 -528.5t-286.5 -180.5q-88 0 -163.5 44t-122.5 112v-463h-242zM332 283q23 -57 77 -96.5t119 -39.5q121 0 173.5 109t52.5 356q0 504 -234 504q-129 0 -188 -131v-702z" />
+<glyph unicode="&#xff;" horiz-adv-x="913" d="M18 1264h256l234 -869l248 869h137l-322 -1114q-68 -236 -177 -361t-283 -125l-45 123q104 4 189 70.5t118 179.5zM98 1522q0 53 36 84.5t99.5 31.5t98.5 -31.5t35 -84.5q0 -55 -35 -86t-98.5 -31t-99.5 33t-36 84zM590 1522q0 53 36 84.5t99 31.5q61 0 96 -31.5 t35 -84.5q0 -55 -35 -86t-96 -31q-63 0 -99 33t-36 84z" />
+<glyph unicode="&#x152;" horiz-adv-x="1503" d="M61 754q0 324 46.5 497.5t147.5 245.5t290 72h915v-142h-504v-571h324v-139h-324v-582h504v-135h-944q-172 0 -268 68.5t-141.5 231.5t-45.5 454zM324 860q0 -197 9 -322.5t25.5 -208.5t51 -123t75.5 -54.5t111 -14.5h106v1295h-129q-131 0 -190 -125t-59 -447z" />
+<glyph unicode="&#x153;" horiz-adv-x="1681" d="M59 600q0 147 21.5 262t76 217.5t161 157.5t262.5 55q203 0 305 -135q123 135 303 135q252 0 342 -144t92 -511h-676q0 -264 59.5 -395t196.5 -131q174 0 236 147l108 -78q-43 -98 -130 -153.5t-255 -55.5q-221 0 -336 121q-125 -121 -348 -121q-217 0 -317.5 148.5 t-100.5 480.5zM307 643q0 -281 52.5 -409t160.5 -128q160 0 203 195q-23 102 -23 229q0 182 35 328q-35 299 -200 299q-131 0 -179.5 -125t-48.5 -389zM950 752h447q-2 223 -51.5 313t-155.5 90q-207 0 -240 -403z" />
+<glyph unicode="&#x178;" horiz-adv-x="913" d="M14 1569h250l240 -602l260 602h131l-317 -733v-836h-250v809zM78 1827q0 53 36 85t99 32t98 -32t35 -85q0 -55 -35 -86t-98 -31t-99 33t-36 84zM569 1827q0 53 36 85t100 32q61 0 96 -32t35 -85q0 -55 -35 -86t-96 -31q-63 0 -99.5 33t-36.5 84z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1052" d="M90 1370l336 326h201l334 -326h-199l-236 229l-235 -229h-201z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1077" d="M90 1413q16 254 254 254q86 0 149.5 -28.5t94 -61.5t76 -61.5t96.5 -28.5q57 0 83.5 28.5t35.5 106.5h106q-18 -254 -254 -254q-86 0 -150.5 28.5t-95 62.5t-75.5 62.5t-95 28.5q-57 0 -84.5 -28.5t-33.5 -108.5h-107z" />
+<glyph unicode="&#x2000;" horiz-adv-x="1010" />
+<glyph unicode="&#x2001;" horiz-adv-x="2021" />
+<glyph unicode="&#x2002;" horiz-adv-x="1010" />
+<glyph unicode="&#x2003;" horiz-adv-x="2021" />
+<glyph unicode="&#x2004;" horiz-adv-x="673" />
+<glyph unicode="&#x2005;" horiz-adv-x="505" />
+<glyph unicode="&#x2006;" horiz-adv-x="336" />
+<glyph unicode="&#x2007;" horiz-adv-x="336" />
+<glyph unicode="&#x2008;" horiz-adv-x="252" />
+<glyph unicode="&#x2009;" horiz-adv-x="404" />
+<glyph unicode="&#x200a;" horiz-adv-x="112" />
+<glyph unicode="&#x2010;" horiz-adv-x="694" d="M63 625v131h566v-131h-566z" />
+<glyph unicode="&#x2011;" horiz-adv-x="694" d="M63 625v131h566v-131h-566z" />
+<glyph unicode="&#x2012;" horiz-adv-x="694" d="M63 625v131h566v-131h-566z" />
+<glyph unicode="&#x2013;" horiz-adv-x="903" d="M63 625v131h777v-131h-777z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1413" d="M63 625v131h1285v-131h-1285z" />
+<glyph unicode="&#x2018;" horiz-adv-x="462" d="M90 1346q0 88 73 166.5t169 115.5q-66 -96 -66 -201q0 -92 105 -92q-27 -109 -150 -108q-59 0 -95 33t-36 86z" />
+<glyph unicode="&#x2019;" horiz-adv-x="462" d="M90 1518q12 55 54 82.5t96 27.5q59 0 95 -32.5t36 -86.5q0 -88 -73 -167.5t-169 -116.5q66 104 66 200q-1 93 -105 93z" />
+<glyph unicode="&#x201a;" horiz-adv-x="462" d="M90 98q25 113 150 113q59 0 95 -34t36 -89q0 -86 -73 -165t-169 -118q66 106 66 203q-1 90 -105 90z" />
+<glyph unicode="&#x201c;" horiz-adv-x="925" d="M90 1346q0 88 73 166.5t169 115.5q-66 -96 -66 -201q0 -92 105 -92q-27 -109 -150 -108q-59 0 -95 33t-36 86zM553 1346q0 88 72.5 166.5t169.5 115.5q-66 -96 -66 -201q0 -92 105 -92q-27 -109 -150 -108q-59 0 -95 33t-36 86z" />
+<glyph unicode="&#x201d;" horiz-adv-x="925" d="M90 1518q12 55 54 82.5t96 27.5q59 0 95 -32.5t36 -86.5q0 -88 -73 -167.5t-169 -116.5q66 104 66 200q-1 93 -105 93zM553 1518q12 55 54 82.5t95 27.5q59 0 95.5 -32.5t36.5 -86.5q0 -88 -73 -167.5t-169 -116.5q66 104 65 200q0 93 -104 93z" />
+<glyph unicode="&#x201e;" horiz-adv-x="925" d="M90 98q25 113 150 113q59 0 95 -34t36 -89q0 -86 -73 -165t-169 -118q66 106 66 203q-1 90 -105 90zM553 98q25 113 149 113q59 0 95.5 -34t36.5 -89q0 -86 -73 -165t-169 -118q66 106 65 203q0 90 -104 90z" />
+<glyph unicode="&#x2022;" horiz-adv-x="700" d="M90 780q0 100 70.5 160.5t193.5 60.5t189.5 -59t66.5 -161.5t-66.5 -162t-189.5 -59.5t-193.5 61.5t-70.5 159.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="2242" d="M90 92q0 53 36 86t99.5 33t98 -33t34.5 -86q0 -55 -34.5 -87t-98 -32t-99.5 34t-36 85zM987 92q0 53 36 86t99.5 33t98 -33t34.5 -86q0 -55 -34.5 -87t-98 -32t-99.5 34t-36 85zM1884 92q0 53 36 86t99.5 33t98 -33t34.5 -86q0 -55 -34.5 -87t-98 -32t-99.5 34t-36 85z " />
+<glyph unicode="&#x202f;" horiz-adv-x="404" />
+<glyph unicode="&#x2039;" horiz-adv-x="446" d="M63 641v168l318 291v-168l-221 -207l221 -211v-164z" />
+<glyph unicode="&#x203a;" horiz-adv-x="446" d="M63 350v164l224 211l-224 207v168l318 -291v-168z" />
+<glyph unicode="&#x205f;" horiz-adv-x="505" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1103" d="M20 477l23 107h86v186h-109l23 107h100q41 252 183.5 373.5t418.5 121.5q168 0 314 -84l-66 -129q-111 63 -233 64q-184 0 -261 -72t-93 -274h446l-57 -107h-398v-186h308l-56 -107h-248q12 -205 79 -283.5t229 -78.5q96 0 156.5 24.5t113.5 79.5l90 -100 q-76 -78 -166 -113t-239 -35q-264 0 -386 118t-145 388h-113z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1335" d="M51 1382v187h473v-187h-49q-4 111 -29 111h-90v-743h-135v743h-90q-25 0 -29 -111h-51zM641 750v819h164l139 -492l156 492h141v-819h-133v610l-193 -629l-186 633v-614h-88z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1265" d="M0 1265h1265v-1265h-1265v1265z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1112" d="M20 1137v127h109q2 209 109.5 286.5t289.5 77.5q139 0 199 -55l-45 -109q-57 47 -145 47q-164 0 -166 -247h260v-127h-260v-1137h-242v1137h-109zM766 1522q0 53 36 84.5t99 31.5q61 0 96 -31.5t35 -85t-34.5 -85t-96.5 -31.5q-63 0 -99 33t-36 84zM774 0v1223l242 59 v-1282h-242z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1097" d="M20 1137v127h109q2 209 109.5 286.5t289.5 77.5q139 0 199 -55l-45 -109q-57 47 -145 47q-164 0 -166 -247h260v-127h-260v-1137h-242v1137h-109zM764 0v1569l242 59v-1628h-242z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1784" d="M1438 1522q0 53 36 84.5t99 31.5q61 0 96 -31.5t35 -85t-34.5 -85t-96.5 -31.5q-63 0 -99 33t-36 84zM1446 0v1223l242 59v-1282h-242zM693 1137v127h109q2 209 109.5 286.5t289.5 77.5q139 0 199 -55l-45 -109q-57 47 -145 47q-164 0 -166 -247h260v-127h-260v-1137 h-242v1137h-109zM20 1137v127h109q2 209 109.5 286.5t289.5 77.5q139 0 199 -55l-45 -109q-57 47 -145 47q-164 0 -166 -247h260v-127h-260v-1137h-242v1137h-109z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1769" d="M1436 0v1569l242 59v-1628h-242zM693 1137v127h109q2 209 109.5 286.5t289.5 77.5q139 0 199 -55l-45 -109q-57 47 -145 47q-164 0 -166 -247h260v-127h-260v-1137h-242v1137h-109zM20 1137v127h109q2 209 109.5 286.5t289.5 77.5q139 0 199 -55l-45 -109q-57 47 -145 47 q-164 0 -166 -247h260v-127h-260v-1137h-242v1137h-109z" />
+</font>
+</defs></svg> 
\ No newline at end of file
blob - /dev/null
blob + 78426e5909cd575c802adf80d38ae32de81ebc6a (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/dream_orphanage_rg-webfont.ttf differ
blob - /dev/null
blob + 6d2d440501bdef30f95c3ee732e53d5d79053ef7 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/dream_orphanage_rg-webfont.woff differ
blob - /dev/null
blob + 39a058be327d08b0411f43b6277536ef42ddafad (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/specimen_files/dream_orphanage_rg-cleartype.png differ
blob - /dev/null
blob + 167f53b7299c6866fa7f47ee9f9cfcbadb0ef436 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/specimen_files/easytabs.js
@@ -0,0 +1,7 @@
+(function($){$.fn.easyTabs=function(option){var param=jQuery.extend({fadeSpeed:"fast",defaultContent:1,activeClass:'active'},option);$(this).each(function(){var thisId="#"+this.id;if(param.defaultContent==''){param.defaultContent=1;}
+if(typeof param.defaultContent=="number")
+{var defaultTab=$(thisId+" .tabs li:eq("+(param.defaultContent-1)+") a").attr('href').substr(1);}else{var defaultTab=param.defaultContent;}
+$(thisId+" .tabs li a").each(function(){var tabToHide=$(this).attr('href').substr(1);$("#"+tabToHide).addClass('easytabs-tab-content');});hideAll();changeContent(defaultTab);function hideAll(){$(thisId+" .easytabs-tab-content").hide();}
+function changeContent(tabId){hideAll();$(thisId+" .tabs li").removeClass(param.activeClass);$(thisId+" .tabs li a[href=#"+tabId+"]").closest('li').addClass(param.activeClass);if(param.fadeSpeed!="none")
+{$(thisId+" #"+tabId).fadeIn(param.fadeSpeed);}else{$(thisId+" #"+tabId).show();}}
+$(thisId+" .tabs li").click(function(){var tabId=$(this).find('a').attr('href').substr(1);changeContent(tabId);return false;});});}})(jQuery);
\ No newline at end of file
blob - /dev/null
blob + 3d6aef783a908415e66bb296d4e4bbb7366f0bcb (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/specimen_files/grid_12-825-55-15.css
@@ -0,0 +1,129 @@
+/*Notes about grid:
+Columns:      12
+Grid Width:   825px
+Column Width: 55px
+Gutter Width: 15px
+-------------------------------*/
+ 
+ 
+ 
+.section 		{margin-bottom: 18px;
+}
+.section:after	{content: ".";display: block;height: 0;clear: both;visibility: hidden;}
+.section 		{*zoom: 1;}
+ 
+.section .firstcolumn,
+.section .firstcol {margin-left: 0;}
+ 
+ 
+/* Border on left hand side of a column. */
+.border {
+  padding-left: 7px;
+  margin-left: 7px;
+  border-left: 1px solid #eee;
+}
+ 
+/* Border with more whitespace, spans one column. */
+.colborder {
+    padding-left: 42px;
+  margin-left: 42px;
+  border-left: 1px solid #eee;
+}
+ 
+
+ 
+/* The Grid Classes */
+.grid1, .grid1_2cols, .grid1_3cols, .grid1_4cols, .grid2, .grid2_3cols, .grid2_4cols, .grid3, .grid3_2cols, .grid3_4cols, .grid4, .grid4_3cols, .grid5, .grid5_2cols, .grid5_3cols, .grid5_4cols, .grid6, .grid6_4cols, .grid7, .grid7_2cols, .grid7_3cols, .grid7_4cols, .grid8, .grid8_3cols, .grid9, .grid9_2cols, .grid9_4cols, .grid10, .grid10_3cols, .grid10_4cols, .grid11, .grid11_2cols, .grid11_3cols, .grid11_4cols, .grid12
+{margin-left: 15px;float: left;display: inline; overflow: hidden;}
+ 
+ 
+.width1, .grid1, .span-1 {width: 55px;}
+.width1_2cols,.grid1_2cols {width: 20px;}
+.width1_3cols,.grid1_3cols  {width: 8px;}
+.width1_4cols,.grid1_4cols  {width: 2px;}
+.input_width1 {width: 49px;}
+ 
+.width2, .grid2, .span-2 {width: 125px;}
+.width2_3cols,.grid2_3cols  {width: 31px;}
+.width2_4cols,.grid2_4cols  {width: 20px;}
+.input_width2 {width: 119px;}
+ 
+.width3, .grid3, .span-3 {width: 195px;}
+.width3_2cols,.grid3_2cols {width: 90px;}
+.width3_4cols,.grid3_4cols  {width: 37px;}
+.input_width3 {width: 189px;}
+ 
+.width4, .grid4, .span-4 {width: 265px;}
+.width4_3cols,.grid4_3cols  {width: 78px;}
+.input_width4 {width: 259px;}
+ 
+.width5, .grid5, .span-5 {width: 335px;}
+.width5_2cols,.grid5_2cols {width: 160px;}
+.width5_3cols,.grid5_3cols  {width: 101px;}
+.width5_4cols,.grid5_4cols  {width: 72px;}
+.input_width5 {width: 329px;}
+ 
+.width6, .grid6, .span-6 {width: 405px;}
+.width6_4cols,.grid6_4cols  {width: 90px;}
+.input_width6 {width: 399px;}
+ 
+.width7, .grid7, .span-7 {width: 475px;}
+.width7_2cols,.grid7_2cols {width: 230px;}
+.width7_3cols,.grid7_3cols  {width: 148px;}
+.width7_4cols,.grid7_4cols  {width: 107px;}
+.input_width7 {width: 469px;}
+ 
+.width8, .grid8, .span-8 {width: 545px;}
+.width8_3cols,.grid8_3cols  {width: 171px;}
+.input_width8 {width: 539px;}
+ 
+.width9, .grid9, .span-9 {width: 615px;}
+.width9_2cols,.grid9_2cols {width: 300px;}
+.width9_4cols,.grid9_4cols  {width: 142px;}
+.input_width9 {width: 609px;}
+ 
+.width10, .grid10, .span-10 {width: 685px;}
+.width10_3cols,.grid10_3cols  {width: 218px;}
+.width10_4cols,.grid10_4cols  {width: 160px;}
+.input_width10 {width: 679px;}
+ 
+.width11, .grid11, .span-11 {width: 755px;}
+.width11_2cols,.grid11_2cols {width: 370px;}
+.width11_3cols,.grid11_3cols  {width: 241px;}
+.width11_4cols,.grid11_4cols  {width: 177px;}
+.input_width11 {width: 749px;}
+ 
+.width12, .grid12, .span-12 {width: 825px;}
+.input_width12 {width: 819px;}
+ 
+/* Subdivided grid spaces */
+.emptycols_left1, .prepend-1 {padding-left: 70px;}
+.emptycols_right1, .append-1 {padding-right: 70px;}
+.emptycols_left2, .prepend-2 {padding-left: 140px;}
+.emptycols_right2, .append-2 {padding-right: 140px;}
+.emptycols_left3, .prepend-3 {padding-left: 210px;}
+.emptycols_right3, .append-3 {padding-right: 210px;}
+.emptycols_left4, .prepend-4 {padding-left: 280px;}
+.emptycols_right4, .append-4 {padding-right: 280px;}
+.emptycols_left5, .prepend-5 {padding-left: 350px;}
+.emptycols_right5, .append-5 {padding-right: 350px;}
+.emptycols_left6, .prepend-6 {padding-left: 420px;}
+.emptycols_right6, .append-6 {padding-right: 420px;}
+.emptycols_left7, .prepend-7 {padding-left: 490px;}
+.emptycols_right7, .append-7 {padding-right: 490px;}
+.emptycols_left8, .prepend-8 {padding-left: 560px;}
+.emptycols_right8, .append-8 {padding-right: 560px;}
+.emptycols_left9, .prepend-9 {padding-left: 630px;}
+.emptycols_right9, .append-9 {padding-right: 630px;}
+.emptycols_left10, .prepend-10 {padding-left: 700px;}
+.emptycols_right10, .append-10 {padding-right: 700px;}
+.emptycols_left11, .prepend-11 {padding-left: 770px;}
+.emptycols_right11, .append-11 {padding-right: 770px;}
+.pull-1 {margin-left: -70px;}
+.push-1 {margin-right: -70px;margin-left: 18px;float: right;}
+.pull-2 {margin-left: -140px;}
+.push-2 {margin-right: -140px;margin-left: 18px;float: right;}
+.pull-3 {margin-left: -210px;}
+.push-3 {margin-right: -210px;margin-left: 18px;float: right;}
+.pull-4 {margin-left: -280px;}
+.push-4 {margin-right: -280px;margin-left: 18px;float: right;}
\ No newline at end of file
blob - /dev/null
blob + aecc43c32ce0ee6e9e448361a7ed21808c8af690 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/specimen_files/specimen_stylesheet.css
@@ -0,0 +1,396 @@
+@import url('grid_12-825-55-15.css');
+
+/*  
+	CSS Reset by Eric Meyer - Released under Public Domain
+    http://meyerweb.com/eric/tools/css/reset/
+*/
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center, dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend, table, 
+caption, tbody, tfoot, thead, tr, th, td 
+                  {margin: 0;padding: 0;border: 0;outline: 0;
+                  font-size: 100%;vertical-align: baseline;
+                  background: transparent;}
+body              {line-height: 1;}
+ol, ul            {list-style: none;}
+blockquote, q     {quotes: none;}
+blockquote:before, blockquote:after,
+q:before, q:after {content: '';	content: none;}
+:focus            {outline: 0;}
+ins               {text-decoration: none;}
+del               {text-decoration: line-through;}
+table             {border-collapse: collapse;border-spacing: 0;}
+
+
+
+
+body {
+	color: #000;
+	background-color: #dcdcdc;
+}
+
+a {
+	text-decoration: none;
+	color: #1883ba;
+}
+
+h1{
+	font-size: 32px;
+	font-weight: normal;
+	font-style: normal;
+	margin-bottom: 18px;
+}
+
+h2{
+	font-size: 18px;
+}
+
+#container {
+	width: 865px;
+	margin: 0px auto;
+}
+
+
+#header {
+	padding: 20px;
+	font-size: 36px;
+	background-color: #000;
+	color: #fff;
+}
+
+#header span {
+	color: #666;
+}
+#main_content {
+	background-color: #fff;
+	padding: 60px 20px 20px;
+}
+
+
+#footer p {
+	margin: 0;
+	padding-top: 10px;
+	padding-bottom: 50px;
+	color: #333;
+	font: 10px Arial, sans-serif;
+}
+
+.tabs {
+	width: 100%;
+	height: 31px;
+	background-color: #444;
+}
+.tabs li {
+	float:  left;
+	margin: 0;
+	overflow: hidden;
+	background-color: #444;
+}
+.tabs li a {
+	display: block;
+	color: #fff;
+	text-decoration: none;
+	font: bold 11px/11px 'Arial';
+	text-transform: uppercase;
+	padding: 10px 15px;
+	border-right: 1px solid #fff;
+}
+
+.tabs li a:hover {
+		background-color: #00b3ff;
+
+}
+
+.tabs li.active a {
+	color:  #000;
+	background-color: #fff;
+}
+
+
+
+div.huge {
+	
+	font-size: 300px;
+	line-height: 1em;
+	padding: 0;
+	letter-spacing: -.02em;
+	overflow: hidden;
+}
+div.glyph_range {
+	font-size: 72px;
+	line-height: 1.1em;
+}
+
+.size10{ font-size: 10px; }
+.size11{ font-size: 11px; }
+.size12{ font-size: 12px; }
+.size13{ font-size: 13px; }
+.size14{ font-size: 14px; }
+.size16{ font-size: 16px; }
+.size18{ font-size: 18px; }
+.size20{ font-size: 20px; }
+.size24{ font-size: 24px; }
+.size30{ font-size: 30px; }
+.size36{ font-size: 36px; }
+.size48{ font-size: 48px; }
+.size60{ font-size: 60px; }
+.size72{ font-size: 72px; }
+.size90{ font-size: 90px; }
+
+
+.psample_row1 {	height: 120px;}
+.psample_row1 {	height: 120px;}
+.psample_row2 {	height: 160px;}
+.psample_row3 {	height: 160px;}
+.psample_row4 {	height: 160px;}
+
+.psample {
+	overflow: hidden;
+	position: relative;
+}
+.psample p {
+	line-height: 1.3em;
+	display: block;
+	overflow: hidden;
+	margin: 0;
+}
+
+.psample span {
+	margin-right: .5em;
+}
+
+.white_blend {
+	width: 100%;
+	height: 61px;
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNrs3TsKgFAMRUE/eer+NxztxMYuEWQG3ECKwwUF58ycAKixOAGAyAKILAAiCyCyACILgMgCiCyAyAIgsgAiCyCyAIgsgMgCiCwAIgsgsgAiC4DIAogsACIL0CWuZ3UGgLrIhjMA1EV2OAOAJQtgyQLwjOzmDAAiCyCyAIgsQFtkd2cAEFkAkQVAZAHaIns4A4AlC2DJAiCyACILILIAiCzAV5H1dQGAJQsgsgCILIDIAvwisl58AViyAJYsACILILIAIgvAe2T9EhxAZAFEFgCRBeiL7HAGgLrIhjMAWLIAliwAt1OAAQDwygTBulLIlQAAAABJRU5ErkJggg==);
+	position: absolute;
+	bottom: 0;
+}
+.black_blend {
+	width: 100%;
+	height: 61px;
+	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPJJREFUeNrs3TEKhTAQRVGjibr/9QoxhY2N3Ywo50A28IrLwP9g6b1PAMSYTQAgsgAiC4DIAogsgMgCILIAIgsgsgCILIDIAogsACILILIAIguAyAKILIDIAiCyACILgMgCZCnjLWYAiFGvB0BQZJsZAFyyAC5ZAO6RXc0AILIAIguAyAKkRXYzA4DIAogsACILkBbZ3QwALlkAlywAIgsgsgAiC4DIArwVWf8uAHDJAogsACILILIAv4isH74AXLIALlkARBZAZAFEFoDnyPokOIDIAogsACILkBfZZgaAuMhWMwC4ZAE+p4x3mAEgxinAAJ+XBbPWGkwAAAAAAElFTkSuQmCC);
+	position: absolute;
+	bottom: 0;
+}
+.fullreverse {
+	background:  #000 !important;
+	color:  #fff !important;
+	margin-left: -20px;
+	padding-left: 20px;
+	margin-right: -20px;
+	padding-right: 20px;
+	padding: 20px;
+	margin-bottom:0;
+}
+
+
+.sample_table td {
+	padding-top: 3px;
+	padding-bottom:5px;
+	padding-left: 5px;
+	vertical-align: middle;
+	line-height: 1.2em;
+}
+
+.sample_table td:first-child {
+	background-color: #eee;
+	text-align: right;
+	padding-right: 5px;
+	padding-left: 0;
+	padding: 5px;
+	font: 11px/12px "Courier New", Courier, mono;
+}
+
+code {
+	white-space: pre;
+	background-color: #eee;
+	display: block;
+	padding: 10px;
+	margin-bottom: 18px;
+	overflow: auto;
+}
+
+
+.bottom,.last 	{margin-bottom:0 !important; padding-bottom:0 !important;}
+
+.box  { 
+  padding: 18px; 
+  margin-bottom: 18px; 
+  background: #eee; 
+}
+
+.reverse,.reversed { background:  #000 !important;color:  #fff !important; border: none !important;}
+
+#bodycomparison {
+	position: relative;
+	overflow: hidden;
+	font-size: 72px;
+	height: 90px;
+	white-space: nowrap;
+}
+
+#bodycomparison div{
+	font-size: 72px;
+	line-height: 90px;
+	display: inline;
+	margin: 0 15px 0 0;
+	padding: 0;
+}
+
+#bodycomparison div span{
+	font: 10px Arial;
+	position: absolute;
+	left: 0;
+}
+#xheight {
+	float: none;
+	position: absolute;
+	color: #d9f3ff;
+	font-size: 72px;
+	line-height: 90px;
+}
+
+.fontbody {
+ position: relative;
+}
+.arialbody{
+	font-family: Arial;
+	position: relative;
+}
+.verdanabody{
+	font-family: Verdana;
+	position: relative;
+}
+.georgiabody{
+	font-family: Georgia;
+	position: relative;
+}
+
+/* @group Layout page
+ */
+
+#layout h1 {
+	font-size: 36px;
+	line-height: 42px;
+	font-weight: normal;
+	font-style: normal;
+}
+
+#layout h2 {
+	font-size: 24px;
+	line-height: 23px;
+	font-weight: normal;
+	font-style: normal;
+}
+
+#layout h3 {
+	font-size: 22px;
+	line-height: 1.4em;
+	margin-top: 1em;
+	font-weight: normal;
+	font-style: normal;
+}
+
+
+#layout p.byline {
+	font-size: 12px;
+	margin-top: 18px;
+	line-height: 12px;
+	margin-bottom: 0;
+}
+#layout p {
+	font-size: 14px;
+	line-height: 21px;
+	margin-bottom: .5em;
+}
+
+#layout p.large{
+	font-size: 18px;
+	line-height: 26px;
+}
+
+#layout .sidebar p{
+	font-size: 12px;
+	line-height: 1.4em;
+}
+
+#layout p.caption {
+	font-size: 10px;
+	margin-top: -16px;
+	margin-bottom: 18px;
+}
+
+/* @end */
+
+/* @group Glyphs */
+
+#glyph_chart div{
+	background-color: #d9f3ff;
+	color: black;
+	float: left;
+	font-size: 36px;
+	height: 1.2em;
+	line-height: 1.2em;
+	margin-bottom: 1px;
+	margin-right: 1px;
+	text-align: center;
+	width: 1.2em;
+	position: relative;
+	padding: .6em .2em .2em;
+}
+
+#glyph_chart div p {
+	position: absolute;
+	left: 0;
+	top: 0;
+	display: block;
+	text-align: center;
+	font: bold 9px Arial, sans-serif;
+	background-color: #3a768f;
+	width: 100%;
+	color: #fff;
+	padding: 2px 0;
+}
+
+
+#glyphs h1 {
+	font-family: Arial, sans-serif;
+}
+/* @end */
+
+/* @group Installing */
+
+#installing {
+	font: 13px Arial, sans-serif;
+}
+
+#installing p,
+#glyphs p{
+	line-height: 1.2em;
+	margin-bottom: 18px;
+	font: 13px Arial, sans-serif;
+}
+
+
+
+#installing h3{
+	font-size: 15px;
+	margin-top: 18px;
+}
+
+/* @end */
+
+#rendering h1 {
+	font-family: Arial, sans-serif;
+}
+.render_table td {
+	font: 11px "Courier New", Courier, mono;
+	vertical-align: middle;
+}
+
+
blob - /dev/null
blob + 281d9b1b632183b5a55ac2ef60322bbdd0d238ba (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/fonts/dreamorphanage_regular_macroman/stylesheet.css
@@ -0,0 +1,36 @@
+/*
+ * Web Fonts from fontspring.com
+ *
+ * All OpenType features and all extended glyphs have been removed.
+ * Fully installable fonts can be purchased at http://www.fontspring.com
+ *
+ * The fonts included in this stylesheet are subject to the End User License you purchased
+ * from Fontspring. The fonts are protected under domestic and international trademark and 
+ * copyright law. You are prohibited from modifying, reverse engineering, duplicating, or
+ * distributing this font software.
+ *
+ * (c) 2010-2011 Fontspring
+ *
+ *
+ *
+ *
+ * The fonts included are copyrighted by the vendor listed below.
+ *
+ * Vendor:      Typodermic
+ * License URL: http://www.fontspring.com/fflicense/typodermic
+ *
+ *
+ */
+
+@font-face {
+    font-family: 'DreamOrphanageRegular';
+    src: url('dream_orphanage_rg-webfont.eot');
+    src: url('dream_orphanage_rg-webfont.eot?iefix') format('eot'),
+         url('dream_orphanage_rg-webfont.woff') format('woff'),
+         url('dream_orphanage_rg-webfont.ttf') format('truetype'),
+         url('dream_orphanage_rg-webfont.svg#webfontQbNt380i') format('svg');
+    font-weight: normal;
+    font-style: normal;
+
+}
+
blob - /dev/null
blob + 553b06c6cc54e238dd87b442408f6f38c06e31ec (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/ie7.css
@@ -0,0 +1,2 @@
+#head h1{ margin-top:0; }
+#head .sitetag{ margin-bottom:0; }
\ No newline at end of file
blob - /dev/null
blob + 0d64583607c17e0d20a39c9e5fef737d189dc5d8 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/mini-nav-left.gif differ
blob - /dev/null
blob + 91601908b9684292bb3dd62170972908b61a8668 (mode 644)
Binary files /dev/null and pub/skins/CleanSimple/mainstyle/mini-nav-right.gif differ
blob - /dev/null
blob + 99a5418bb7ccdd7f99839b1a62fadadb2c4f2846 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/mainstyle/style.css
@@ -0,0 +1,485 @@
+@import url('fonts/Nobile-fontfacekit/stylesheet.css');

+@import url('fonts/dreamorphanage_regular_macroman/stylesheet.css');

+

+* {

+	margin: 0;

+	padding: 0;

+	}

+embed {

+	display: block;

+	margin: 15px auto 15px auto;

+	text-align: center;

+}

+body {

+	width: 960px;

+	margin: 0 auto;

+	font-family: 'NobileRegular', Lucida Grande, Trebuchet MS, Arial, sans-serif;

+	font-size: 400 0.5em;

+	color: #242424;

+	}

+body.dark {

+	background-color: #222;

+	}

+/* Insert 

+	display: none;

+	into #nav, if you do not wish to display the nav tab options up in the top corner of the template.

+

+*/

+#nav {

+	margin: 0.3em 0;

+	width: 100%;

+	padding: 2px 0;

+/*	display: none; */

+}

+

+#nav ul {

+	list-style: none;

+	padding: 0;

+	margin: 0;

+	float: right;

+	}

+

+#nav li {

+	float: left;

+	clear: none;

+	}

+

+#nav li a {

+	margin-left: 40px;

+	padding-top: 20px;

+	display: block;

+	text-decoration: none;

+	font: 400 1.em 'trebuchet ms',arial,sans-serif;

+	color: #242424;

+	letter-spacing: -1px;

+	}

+

+#nav li a:hover {

+	background: #FFF url('arrow.gif') no-repeat top center;

+	}

+body.dark #nav li a:hover {

+	background: #222 url('arrow_dark.gif') no-repeat top center;

+	}

+

+#head {

+	margin: 0.5em 0 0px 0;

+	width: 100%;

+	line-height: 0.8em;

+}

+

+#head h1 {

+	font: 400 4em "DreamOrphanageRegular", arial,sans-serif;

+	color: #242424;

+	margin-top: 10px;

+	margin-bottom: 0px;

+	padding-bottom: 0px;

+	height: 1.15em;

+	letter-spacing: -3px;

+}

+#head h1 a {

+	color: #242424;

+	text-decoration: none;

+	}

+body.dark #head h1, body.dark #head h1 a {

+	color: #FFF;

+	}

+#head h2, #head .sitetag {

+	font: 400 2em 'NobileRegular', Lucida Grande, Trebuchet MS, Arial, sans-serif;

+	margin-top: -0.7em;

+	padding: 0;

+	letter-spacing: -0.1em;

+}

+#header img {

+	display:none;

+}

+.main {

+	position: relative;

+	margin: 50px 0 0 0;

+	padding: 0;

+	width: 100%;

+	}

+

+#right {

+	width: 165px;

+	float: right;

+	border-top: 5px solid #ECECEC;

+	padding-top: 10px;

+	text-align: right;

+	margin-bottom: 40px;

+	margin-right:2px;

+	font-size: 8pt;

+	}

+body.dark #right {

+	border-top: 5px solid #191919;

+	}

+#right ul, .right2 ul {

+	list-style: none;

+	margin: 0 0 20px 0;

+	padding: 0;

+	}

+

+#right li, .right2 li, .sidehead a {

+	padding: 5px 0 5px 20px;

+	}

+

+#right li a, .right2 li a, .sidehead a {

+	padding: 0 0 0 20px;

+	color: #242424;

+	font-size: 1.1em;

+	text-decoration: none;

+	}

+body.dark #right li a, body.dark .right2 li a, .sidehead a {

+	color: #666;

+	}

+#right li a:hover, .right2 li a:hover, .sidehead a:hover {

+	background: #FFF url('bullet.gif') no-repeat left center;

+	}

+body.dark #right li a:hover, body.dark .right2 li a:hover, body.dark .sidehead a:hover {

+	background: #222 url('bullet_dark.gif') no-repeat left center;

+	}

+

+body.dark #content {

+	border-top: 5px solid #191919;

+	}

+h2, #content h2.page-head a {

+	font: 400 28pt 'NobileRegular', Lucida Grande, Trebuchet MS, Arial, sans-serif;

+	color: #444;

+	letter-spacing: -0.1em;

+	margin-top:0px;

+	margin-bottom: 15px;

+	}

+body.dark h2, body.dark #content h2.page-head a {

+	color: #CCC;

+	}

+h3 {

+	font: 400 14pt 'NobileRegular', Lucida Grande, Trebuchet MS, Arial, sans-serif;

+	color: #242424;

+	margin-top: 10px;

+	margin-bottom:15px;

+	padding-top: 0px;

+	letter-spacing: -1px;

+	}

+

+h4, p.sidehead, h4 a, p.sidehead a {

+	font: 200 1.2em arial,sans-serif;

+	color: #242424;

+	letter-spacing: -0.1em;

+	margin-bottom: 10px;

+	text-transform: uppercase;

+	}

+h4, h4 a {

+	font-family: 'NobileRegular', Lucida Grande, Trebuchet MS, Arial, sans-serif;

+	color: #242424;

+	letter-spacing: -0.05em;

+	font-size: 10pt;

+	margin-top: 10px;

+	font-weight:bold;

+	text-transform:none;

+}

+body.dark h4, body.dark p.sidehead, body.dark h4 a, body.dark p.sidehead a {

+	color: #AAA;

+	}

+#content {

+	font-size: 8pt;

+	float: left;

+	width: 82%;

+	border-top: 5px solid #ECECEC;

+	padding-top: 10px;

+	margin-bottom: 40px;

+	}

+p {

+	line-height: 1.8em;

+	margin: 10px 0 10px 0;

+	color: #242424;

+	font-size: 8pt;

+	}

+

+#content a, #content2 a, #foot a, .blogit-listmore a, #right a {

+	text-decoration: none;

+	color: #616161;

+}

+

+#content a:hover, #content2 a:hover, #foot a:hover, .blogit-listmore a:hover, #right a:hover {

+	border-bottom: none;

+	}

+

+img.content, a img.content {

+	float: right;

+	padding: 4px;

+	border: 1px solid #D6D6D6;

+	margin: 10px 0 10px 10px;

+	}

+body.dark img.content, body.dark a img.content {

+	border: 1px solid #444;

+	}

+a:hover img.content {

+	border: 1px solid #BBB;

+	}

+body.dark a:hover img.content {

+	border: 1px solid #000;

+	}

+

+img.color, a img.color {

+	float: left;

+	padding: 1px;

+	border: 1px solid #CCC;

+	margin: 0 8px 0 0;

+	}

+body.dark img.color, body.dark a img.color {

+	border: 1px solid #444;

+	}

+

+a:hover img.color {

+	border: 1px solid #999;

+	}

+

+.right2 {

+	float: right;

+	width: 160px;

+	margin-left: 15px;

+	padding-top: 40px;

+	border-top: 5px solid #ECECEC;

+	text-align: right;

+	font-size: 0.9em;

+	}

+body.dark .right2 {

+	border-top: 5px solid #191919;

+	}

+.right2 h3 {

+	letter-spacing: -1px;

+	}

+

+#content2 {

+	margin-right: 365px;

+	border-top: 5px solid #ECECEC;

+	padding-top: 40px;

+	}

+body.dark #content2 {

+	border-top: 5px solid #191919;

+	}

+ol {

+	color: #242424;

+	font: 400 1.0em arial,sans-serif;

+	}

+

+ol span {

+	color: #242424;

+	font-style: normal;

+	}

+

+ol li {

+	margin-left: 25px;

+	padding: 4px 0

+	}

+

+#content ul, #content2 ul {

+	list-style-type: none;

+	padding-left: 10px;

+	padding-bottom: 10px;

+	color: #242424;	}

+

+#content ul li, #content2 ul li {

+	padding-left: 17px;

+	background: url('bullet2.gif') no-repeat left .5em;

+	margin-left: 10px;

+	}

+body.dark #content ul li, body.dark #content2 ul li {

+	background: url('bullet2_dark.gif') no-repeat left .5em;

+	}

+

+table {

+  width: 100%;

+  margin-bottom: 20px;

+  font-size: 1em;

+  border-collapse: collapse;

+}

+

+table caption {

+  margin-top: 20px;

+  padding: 0 0 0.5em 3px;

+  font: 400 1.2em arial,sans-serif;

+  text-align: left;

+  letter-spacing: -1px;

+}

+

+table th,

+table td {

+  text-align: left;

+  vertical-align: top;

+  padding: 4px 7px !important;

+  padding: 6px 10px;

+}

+

+

+thead th {

+  border-top: 2px solid #CCC;

+  border-bottom: 1px solid #CCC;

+}

+body.dark thead th {

+  border-top: 2px solid #0C0C0C;

+  border-bottom: 1px solid #0C0C0C;

+}

+

+

+tbody td {

+  border-bottom: 1px solid #ECECEC;

+}

+body.dark tbody td {

+  border-bottom: 1px solid #191919;

+}

+

+tbody tr:hover {

+  background-color: #F0F0F0;

+}

+body.dark tbody tr:hover {

+  background-color: #202020;

+}

+

+.blockquote, #wikitext .escaped {

+	width: 100%;

+	border-top: 1px solid #E0E0E0;

+	font-size: 9pt !important;

+	border-bottom: 1px solid #E0E0E0;

+	background-color: #F0F0F0;

+	margin: 10px 0 20px 10px;

+}

+body.dark .blockquote, body.dark #wikitext .escaped {

+	border-top: 1px solid #191919;

+	border-bottom: 1px solid #191919;

+	background-color: #202020;

+	}

+

+form label{

+	display:block;

+	}

+

+form input.inputbox, form input.text, form textarea, input[type=text]{

+	border:1px #E0E0E0 solid;

+	color:#242424;

+	padding:4px 5px;

+	font:12px Arial,san-serif;

+	background-color: #F3F3F3;

+	}

+form textarea{

+	width:100%;

+	}

+body.dark form input.inputbox, body.dark form input.text, body.dark form textarea, body.dark form input[type=text]{

+	border:1px #111 solid;

+	background-color: #191919;

+	}

+

+form input.text:hover, form textarea:hover, form input[type=text]:hover{

+	border:1px #E0E0E0 solid;

+	}

+body.dark form input.text:hover, body.dark form textarea:hover, body.dark form input[type=text]:hover{

+	border:1px #111 solid;

+	}

+

+form input.text:focus, form textarea:focus, form input[type=text]:focus{

+	border:1px #CCC solid;

+	color:#242424;

+	}

+body.dark form input.text:focus, body.dark form textarea:focus, body.dark input[type=text]:focus{

+	border:1px #000 solid;

+	}

+

+form input.button, form input.inputbutton, form input[type=submit]{

+	margin-right:8px;

+	padding:3px 5px;

+	font:12px Arial,san-serif;

+	border:1px solid #CCC;

+	}

+body.dark form input.button, body.dark form input.inputbutton, body.dark form input[type=submit]{

+	border:1px solid #000;

+	}

+

+* html form input.text,

+* html form textarea{

+	border-color: #CCC;

+	color:#242424;

+	}

+* html body.dark form input.text,

+* html body.dark form textarea{

+	border-color: #111;

+	}

+

+#foot {

+	width: 100%;

+	border-top: 3px solid #ECECEC;

+	padding: 0 0 40px 0;

+	margin-top: 40px;

+	clear: both;

+	font-size:7pt;

+	}

+body.dark #foot {

+	border-top: 3px solid #191919;

+	}

+

+/* -- Style Additions */

+.alignleft {float:left;}

+.alignright {float:right;}

+

+/* -- PmWiki */

+#content a.pagegroup, #content h1.page-head a, #content h2.page-head a {border: none;}

+#foot p {float: left;}

+#foot p.credits {float: right;}

+#s { width: 50%; }

+#comment-text { margin-top: 25px; }

+#wikiedit #text { margin-bottom: 25px; }

+#wikiedit form a { border: none; }

+.sidehead a { text-decoration: none; font-size: 1em !important; }

+#right .pageactions li { padding: 1px 0 0 20px; }

+

+#nav a.createlink { display: none; }

+a.createlink { padding: 0 !important; position:relative; top:-0.5em; font-size:.8em !important; }

+#wikitext hr {border:2px solid #ECECEC; margin:2em 0}

+#wikitext .escaped { overflow: auto; height: auto; width: 90%; margin: 1.5em auto; padding: .15em; }

+#wikitext .quickref p, #wikitext .quickref .outdent, #wikitext .quickref div, #wikitext .quickref strong {margin:0; text-align:left; text-indent:0; line-height: 2em}

+#wikiedit, #wikiedit form input[type=submit] { margin-top: 25px; }

+

+.indent { margin-left:40px; }

+.outdent { margin-left:40px; text-indent:-40px; }

+fieldset { margin: 0; padding: 0; border-style: none; }

+.wikimessage {color: red; font-weight: bold; font-size: 110%; }

+.difftype, .diffrestore { clear: none !important; }

+.quickref p { margin:0; padding:0;}

+.quickref br { display: none; }

+

+/* -- BlogIt */

+.metadata { margin-top: -.3em; height: 2.5em; font-size: .8em; }

+.date { float: left; margin-top: -.3em; text-transform: uppercase; font: 400 1.7em 'trebuchet ms',arial,sans-serif; padding-top: 0px; letter-spacing: -1px; }

+.author { text-transform: lowercase; float: left; margin-left: 6px; }

+.author a { text-transform: lowercase; margin-top: 1px; color: #666; }

+.entry-content { clear: left; }

+.entrytags, .comment-count, .editlink { float: right; text-transform: lowercase; }

+.editlink { margin-left: 20px; }

+.blogit-submit-row { padding-top: 10px; }

+.blogit-submit-row img { vertical-align: bottom; padding-bottom: 1px; }

+.blogit-listmore { margin-top: -20px; margin-bottom: 20px; }

+li.comment { margin-top: 10px; }

+li.comment .blogit-comment-header { color:#242424; }

+#head .sitetitle a { display: block; }

+.blogit-page-navigation { clear: both; margin: 20px 0; padding: 20px 0 40px; font-weight: bold; }

+.blogit-newer-entries a { float: left; padding-left: 18px; background: url(mini-nav-left.gif) no-repeat left center; }

+.blogit-older-entries a { float: right;	padding-right: 18px;	background: url(mini-nav-right.gif) no-repeat right center; }

+#commentblock { padding-top: 60px; }

+.entry, .blogit-post-summary { clear: both; }

+.entry { margin-bottom: 60px; }

+

+

+.error, .alert, .notice, .success, .info {padding:0.8em;margin-bottom:15px;border:1px solid #ddd;}

+.error, .alert {background:#fbe3e4;color:#8a1f11;border-color:#fbc2c4;}

+.error, .alert, .notice, .success, .info { width:85% !important; margin:0px auto;	font-family: 'NobileRegular', Lucida Grande, Trebuchet MS, Arial, sans-serif; font-size:8pt; clear:both;}

+.notice {

+	background:#fff6bf;color:#514721;border-color:#ffd324;

+}

+.success {background:#e6efc2;color:#264409;border-color:#c6d880;}

+.info {background:#d5edf8;color:#205791;border-color:#92cae4;}

+.error a, .alert a {color:#8a1f11;}

+.notice a {color:#514721;}

+.success a {color:#264409;}

+.info a {color:#205791;}

+.error p, .alert p, .notice p, .success p, .info p {

+	margin-bottom:0px;

+	color: inherit;

+}
\ No newline at end of file
blob - /dev/null
blob + 1fad53aff916f1869f1db03fd156dd5a8671be5f (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/skin.php
@@ -0,0 +1,91 @@
+<?php if (!defined('PmWiki')) exit();

+/* PmWiki CleanSimple skin

+ *

+ * Examples at: http://pmwiki.com/Cookbook/Choice and http://solidgone.org/Skins/

+ * Copyright (c) 2009 David Gilbert

+ * This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.

+ * Please retain the links in the footer.

+ * http://creativecommons.org/licenses/by-sa/3.0/us/

+ * 

+ *

+ *

+ * Templated cleaned up, updated and greatly improved by CameronW (t94xr)

+ * email: t94xrnz@gmail.com

+ * Renamed to CleanSimple.

+ * Licence: Creative Commons Attribution-Share Alike 3.0 United States License

+ *

+ * 

+ */

+global $FmtPV;

+$FmtPV['$SkinName'] = '"CleanSimple"';

+$FmtPV['$SkinVersion'] = '"1.0"';

+

+global $PageLogoUrl, $PageLogoUrlHeight, $PageLogoUrlWidth, $HTMLStylesFmt ,$SkinTheme;

+if (!empty($PageLogoUrl)) {

+	dg_SetLogoHeightWidth(15, 16);

+	$HTMLStylesFmt['choice'] .=

+		'#head .sitetitle a{height:' .$PageLogoUrlHeight .'; background: url(' .$PageLogoUrl .') left 16px no-repeat} '.

+		'#head .sitetitle a, #head .sitetag{padding-left: ' .$PageLogoUrlWidth .'} ';

+}

+$SkinColor = dg_SetSkinColor('green_muted', array('blue_bold','blue_muted','green_bold','green_muted','orange_bold','orange_muted'));

+$SkinTheme = (isset($_GET['skintheme']) ?'class=\''.$_GET['skintheme'].'\'' :(isset($SkinTheme) ?'class=\''.$SkinTheme.'\'' :'') );

+

+# ----------------------------------------

+# - Standard Skin Setup

+# ----------------------------------------

+$FmtPV['$WikiTitle'] = '$GLOBALS["WikiTitle"]';

+$FmtPV['$WikiTag'] = '$GLOBALS["WikiTag"]';

+

+# Move any (:noleft:) or SetTmplDisplay('PageLeftFmt', 0); directives to variables for access in jScript.

+$FmtPV['$LeftColumn'] = "\$GLOBALS['TmplDisplay']['PageLeftFmt']";

+Markup('noleft', 'directives',  '/\\(:noleft:\\)/ei', "SetTmplDisplay('PageLeftFmt',0)");

+$FmtPV['$RightColumn'] = "\$GLOBALS['TmplDisplay']['PageRightFmt']";

+Markup('noright', 'directives',  '/\\(:noright:\\)/ei', "SetTmplDisplay('PageRightFmt',0)");

+$FmtPV['$ActionBar'] = "\$GLOBALS['TmplDisplay']['PageActionFmt']";

+Markup('noaction', 'directives',  '/\\(:noaction:\\)/ei', "SetTmplDisplay('PageActionFmt',0)");

+$FmtPV['$TabsBar'] = "\$GLOBALS['TmplDisplay']['PageTabsFmt']";

+Markup('notabs', 'directives',  '/\\(:notabs:\\)/ei', "SetTmplDisplay('PageTabsFmt',0)");

+$FmtPV['$SearchBar'] = "\$GLOBALS['TmplDisplay']['PageSearchFmt']";

+Markup('nosearch', 'directives',  '/\\(:nosearch:\\)/ei', "SetTmplDisplay('PageSearchFmt',0)");

+$FmtPV['$TitleGroup'] = "\$GLOBALS['TmplDisplay']['PageTitleGroupFmt']";

+Markup('notitlegroup', 'directives',  '/\\(:notitlegroup:\\)/ei', "SetTmplDisplay('PageTitleGroupFmt',0)");

+Markup('notitle', 'directives',  '/\\(:notitle:\\)/ei', "SetTmplDisplay('PageTitleFmt',0); SetTmplDisplay('PageTitleGroupFmt',0)");

+Markup('fieldset', 'inline', '/\\(:fieldset:\\)/i', "<fieldset>");

+Markup('fieldsetend', 'inline', '/\\(:fieldsetend:\\)/i', "</fieldset>");

+

+# Override pmwiki styles otherwise they will override styles declared in css

+global $HTMLStylesFmt;

+$HTMLStylesFmt['pmwiki'] = '';

+

+# Add a custom page storage location

+global $WikiLibDirs;

+$PageStorePath = dirname(__FILE__)."/wikilib.d/{\$FullName}";

+$where = count($WikiLibDirs);

+if ($where>1) $where--;

+array_splice($WikiLibDirs, $where, 0, array(new PageStore($PageStorePath)));

+

+# ----------------------------------------

+# - Standard Skin Functions

+# ----------------------------------------

+function dg_SetSkinColor($default, $valid_colors){

+global $SkinColor, $ValidSkinColors, $_GET;

+	if ( !is_array($ValidSkinColors) ) $ValidSkinColors = array();

+	$ValidSkinColors = array_merge($ValidSkinColors, $valid_colors);

+	if ( isset($_GET['color']) && in_array($_GET['color'], $ValidSkinColors) )

+		$SkinColor = $_GET['color'];

+	elseif ( !in_array($SkinColor, $ValidSkinColors) )

+		$SkinColor = $default;

+	return $SkinColor;

+}

+function dg_PoweredBy(){

+	print ('<a href="http://pmwiki.com/'.($GLOBALS['bi_BlogIt_Enabled']?'Cookbook/BlogIt">BlogIt':'">PmWiki').'</a>');

+}

+# Determine logo height and width

+function dg_SetLogoHeightWidth ($wPad, $hPad=0){

+global $PageLogoUrl, $PageLogoUrlHeight, $PageLogoUrlWidth;

+	if (!isset($PageLogoUrlWidth) || !isset($PageLogoUrlHeight)){

+		$size = @getimagesize($PageLogoUrl);

+		if (!isset($PageLogoUrlWidth))  SDV($PageLogoUrlWidth, ($size ?$size[0]+$wPad :0) .'px');

+		if (!isset($PageLogoUrlHeight))  SDV($PageLogoUrlHeight, ($size ?$size[1]+$hPad :0) .'px');

+	}

+}

blob - /dev/null
blob + 4d722b3a2f01a0d34ea23e4d826fbf06f7722c0c (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/skin.tmpl
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

+<head>

+	<title>$WikiTitle {$Group}/{$Titlespaced}</title>

+	<meta name="generator" content="PmWiki" />

+	<link rel="stylesheet" type="text/css" href="$SkinDirUrl/color/$SkinColor.css" media="screen" title="style (screen)" />

+	<link rel="stylesheet" type="text/css" href="$SkinDirUrl/mainstyle/style.css" media="screen" title="style (screen)" />

+	<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="$SkinDirUrl/mainstyle/ie7.css" media="screen" title="style (screen)" /><![endif]-->

+<!--HTMLHeader-->

+  

+</head>

+

+<body $SkinTheme>

+	<div id="nav">

+		<!--PageTabsFmt-->

+		<!--wiki:{$Group}.SiteNav {$SiteGroup}.SiteNav -->

+		<!--/PageTabsFmt-->

+	</div>

+

+	<div id="head">

+		<!--PageHeaderFmt-->

+		<!--wiki:{$Group}.SiteHeader {$SiteGroup}.SiteHeader-->

+		<!--/PageHeaderFmt-->

+	</div>

+

+	<div class="main">

+		<div id="content">	<!--DJG: content2-->

+			<!--PageTitleGroupFmt-->

+			<a style="display:none" href='{$ScriptUrl}/{$Group}' class="pagegroup">{$Group}</a>

+			<!--/PageTitleGroupFmt-->

+			<!--PageTitleFmt-->

+			<h2 class='page-head'><a href='{$PageUrl}'>{$Titlespaced}</a></h2>

+			<!--/PageTitleFmt-->

+			<!--PageText-->

+		</div>

+

+		<div id="right">	<!--DJG: "right2"-->

+			<!--PageActionFmt-->

+				<div class="pageactions">

+				<!--wiki:{$Group}.PageActions {$SiteGroup}.PageActions-->

+				</div>

+			<!--/PageActionFmt-->

+			<!--PageSearchFmt-->

+		 <h4>$[Search]</h4>

+			<form id="searchform" action='$ScriptUrl' method="get"><fieldset>

+				<input type='hidden' name='n' value='{$FullName}' />

+				<input type='hidden' name='action' value='search' />

+				<p>

+					<input id='s' class='text' type='text' name='q' value="" />

+					<input id='searchsubmit' class='button' type='submit' value='$[Go]' />

+				</p>

+			</fieldset></form>

+			<!--/PageSearchFmt-->

+

+

+			<!--PageRightFmt-->

+			<!--wiki:{$Group}.SideBar {$SiteGroup}.SideBar-->

+			<!--/PageRightFmt-->

+		</div>

+

+		<div id="foot">

+			<!--PageFooterFmt-->

+				<!--wiki:{$Group}.SiteFooter {$SiteGroup}.SiteFooter-->

+			<!--/PageFooterFmt-->

+			<p class="credits">

+				<a href="http://pmwiki.com/Cookbook/Choice">Choice</a> $[theme originally by] <a href="http://demusdesign.com/">DemusDesign</a>, $[adapted by] <a href="http://solidgone.org/Skins">David Gilbert</a>

+				<br /> &amp; then Improved by <a href="http://www.t94xr.net.nz/">t94xr</a> to be <a href="http://pmwiki.com/Cookbook/CleanSimple">CleanSimple</a>, $[powered by] <!--function:dg_PoweredBy-->

+			</p>

+			<p class="credits">

+			</p>

+		</div>

+	</div>

+

+<!--HTMLFooter-->

+</body>

+</html>

blob - /dev/null
blob + 6e1e9a55d211750d8aac63e4a3534eed0fc180fc (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/wikilib.d/Site.BlogIt-SkinTemplate-choice
@@ -0,0 +1,12 @@
+version=pmwiki-2.2.15 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)
+author=daveg
+charset=ISO-8859-1
+csum=
+ctime=1232931304
+host=127.0.0.1
+name=Site.BlogIt-SkinTemplate-choice
+rev=173
+targets=
+text=!!! #multi-entry-view%0a[@%0a(:if false:)[[#multi-entry-view]](:if:)%0a(:template each:)%0a(:div9990 class="entry blogit-post-summary":)%0a!! %25block page-head%25[[{=$FullName} | {=$Title}]]%0a(:div9991 class="metadata":)%25date%25{(ftime fmt="$[%25B %25d, %25Y, at %25I:%25M %25p]" when=@{=$:entrydate})}%25%25\%0a(:blogit-skin tags pre_text='%25entrytags%25' post_text='%25%25':){=$:entrytags}(:blogit-skinend:)%0a(:div9991:)%0a(:blogit-skin intro class=entry-content page={=$FullName}:)%0a{=$:entrybody}(:blogit-skinend:)%0a(:div9990end:)%0a%0a(:template last:)%0a(:includesection "#page-navigation itemsonpage={$$PageCount} pagenav={$$pagenav} perpage={$$perpage}":)%0a%0a[[#multi-entry-viewend]]%0a@]%0a%0a!!! #single-entry-view%0a[@%0a(:if false:)[[#single-entry-view]](:if:)%0a(:div99990 class="blogit-post":)%0a(:div9990 class="entry":)%0a(:div9991 class="metadata":)%25date%25{(ftime fmt="$[%25B %25d, %25Y]" when=@{*$:entrydate})}%25%25\%0a(:blogit-skin author pre_text='%25author%25 $[by] ' post_text='%25%25':){*$:entryauthor}(:blogit-skinend:)\%0a(:blogit-skin tags pre_text='%25entrytags%25' post_text='%25%25':){*$:entrytags}(:blogit-skinend:)%0a(:div9991end:)%0a%0a(:div9991 class="entry-content":)%0a{*$:entrybody}%0a(:div9991end:)%0a(:div9990end:)%0a%0a(:div9991 class="metadata-bottom":)\%0a(:blogit-skin edit pre_text='%25editlink accesskey="$[ak_edit]"%25' post_text='%25%25' page='{*$FullName}':)$[edit](:blogit-skinend:)\%0a(:blogit-skin commentcount status='{*$:entrycomments}' pre_text='%25comment-count%25' post_text='%25%25' group='{*$Group}' name='{*$Name}':) comment(s)(:blogit-skinend:)%0a(:div9991end:)%0a(:div99990end:)%0a%0a(:includesection "#comments-pagelist pagename={*$Name} group={*$Group} entrycomments={*$:entrycomments} divid=commentblock":)%0a[[#single-entry-viewend]]%0a@]%0a%0a
+
blob - /dev/null
blob + f6a24354875185d6eae3ef45d3731879502d2436 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/wikilib.d/Site.SiteFooter
@@ -0,0 +1,11 @@
+version=pmwiki-2.2.1 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)
+author=
+charset=ISO-8859-1
+csum=
+ctime=1246582656
+host=127.0.0.1
+name=Site.SiteFooter
+rev=6
+targets=
+text=$[Page last modified on] {*$LastModified}
blob - /dev/null
blob + 6558b82bd4040ab5c56738b1c9d2e89d649dc89a (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/wikilib.d/Site.SiteHeader
@@ -0,0 +1,11 @@
+version=pmwiki-2.2.1 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)
+author=
+charset=ISO-8859-1
+csum=
+ctime=1194389975
+host=127.0.0.1
+name=Site.SiteHeader
+rev=37
+targets=
+text=! %25block sitetitle%25[[{$ScriptUrl} | {$WikiTitle}]]%0a(:div class="sitetag":){$WikiTag}%0a(:divend:)
blob - /dev/null
blob + b7efb8db5368c6d464c29b82c8bc706e9b942d08 (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/wikilib.d/Site.SiteNav
@@ -0,0 +1,11 @@
+version=pmwiki-2.2.0 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)
+author=
+charset=ISO-8859-1
+csum=
+ctime=1238793180
+host=127.0.0.1
+name=Site.SiteNav
+rev=2
+targets=
+text=* [[PmWiki/PmWiki]]%0a* [[tab2]]%0a* [[tab3]]%0a
blob - /dev/null
blob + 4d24ea0e51517263ae396ea043c956c439e53d9e (mode 644)
--- /dev/null
+++ pub/skins/CleanSimple/wikilib.d/Site.XLPage-choice
@@ -0,0 +1,11 @@
+version=pmwiki-2.2.15 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)
+author=daveg
+charset=ISO-8859-1
+csum=
+ctime=1254106278
+host=127.0.0.1
+name=Site.XLPage-choice
+rev=4
+targets=
+text=### Choice Template%0a  'Search' => '',%0a  'Actions' => '',%0a  'theme adapted by' => '',%0a  'Powered by' => '',%0a  'Page last modified on' => ''%0a
blob - /dev/null
blob + c64c1ca3af62bc773f4e2417850be9b8c66476dd (mode 644)
--- /dev/null
+++ pub/skins/ircnow/README
@@ -0,0 +1,28 @@
+This directory contains the files to display pages in PmWiki according
+to the default "responsive" layout, adaptive for large and small screens.
+
+Note that currently this layout is "beta". It requires relatively recent
+mobile and desktop browsers (post-2010).
+
+==>Don't edit these files directly, as you may lose your edits the
+next time you upgrade PmWiki!
+
+Instead, copy the files to another directory in pub/skins/ and edit
+them there.  You can then configure PmWiki to use your modified layout
+files by setting the $Skin variable in your local/config.php.  For 
+example, if you copy your custom skin to pub/skins/custom, then you 
+would set
+   $Skin = 'custom';
+in local/config.php.
+
+The files in this directory:
+    skin.tmpl   -- the default template for page layouts
+    skin.css    -- PmWiki's default css
+    skin.php    -- some template functions
+    skin.js     -- some template functions (browser)
+    *.svg       -- icons
+
+Note, the default PmWiki logo is in the "pmwiki" template directory.
+If you just want to change the logo, you can do it by setting $PageLogoUrl
+to the url location of your logo.
+
blob - /dev/null
blob + 2ba06d3a629a8726c4284fd5647c5b749f3e9c9a (mode 644)
--- /dev/null
+++ pub/skins/ircnow/skin.css
@@ -0,0 +1,579 @@
+/***********************************************************************
+**  skin.css
+**  Copyright 2016-2022 Petko Yotov www.pmwiki.org/petko
+**  
+**  Partially based on pmwiki.css:
+**  Copyright 2004-2006 Patrick R. Michaud pmichaud@pobox.com
+**  Copyright 2006 Hagan Fox
+**  
+**  This file is part of PmWiki; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License as published
+**  by the Free Software Foundation; either version 2 of the License, or
+**  (at your option) any later version.  See pmwiki.php for full details.
+**  
+**  This skin was implemented with a mobile-first approach.
+**  It should work reasonably well with browsers released since 2009.
+**  This CSS uses relative "Reference pixel" dimensions.
+***********************************************************************/
+
+html, body, #bodywrap {
+  padding: 0;
+  margin: 0;
+  font-family: 'Arial', 'Helvetica', Sans-serif;
+  font-size:15px;
+  line-height: 25px;
+  background-color: #f7f7f7;
+  color: black;
+  min-height: 100%;
+  position: relative;
+}
+
+#wikibody {
+  position: relative;
+  background-color: white;
+  padding: 3px;
+  margin: 0;
+}
+
+#wikileft, #wikihead-searchform, #wikicmds {
+  background-color: #fff;
+  opacity: 0.1;
+  display: none;
+  position: absolute;
+  border: 1px solid #ccc;
+  max-width: 90%;
+  max-width: 90vw;
+  height: auto;
+  overflow: auto;
+  top: 8px;  
+  -webkit-box-shadow: 2px 2px 8px 0px rgba(0,0,0,0.75);
+  -moz-box-shadow: 2px 2px 8px 0px rgba(0,0,0,0.75);
+  box-shadow: 2px 2px 8px 0px rgba(0,0,0,0.75);
+}
+
+#wikihead {
+  border-bottom:1px solid #ccc;
+  padding: 0;
+  margin: 0;
+  line-height: 13px;
+  min-height: 33px;
+}
+
+#wikihead-searchform {
+  text-align: center;
+  padding: 10px;
+  z-index: 5;
+  right: 30px;
+  width: 16em;
+  max-width: 80%;
+  line-height: 167%;
+}
+#wikihead-searchquery {
+  max-width: 12em;
+}
+#wikimid {
+  margin: 0; 
+  padding: 0;
+  max-width: 100%;
+}
+
+#wikileft { 
+  left: 30px;
+  padding: 6px;
+  z-index: 4;
+}
+
+#wikicmds { 
+  padding:0px;
+  z-index: 6;
+  white-space:nowrap; 
+  right: 30px;
+}
+
+#wikitext {
+  margin-top: 12px;
+}
+
+#wikifoot {
+  border-top: 1px solid #ccc;
+  padding: 3px;
+  font-size: 13.5px;
+}
+
+#wikifoot.nosidebar {
+  padding-left:3px;
+}
+
+#wikihead-search-toggle, #wikileft-toggle, #wikicmds-toggle {
+  display: none;
+}
+
+#wikihead-search-toggle-label { background-image: url(xsearch.svg); }
+#wikileft-toggle-label        { background-image: url(xmenu.svg); }
+#wikicmds-toggle-label        { background-image: url(xwrench.svg); }
+
+#wikihead-search-toggle-label, #wikileft-toggle-label, #wikicmds-toggle-label {
+  position: relative;
+  display: block;
+  width: 22px;
+  height: 22px;
+  background-size: cover;
+  background-repeat: no-repeat;
+  float:right;
+  margin: 6px 6px 0 6px;
+  z-index: 3;
+}
+
+#wikileft-toggle-label {
+  float: left;
+}
+#wikicmds-toggle-label {
+  margin: 3px;
+}
+
+#wikihead-search-toggle:checked + label,
+#wikileft-toggle:checked + label, 
+#wikicmds-toggle:checked ~ #wikimid #wikicmds-toggle-label {
+  background-image: url(xclose.svg);
+}
+
+#wikileft-toggle:checked ~ * #wikileft,
+#wikihead-search-toggle:checked ~ * #wikihead-searchform,
+#wikicmds-toggle:checked ~ * #wikicmds {   
+  display: block;
+  opacity: 1;
+  
+-webkit-animation: fadein 1s; 
+   -moz-animation: fadein 1s;
+    -ms-animation: fadein 1s;
+     -o-animation: fadein 1s;
+        animation: fadein 1s;
+}
+
+#wikioverlay {
+  position: fixed;
+  top: 0;
+  bottom: 0;
+  left: 0; 
+  right: 0;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  background-color: rgba(0, 0, 0, .2);
+  z-index: 2;
+  display: none;
+}
+#wikileft-toggle:checked ~ #wikioverlay,
+#wikihead-search-toggle:checked ~ #wikioverlay,
+#wikicmds-toggle:checked ~ #wikioverlay {   
+  display: block;
+}
+
+
+
+/* These are for the left-sidebar. */
+#wikileft .vspace { margin-top:20px; }
+#wikileft ul { list-style:none; padding:0px; margin:0px; }
+#wikileft li { margin:8px 0px; padding-left: 6px; }
+.sidehead {
+  margin:0px; padding:4px 2px 2px 2px;
+  font-weight:bold; font-style:normal; 
+}
+.sidehead a 
+  { color:#505050; font-weight:bold; font-style:normal; }
+#wikileft a { text-decoration:none; color:black; padding: 8px 0; }
+#wikileft a:hover { text-decoration:underline; color:blue; }
+
+#wikicmds ul { list-style:none; margin:0px; padding:0px; }
+#wikicmds li { padding: 8px; border-top:1px solid #ccc;}
+#wikicmds li:first-child {border-top:none;}
+#wikicmds li a { text-decoration:none; color:black; border: none; }
+#wikicmds li a.createlink { display:none; }
+#wikicmds li a:hover { text-decoration:underline; color:blue; }
+
+
+/* These primarily adjust the size and spacing of heading elements,
+** most browsers have atrocious defaults for these. */
+h1, h2, h3, h4, h5, h6 { margin-top:15px; margin-bottom:9px; }
+h1, h2, h3, h6 { font-weight:normal; }
+h4, h5 { font-weight:bold; }
+h1 code, h2 code, h3 code, h4 code { font-size:15px; }
+h1 { font-size:27px; }
+h2 { font-size:22px; }
+h3 { font-size:18px; }
+h4 { font-size:16px; }
+h5 { font-size:15px; }
+h6 { font-size:15px; }
+
+.pagegroup { line-height:30px; }
+.pagetitle { line-height:24px; margin:0px; font-size:24px; font-weight:normal; }
+.wikiaction { margin-top:4px; margin-bottom:4px; }
+
+/* These control the fixed-width text elements of the page */
+pre, code { font-size: .93333em; } /*14px didn't scale down in smaller text*/
+pre, code, .diffmarkup { font-family:'Lucida Console','Andale Mono','Courier New',Courier,monospace; }
+pre { line-height: 18px; }
+pre code, code code, pre pre { font-size:100%; }
+/* pre, code.escaped { max-width: 100%; overflow: auto; } */
+pre.escaped {
+	max-width: 100%;
+        line-height:1.3em;
+        background: #f9f9f9;
+        border: 1px solid #ccc;
+        padding:3px;
+}
+
+/* Large tables can scroll */
+div.scrollable { max-width: 100%; overflow: auto; border: 1px dotted red;}
+
+#wikiedit form { margin:0px; width:100%; max-width:100%; }
+#wikiedit textarea { width:99.5%; max-width:99.5%; max-height: 60vh; }
+#wikiedit input { max-width:99.5%; }
+.wikimessage { margin-top:4px; margin-bottom:4px; font-style:italic; }
+
+input, img, iframe {
+  max-width: 100%;
+}
+dd {
+  margin-left: 15px;
+}
+ul, ol {
+  margin: 0;
+}
+details > summary {
+  cursor: pointer;
+}
+details > summary:hover {
+  color: navy;
+}
+
+select, textarea, input {
+  font-size: 16px; /*disable zoom-in on some phones*/
+}
+
+/* xlpage-utf-8.php */
+.rtl, .rtl * {direction:rtl; unicode-bidi:bidi-override;}
+.ltr, .ltr * {direction:ltr; unicode-bidi:bidi-override;}
+.rtl .indent, .rtl.indent, .rtl .outdent, .rtl.outdent {
+  margin-left:0; margin-right: 15px;
+}
+
+/* pmwiki.php */
+ul, ol, pre, dl, p { margin-top:0px; margin-bottom:0px; }
+code.escaped { 
+  white-space: pre; 
+  display: inline-block;
+  vertical-align: bottom;
+  text-indent: 0;
+}
+.vspace { margin-top:25px; }
+.indent { margin-left:15px; }
+.outdent { margin-left:15px; text-indent:-15px; }
+a.createlinktext { text-decoration:none; border-bottom:1px dotted gray; }
+a.createlink { text-decoration:none; position:relative; top:-7px;
+  font-weight:bold; font-size:smaller; border-bottom:none; }
+img { border:0px; }
+
+/* Prevent white space below vertically stacked images */
+div.imgonly img, div.imgcaption img:first-child { vertical-align: bottom; }
+
+/* wikistyles.php */
+.frame { border:1px solid #cccccc; padding:4px; background-color:#f9f9f9; }
+.lfloat { float:left; margin-right:7px; }
+.rfloat { float:right; margin-left:7px; }
+.clearboth { clear: both; }
+
+/* stdmarkup.php */
+table.markup { border:2px dotted #ccf; width:100%; }
+/* td.markup1, td.markup2 { padding-left:0px; padding-right:0px; } */
+table.horiz td.markup1, table.vert td.markup1 { 
+  border-bottom:1px solid #ccf; border-right: none; width: auto; }
+table.horiz td.markup1, table.horiz td.markup2 {
+  /* horizontal markup tables to vertical */
+  display: block; }
+table.markup caption { text-align:left; }
+div.faq p, div.faq pre { margin-left:15px; }
+div.faq p.question { margin: 0; font-weight:bold; }
+div.faqtoc div.faq * { display:none; }
+div.faqtoc div.faq p.question 
+  { display:block; font-weight:normal; margin:7px 0 7px 15px; line-height:normal; }
+div.faqtoc div.faq p.question * { display:inline; }    
+
+/* simuledit.php */
+.editconflict { color:green; 
+  font-style:italic; margin-top:20px; margin-bottom:20px; }
+
+/* pagerev.php */
+.diffbox { border-left:1px #999 solid; margin-top:20px; font-size:12px;  }
+.diffauthor { font-weight:bold; }
+.diffchangesum { font-weight:bold; }
+.difftime { background-color:#ddd; }
+.difftype { font-weight:bold; }
+.diffadd { border-left:5px #9f9 solid; padding-left:5px; }
+.diffdel { border-left:5px #ff9 solid; padding-left:5px; }
+.diffrestore { margin:20px 0px; }
+.diffmarkup { font-size:14px;  } 
+.diffmarkup del { background:#ff9; text-decoration: none; }
+.diffmarkup ins { background:#9f9; text-decoration: none; }
+.rcplus { cursor:pointer; opacity:.3; font-weight:bold; padding: 0 .3em; }
+.rcplus:hover {color: white; background: blue; opacity: 1;}
+.rcreload { opacity:0.2; font-size: .9rem; cursor: pointer;  }
+.rcnew {background-color: #ffa;}
+
+/* urlapprove.php */
+.apprlink { font-size:smaller; }
+
+/* vardoc.php */
+a.varlink { text-decoration:none; }
+
+#wikiedit-minoredit {
+  white-space: nowrap;
+}
+
+/* In HTML5 only styles are valid for alignment */
+td.left,   th.left   { text-align: left;}
+td.center, th.center { text-align: center;}
+td.right,  th.right  { text-align: right;}
+td.top,    th.top    { vertical-align: top;}
+td.bottom, th.bottom { vertical-align: bottom;}
+td.middle, th.middle { vertical-align: middle;}
+
+.noPmTOC {display:none;}
+.PmTOCdiv { display: inline-block; font-size: 13px; overflow: auto; max-height: 500px;}
+.PmTOCdiv a { text-decoration: none; display: block; line-height: 1; margin: .4em 0;}
+.PmTOCdiv a.pmtoc-indent1 { margin-left: 1em; }
+.PmTOCdiv a.pmtoc-indent2 { margin-left: 2em; }
+.PmTOCdiv a.pmtoc-indent3 { margin-left: 3em; }
+.PmTOCdiv a.pmtoc-indent4 { margin-left: 4em; }
+.PmTOCdiv a.pmtoc-indent5 { margin-left: 5em; }
+.PmTOCdiv a.pmtoc-indent6 { margin-left: 6em; }
+.back-arrow {font-size: .8rem; text-decoration: none; vertical-align: text-top;}
+#PmTOCchk + label {cursor: pointer;}
+#PmTOCchk {display: none;}
+#PmTOCchk:not(:checked) + label > .pmtoc-show {display: none;}
+#PmTOCchk:checked + label > .pmtoc-hide {display: none;}
+#PmTOCchk:checked + label + div {display: none;}
+
+table.simpletable {
+  border-collapse: collapse;
+}
+table.simpletable tr:nth-child(odd) {
+  background-color: #eee;
+}
+table.simpletable th {
+  background-color: #ccc;
+}
+table.simpletable th, table.simpletable td {
+  border: 1px solid #888;
+}
+
+table.sortable th {
+  cursor: pointer;
+}
+
+table.sortable th:hover::after {
+  color: inherit;
+  content: "\00A0\025B8";
+}
+
+table.sortable th::after {
+  color: transparent;
+  content: "\00A0\025B8";
+}
+
+table.sortable th.dir-u::after {
+  color: inherit;
+  content: "\00A0\025BE";
+}
+
+table.sortable th.dir-d::after {
+  color: inherit;
+  content: "\00A0\025B4";
+}
+
+*[data-pmtoggle], .pmtoggleall {
+  cursor: pointer;
+  font-weight: bold;
+}
+*[data-pmtoggle]::before {
+  content: "\025BE\00A0";
+  float: left;
+}
+*[data-pmtoggle="closed"]::before {
+  content: "\025B8\00A0";
+}
+
+*[data-pmtoggle] + * {
+  margin-left: .8em;
+}
+*[data-pmtoggle="closed"] + * {
+  display: none;
+}
+
+@media screen and (min-width:50em) {
+  html, body, #bodywrap {
+    line-height: 20px;
+    width: 100%;
+    margin: 0 auto;
+    background-color: #f7f7f7;
+  }
+
+  #wikileft, #wikihead-searchform, #wikicmds {
+    background-color: #f7f7f7;
+    opacity: 1;
+    display: block;
+    position: relative;
+    border: none;
+    max-width: none;
+    height: auto;
+    max-height: none;
+    overflow: auto;
+    top: 0px;  
+    -webkit-box-shadow: none;
+    -moz-box-shadow: none;
+    box-shadow: none;
+  }
+  #wikicmds-toggle-label,  #wikileft-toggle-label,  #wikihead-search-toggle-label {
+    display: none;
+  }
+  #wikihead-searchform {
+    background-color: transparent;
+    float: right;
+    padding: 4px;
+    right: 6px;
+    top: 6px;
+    width: auto;
+    max-width: none;
+    line-height: inherit;
+    overflow: hidden;
+  }
+  #wikilogo {
+    display: inline-block;
+    margin-top: 4px;
+    padding: 6px;
+  }
+  #wikihead, #wikihead input {
+    font-size: 85%;
+  }
+  
+  #wikihead-recent-changes-link, #wikihead-searchlink{
+    display: inline;
+  }
+  
+  #wikimid {
+    display: table;
+    table-layout:fixed;
+    width: 100%;
+  }
+  #wikisidebar, #wikibody {
+    display: table-cell;
+  }
+  
+  #wikisidebar {
+    position: relative;
+    border-right:1px solid #ccc; 
+    width:167px;
+    vertical-align: top;
+    padding: 0; margin: 0;
+    overflow: auto;
+  }
+  #wikileft {
+    padding:6px; 
+    left: 0;
+    margin: 0 1px 0 0;
+    background: transparent;
+    font-size: 13px;
+    line-height: 17px;
+  }
+  #wikileft a { padding: 0px; }
+  #wikileft li {margin:0px; }
+  
+  #wikibody {
+    padding-left: 10px;
+    vertical-align: top;
+  }
+  
+  #wikicmds {
+    right: 0px;
+    background-color: transparent;
+    float:right;
+    white-space:nowrap; 
+    font-size:13px; 
+  }
+  #wikicmds li { display:inline; margin:0px 5px; padding: 0; border: none; }
+  
+  #wikifoot {
+    padding-left:178px;
+  }
+  
+  #wikifoot.nosidebar {
+    padding-left:10px;
+  }
+  .vspace { margin-top: 20px; }
+  .indent { margin-left:40px; }
+  .outdent { margin-left:40px; text-indent:-40px; }
+  
+  .rtl .indent, .rtl.indent, .rtl .outdent, .rtl.outdent {
+    margin-left:0; margin-right: 40px;
+  }
+    
+  dd { margin-left: 40px; }
+
+  table.horiz td.markup1, table.horiz td.markup2 {
+    display: table-cell; }
+    
+  td.markup1, td.markup2 { padding-left:10px; padding-right:10px; }
+  table.vert td.markup1 { border-bottom:1px solid #ccf; }
+  table.horiz td.markup1 { width:23em; border-right:1px solid #ccf; border-bottom:none; }
+  td.markup1 pre { white-space: pre-wrap; }
+  
+  div.faq p, div.faq pre { margin-left:40px; }
+  div.faq p.question { margin:15px 0 12px 0; }
+  div.faqtoc div.faq p.question 
+    { margin:8px 0 8px 20px; }
+    
+  
+  select, textarea, input {
+    font-size: 14px;
+  }
+  
+  #wikileft-toggle:checked ~ #wikioverlay,
+  #wikihead-search-toggle:checked ~ #wikioverlay,
+  #wikicmds-toggle:checked ~ #wikioverlay {   
+    display: none;
+  }
+
+}
+
+/* These affect the printed appearance of the web view (not the separate
+** print view) of pages.  The sidebar and action links aren't printed. */
+@media print {
+  body { width:auto; margin:0px; padding:8px; }
+  #wikihead, #wikileft, #wikicmds, .footnav { display:none; }
+  #wikifoot { padding:2px; }
+  *[data-pmtoggle="closed"] + * { display: inherit; }
+  *[data-pmtoggle="closed"]::before { content: "\025BE\00A0"; }
+}
+
+/* Fade-in animation */
+@keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+@-ms-keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+@-o-keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+
blob - /dev/null
blob + 53d2d3fb437082a594700f0fb185a79520ed7163 (mode 644)
--- /dev/null
+++ pub/skins/ircnow/skin.js
@@ -0,0 +1,78 @@
+/***********************************************************************
+**  skin.js
+**  Copyright 2016-2017 Petko Yotov www.pmwiki.org/petko
+**  
+**  This file is part of PmWiki; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License as published
+**  by the Free Software Foundation; either version 2 of the License, or
+**  (at your option) any later version.  See pmwiki.php for full details.
+**  
+**  This script fixes the styles of some elements when some directives
+**  like (:noleft:) are used in a page.
+***********************************************************************/
+(function(){
+  var W = window, D = document;
+  function $(x) { // returns element from id
+    return D.getElementById(x);
+  }
+  function hide(id) { // hides element
+    var el = $(id);
+    if(el) el.style.display = 'none'; 
+  }
+  function cname(id, c) { // set element className
+    var el = $(id);
+    if(el) el.className = c;
+  }
+  var wsb = $('wikisidebar');
+  if(! wsb) { // (:noleft:)
+    hide('wikileft-toggle-label')
+    cname('wikifoot', 'nosidebar');
+  }
+  else { 
+    var sbcontent = wsb.textContent || wsb.innerText;
+    if(! sbcontent.replace(/\s+/, '').length) // empty sidebar, eg. protected
+      hide('wikileft-toggle-label');
+  }
+  var wcmd = $('wikicmds');
+  if(wcmd) { // page actions
+    var pacontent = wcmd.textContent || wcmd.innerText;
+    if(! pacontent.replace(/\s+/, '').length) // empty, eg. protected
+      hide('wikicmds-toggle-label');
+  }
+  if(! $('wikihead-searchform')) // no search form, eg. custom header
+    hide('wikihead-search-toggle-label');
+  var overlay = $('wikioverlay');
+  if(overlay) {
+    overlay.addEventListener('click', function(){
+      $('wikicmds-toggle').checked = false;
+      $('wikihead-search-toggle').checked = false;
+      $('wikileft-toggle').checked = false;
+    });
+  }
+  var scrolltables = function() {
+    // This function "wraps" large tables in a scrollable div
+    // and "unwraps" narrow tables from the scrollable div 
+    // allowing table alignement
+    var tables = D.getElementsByTagName('table');
+    for(var i=0; i<tables.length; i++) {
+      var t = tables[i];
+      var pn = t.parentNode;
+      if(pn.className == 'scrollable') {
+        var gp = pn.parentNode;
+        if(t.offsetWidth < gp.offsetWidth) {
+          gp.insertBefore(t, pn);
+          gp.removeChild(pn);
+        }
+      }
+      else  {
+        if(t.offsetWidth > pn.offsetWidth) {
+          var nn = D.createElement('div');
+          pn.insertBefore(nn, t).className = 'scrollable';
+          nn.appendChild(t);
+        }
+      }
+    }
+  }
+  W.addEventListener('resize', scrolltables, false);
+  D.addEventListener('DOMContentLoaded', scrolltables, false);
+})();
blob - /dev/null
blob + bdb388b809c945ff1cbebe47baf372060d09bf5c (mode 644)
--- /dev/null
+++ pub/skins/ircnow/skin.php
@@ -0,0 +1,89 @@
+<?php if (!defined('PmWiki')) exit();
+/***********************************************************************
+**  skin.php
+**  Copyright 2016-2019 Petko Yotov www.pmwiki.org/petko
+**  
+**  This file is part of PmWiki; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License as published
+**  by the Free Software Foundation; either version 2 of the License, or
+**  (at your option) any later version.  See pmwiki.php for full details.
+***********************************************************************/
+
+
+global $HTMLStylesFmt, $SkinElementsPages, $DefaultSkinElements, $TableCellAlignFmt, 
+  $SearchBoxInputType, $WrapSkinSections, $HideTemplateSections, $EnableTableAttrToStyles;
+
+# Disable inline styles injected by the PmWiki core (we provide these styles in skin.css)
+$styles = explode(' ', 'pmwiki rtl-ltr wikistyles markup simuledit diff urlapprove vardoc PmSortable PmTOC');
+foreach($styles as $style) $HTMLStylesFmt[$style] = '';
+
+# CSS alignment for table cells (valid HTML5)
+SDV($TableCellAlignFmt, " class='%s'");
+
+# For (:searchbox:), valid semantic HTML5
+$SearchBoxInputType = "search";
+
+# remove deprecated "name=" parameter from anchor tags
+if($GLOBALS['VersionNum'] < 2002056) {
+  # we want the skin to also work with older PmWiki versions
+  Markup('[[#','<[[','/(?>\\[\\[#([A-Za-z][-.:\\w]*))\\]\\]/e',
+    "Keep(TrackAnchors('$1') ? '' : \"<a id='$1'></a>\", 'L')");
+}
+else {
+  Markup('[[#','<[[','/(?>\\[\\[#([A-Za-z][-.:\\w]*))\\]\\]/',
+    "MarkupKeepTrackAnchors");
+}
+function MarkupKeepTrackAnchors($m) {
+  return Keep(TrackAnchors($m[1]) ? '' : "<a id='{$m[1]}'></a>", 'L');
+}
+
+# in HTML5 "clear" is a style not an attribute
+Markup('[[<<]]','inline','/\\[\\[&lt;&lt;\\]\\]/',"<br style='clear:both;' />");
+
+# Allow skin header and footer to be written 
+# in a wiki page, and use defaults otherwise
+SDVA($WrapSkinSections, array(
+  '#skinheader' => '<header id="wikihead">
+      <div id="wikihead-content">
+      %s
+      </div>
+    </header>',
+  '#skinfooter' => '<footer id="wikifoot">
+    %s
+  </footer>',
+));
+SDVA($HideTemplateSections, array(
+  '#skinheader' => 'PageHeaderFmt',
+  '#skinfooter' => 'PageFooterFmt',
+));
+
+# This function prints a skin element which is written 
+# inside a [[#header]]...[[#headerend]] section in Site.SkinElements
+# overriding the existing section from the template file
+
+function SkinFmt($pagename, $args) {
+  global $WrapSkinSections, $HideTemplateSections, $TmplDisplay;
+  
+  $args = preg_split('!\\s+!', $args, null, PREG_SPLIT_NO_EMPTY);
+  
+  $section = array_shift($args);
+  $hidesection = $HideTemplateSections[$section];
+  
+  if(isset($TmplDisplay[$hidesection]) && $TmplDisplay[$hidesection] == 0) {
+    return;      # Section was disabled by (:noheader:) or (:nofooter:)
+  }
+  
+  foreach($args as $p) {
+    $pn = FmtPageName($p, $pagename);
+    $elm = RetrieveAuthSection($pn, "$section{$section}end");
+    if(!$elm) continue;
+    
+    $html = MarkupToHTML($pagename, Qualify($pn, $elm));
+    echo sprintf($WrapSkinSections[$section], $html);
+    SetTmplDisplay($hidesection,0);
+    return;
+  }
+  if(@$DefaultSkinElements[$section])
+    echo FmtPageName($DefaultSkinElements[$section], $pagename);
+}
+
blob - /dev/null
blob + 27018324e44da9231a64a2c76ec58677ced9f6b8 (mode 644)
--- /dev/null
+++ pub/skins/ircnow/skin.tmpl
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html $HTMLTagAttr>
+<head>
+  <title>$WikiTitle | {$Group} / {$Title} $ActionTitle</title>
+  <!-- Skin Copyright 2017 Petko Yotov www.pmwiki.org/petko ; Skin License GNU GPLv2+ -->
+  <meta name="viewport" content="width=device-width, initial-scale=1"/>
+  <link rel='stylesheet' href='$SkinDirUrl/skin.css' type='text/css' />
+  <!--HTMLHeader-->
+</head>
+<body>
+  <div id="bodywrap">
+    <input id="wikileft-toggle" type="checkbox"/>
+    <label for="wikileft-toggle" id="wikileft-toggle-label"></label>
+
+    <input id="wikihead-search-toggle" type="checkbox"/>
+    <label for="wikihead-search-toggle" id="wikihead-search-toggle-label"></label>
+    <input id="wikicmds-toggle" type="checkbox"/>
+
+<!--function:SkinFmt #skinheader {$Group}.SkinElements {$SiteGroup}.SkinElements-->
+<!--PageHeaderFmt-->
+    <header id="wikihead">
+      <div id="wikihead-content">
+        <span id="wikilogo"><a href="{$ScriptUrl}"><img src="$PageLogoUrl" alt="$WikiTitle"/></a></span>
+        <form id="wikihead-searchform" action="{$ScriptUrl}" method="get">
+          <span class="headnav" id="wikihead-recent-changes-link">
+            <a href="{$ScriptUrl}/$[{$Group}/RecentChanges]" accesskey="$[ak_recentchanges]">$[Recent Changes]</a> -
+          </span>
+          <span id="wikihead-searchlink"><a href="{$ScriptUrl}/$[{$SiteGroup}/Search]">$[Search]</a>:</span>
+          <input type="hidden" name="n" value="{$FullName}" />
+          <input type="hidden" name="action" value="search" />
+          <input id="wikihead-searchquery" type="search" name="q" value="" class="inputbox searchbox" placeholder="$[Search]" />
+          <input id="wikihead-searchsubmitbtn" type="submit" class="inputbutton searchbutton" value="$[Go]" />
+        </form>
+      </div><!--wikiheadcontent-->
+    </header><!--wikihead-->
+<!--/PageHeaderFmt-->
+
+    <div id="wikimid">
+<!--PageLeftFmt-->
+      <nav id="wikisidebar">
+        <div id="wikileft">
+          <!--wiki:{$Group}.SideBar {$SiteGroup}.SideBar-->
+        </div>
+      </nav>
+<!--/PageLeftFmt-->
+
+      <div id="wikibody">
+        <main>
+<!--PageActionFmt-->
+        <label for="wikicmds-toggle" id="wikicmds-toggle-label"></label>
+        <div id='wikicmds'><!--wiki:{$Group}.PageActions {$SiteGroup}.PageActions--></div>
+<!--/PageActionFmt-->
+<!--PageTitleFmt-->
+          <div id='wikititle'>
+            <div class='pagegroup'><a href='{$ScriptUrl}/{$Group}'>{$Group}</a> /</div>
+            <h1 class='pagetitle'>{$Title}</h1>
+          </div>
+<!--/PageTitleFmt-->
+
+<!--PageText-->
+        </main>
+
+      </div><!--wikibody-->
+
+    </div><!--wikimid-->
+
+<!--function:SkinFmt #skinfooter {$Group}.SkinElements {$SiteGroup}.SkinElements-->
+<!--PageFooterFmt-->
+    <footer id='wikifoot'>
+      <div id="wikifoot-links" class="footnav">
+        <a rel="nofollow" href="{$PageUrl}?action=edit">$[Edit]</a> -
+        <a rel="nofollow" href="{$PageUrl}?action=diff">$[History]</a> -
+        <a rel="nofollow" href="{$PageUrl}?action=print" target="_blank">$[Print]</a> -
+        <a href="{$ScriptUrl}/$[{$Group}/RecentChanges]">$[Recent Changes]</a> -
+        <a href="{$ScriptUrl}/$[{$SiteGroup}/Search]">$[Search]</a>
+      </div>
+      <div id="wikifoot-lastmod" class="lastmod">All content is under the <a href="index.php?n=License.Ircnow">IRCNow License</a>. $[Page last modified on {$LastModified}]</div>
+    </footer>
+<!--/PageFooterFmt-->
+    <div id="wikioverlay"></div>
+  </div><!--bodywrap-->
+
+  <script type='text/javascript' src='$SkinDirUrl/skin.js' async></script>
+
+<!--HTMLFooter-->
+
+</body>
+</html>
+
blob - /dev/null
blob + b972d12a8cdad477a90b61bd1e1610158a8816a9 (mode 644)
--- /dev/null
+++ pub/skins/ircnow/xclose.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" stroke-width="8" stroke="#bf0000" viewBox="0 0 60 60"><!-- Copyright 2016 Petko Yotov www.pmwiki.org/petko ; License GNU GPLv2+ --><path d="m56 56l-52-52m0 52l52-52"/></svg>
\ No newline at end of file
blob - /dev/null
blob + c7ead3df5fd8fa3b694f2b6b1f884d8693132b13 (mode 644)
--- /dev/null
+++ pub/skins/ircnow/xmenu.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" stroke-width="8" fill="none" stroke="#7f7f7f" viewBox="0 0 60 60"><!-- Copyright 2016 Petko Yotov www.pmwiki.org/petko ; License GNU GPLv2+ --><path d="m0 6h60m-60 21h60m-60 21h60"/></svg>
\ No newline at end of file
blob - /dev/null
blob + 4495dcc8d3eaaf54d3271cc3d3da44e873ad80ba (mode 644)
--- /dev/null
+++ pub/skins/ircnow/xsearch.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" stroke="#7c7c7c" fill="none" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="8" viewBox="0 0 60 60"><!-- Copyright 2016 Petko Yotov www.pmwiki.org/petko ; License GNU GPLv2+ --><circle r="20" cy="25" cx="25"/><path d="m56 56l-16-16"/></svg>
\ No newline at end of file
blob - /dev/null
blob + 6b4d840aaffc2586556118f46e9d14d8aefc0567 (mode 644)
--- /dev/null
+++ pub/skins/ircnow/xwrench.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" stroke-linecap="null" stroke-linejoin="null" stroke-width="0" stroke="#7f7f7f" fill="#7f7f7f" viewBox="0 0 60 60"><!-- Copyright 2016 Petko Yotov www.pmwiki.org/petko ; License GNU GPLv2+ --><path d="m51.28 27.324c3.917-4.503 4.704-10.65 2.573-15.818l-7.863 9.17-7.751-1.508-2.569-7.467 7.844-9.149c-5.396-1.359-11.34.28-15.24 4.766-4.113 4.73-4.786 11.278-2.241 16.592l-20.498 23.571c-2.18 2.506-1.915 6.306.591 8.487 2.506 2.178 6.306 1.915 8.487-.591l20.474-23.547c5.636 1.816 12.06.244 16.193-4.508z" transform="rotate(-90 30 30)"/></svg>
\ No newline at end of file
blob - /dev/null
blob + 2374d41a54d7d76a956409ee5670bc73555032f4 (mode 644)
--- /dev/null
+++ pub/skins/pmwiki/README
@@ -0,0 +1,22 @@
+This directory contains the files to display pages in PmWiki according
+to the default layout.  
+
+==>Don't edit these files directly, as you may lose your edits the
+next time you upgrade PmWiki!
+
+Instead, copy the files to another directory in pub/skins/ and edit
+them there.  You can then configure PmWiki to use your modified layout
+files by setting the $Skin variable in your local/config.php.  For 
+example, if you copy your custom skin to pub/skins/custom, then you 
+would set
+   $Skin = 'custom';
+in local/config.php.
+
+The files in this directory:
+    pmwiki.tmpl   -- the default template for page layouts
+    pmwiki.css    -- PmWiki's default css
+    pmwiki-32.gif -- the PmWiki logo
+
+If you just want to change the logo, you can do it by setting $PageLogoUrl
+to the url location of your logo.
+
blob - /dev/null
blob + 026367cac90f26639efd9e41a5e569a9562f26c0 (mode 644)
Binary files /dev/null and pub/skins/pmwiki/madeonirc.png differ
blob - /dev/null
blob + 6f74964c78661c1962e1612285b87489e56ad597 (mode 644)
Binary files /dev/null and pub/skins/pmwiki/pmwiki-32.gif differ
blob - /dev/null
blob + 0c51298398520f627ffb26756a1416694e9ce133 (mode 644)
--- /dev/null
+++ pub/skins/pmwiki/pmwiki.css
@@ -0,0 +1,118 @@
+/***********************************************************************
+** pmwiki.css
+**  Copyright 2004-2017 Patrick R. Michaud (pmichaud@pobox.com)
+**  Copyright 2006 Hagan Fox
+**  This file is part of PmWiki; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License as published
+**  by the Free Software Foundation; either version 2 of the License, or
+**  (at your option) any later version.  See pmwiki.php for full details.
+**  
+**  File maintained by Petko Yotov www.pmwiki.org/petko
+***********************************************************************/
+
+/* This sets the overall frame for the site */
+body {
+  margin:0px; background-color:#f7f7f7; color: black;
+  font-family:Arial,Helvetica,sans-serif; font-size:11pt;
+}
+
+/* These control the fixed-width text elements of the page */
+textarea, pre, code { font-size:0.9em; }
+pre, code { font-family:'Lucida Console','Andale Mono','Courier New',Courier,monospace; }
+pre { line-height:1.2em; }
+pre code, code code, pre pre { font-size:100%; }
+
+/* These primarily adjust the size and spacing of heading elements,
+** most browsers have atrocious defaults for these. */
+h1, h2, h3, h4, h5, h6 { margin-top:1.0em; margin-bottom:0.6em; }
+h1, h2, h3, h6 { font-weight:normal; }
+h4, h5 { font-weight:bold; }
+h1 code, h2 code, h3 code, h4 code { font-size:1em; }
+h1 { font-size:1.8em; }
+h2 { font-size:1.44em; }
+h3 { font-size:1.22em; }
+h4 { font-size:1.07em; }
+h5 { font-size:1.0em; }
+h6 { font-size:1.0em; }
+
+/* The #wikilogo element is the logo from $PageLogoFmt */
+#wikilogo { margin-top:4px; padding:6px; border-bottom:1px #cccccc solid; }
+
+/* This controls the rest of the heading (primarily the search box) */
+#wikihead { 
+  position:absolute; right:10px; top:10px; 
+  font-family:Verdana,sans-serif; font-size:85%; 
+}
+#wikihead input { font-size:85%; } 
+
+/* These are for the left-sidebar. */
+#wikileft {
+  width:155px; 
+  padding:6px; border-right:1px #cccccc solid; 
+  line-height:1.33em;
+  font-size:9.4pt; font-family:Verdana,sans-serif;
+}
+#wikileft .vspace { margin-top:1.125em; }
+#wikileft a { text-decoration:none; color:black; }
+#wikileft a:hover { text-decoration:underline; color:blue; }
+#wikileft ul { list-style:none; padding:0px; margin:0px; }
+#wikileft li { margin:0px; padding-left: 6px; }
+.sidehead {
+  margin:0px; padding:4px 2px 2px 2px;
+  font-size:11pt; font-weight:bold; font-style:normal; 
+}
+.sidehead a 
+  { color:#505050; font-weight:bold; font-style:normal; }
+
+/* These affect the main content area. */
+#wikibody { 
+  padding:0px 10px 10px 10px; background-color:white; 
+  font-size:11pt; 
+}
+#wikicmds { 
+  float:right; white-space:nowrap; 
+  font-family:Verdana,sans-serif; font-size:80%; 
+}
+#wikicmds ul { list-style:none; margin:0px; padding:0px; }
+#wikicmds li { display:inline; margin:0px 5px; }
+#wikicmds li a { text-decoration:none; color:black; border:none; }
+#wikicmds li a.createlink { display:none; }
+#wikicmds li a:hover { text-decoration:underline; color:blue; }
+.pagegroup { margin-top:8px; margin-bottom:2px; }
+.pagetitle { line-height:1em; margin:0px; font-size:1.6em; font-weight:normal; }
+.wikiaction { margin-top:4px; margin-bottom:4px; }
+#wikitext { margin-top:12px; line-height:1.33em; }
+#wikitext table { font-size:100%; line-height:1.33em; } /* For MSIE 5.5 */
+
+/* These are for the edit form. */
+#wikiedit form { margin:0px; width:100%; }
+#wikiedit textarea { width:100%; }
+.wikimessage { margin-top:4px; margin-bottom:4px; font-style:italic; }
+
+/* These affect the lines at the very bottom. */
+#wikifoot { 
+  padding-left:178px; padding-bottom:4px; border-top:1px #cccccc solid;
+  font-family:Verdana,sans-serif; font-size:80%; 
+}
+
+/* table class=simpletable from pmwiki-responsive.css */
+table.simpletable {
+  border-collapse: collapse;
+}
+table.simpletable tr:nth-child(odd) {
+  background-color: #eee;
+}
+table.simpletable th {
+  background-color: #ccc;
+}
+table.simpletable th, table.simpletable td {
+  border: 1px solid #888;
+}
+
+/* These affect the printed appearance of the web view (not the separate
+** print view) of pages.  The sidebar and action links aren't printed. */
+@media print {
+  body { width:auto; margin:0px; padding:0.5em; }
+  #wikihead, #wikileft, #wikicmds, .footnav { display:none; }
+  #wikifoot { padding:2px; }
+}
blob - /dev/null
blob + fd18f5826de10eaab6e1524b0d04227a31f2e2b5 (mode 644)
--- /dev/null
+++ pub/skins/pmwiki/pmwiki.tmpl
@@ -0,0 +1,52 @@
+<!DOCTYPE html 
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" $HTMLTagAttr>
+<head>
+  <title>$WikiTitle | {$Group} / {$Title} $ActionTitle</title>
+  <meta http-equiv='Content-Style-Type' content='text/css' />
+  <link rel='stylesheet' href='$SkinDirUrl/pmwiki.css' type='text/css' />
+  <!--HTMLHeader-->
+</head>
+<body>
+<!--PageHeaderFmt-->
+  <div id='wikilogo'><a href='{$ScriptUrl}'><img src='$PageLogoUrl'
+    alt='$WikiTitle' border='0' /></a></div>
+  <div id='wikihead'>
+  <form action='{$ScriptUrl}'>
+    <span class='headnav'><a href='{$ScriptUrl}/$[{$Group}/RecentChanges]'
+      accesskey='$[ak_recentchanges]'>$[Recent Changes]</a> -</span>
+    <input type='hidden' name='n' value='{$FullName}' />
+    <input type='hidden' name='action' value='search' />
+    <a href='{$ScriptUrl}/$[{$SiteGroup}/Search]'>$[Search]</a>:
+    <input type='text' name='q' value='' class='inputbox searchbox' />
+    <input type='submit' class='inputbutton searchbutton'
+      value='$[Go]' /></form></div>
+<!--/PageHeaderFmt-->
+  <table id='wikimid' width='100%' cellspacing='0' cellpadding='0'><tr>
+<!--PageLeftFmt-->
+      <td id='wikileft' valign='top'>
+        <!--wiki:{$Group}.SideBar {$SiteGroup}.SideBar--></td>
+<!--/PageLeftFmt-->
+      <td id='wikibody' valign='top'>
+<!--PageActionFmt-->
+        <div id='wikicmds'><!--wiki:{$Group}.PageActions {$SiteGroup}.PageActions--></div>
+<!--PageTitleFmt-->
+        <div id='wikititle'>
+          <div class='pagegroup'><a href='{$ScriptUrl}/{$Group}'>{$Group}</a> /</div>
+          <h1 class='pagetitle'>{$Title}</h1></div>
+<!--PageText-->
+      </td>
+    </tr></table>
+<!--PageFooterFmt-->
+  <div id='wikifoot'>
+    <div class='footnav'>
+      <a rel="nofollow" href='{$PageUrl}?action=edit'>$[Edit]</a> -
+      <a rel="nofollow" href='{$PageUrl}?action=diff'>$[History]</a> -
+      <a rel="nofollow" href='{$PageUrl}?action=print' target='_blank'>$[Print]</a> -
+      <a href='{$ScriptUrl}/$[{$Group}/RecentChanges]'>$[Recent Changes]</a> -
+      <a href='{$ScriptUrl}/$[{$SiteGroup}/Search]'>$[Search]</a></div>
+    <div class='lastmod'>$[Page last modified on {$LastModified}]</div></div>
+<!--HTMLFooter-->
+</body>
+</html>
blob - /dev/null
blob + c64c1ca3af62bc773f4e2417850be9b8c66476dd (mode 644)
--- /dev/null
+++ pub/skins/pmwiki-responsive/README
@@ -0,0 +1,28 @@
+This directory contains the files to display pages in PmWiki according
+to the default "responsive" layout, adaptive for large and small screens.
+
+Note that currently this layout is "beta". It requires relatively recent
+mobile and desktop browsers (post-2010).
+
+==>Don't edit these files directly, as you may lose your edits the
+next time you upgrade PmWiki!
+
+Instead, copy the files to another directory in pub/skins/ and edit
+them there.  You can then configure PmWiki to use your modified layout
+files by setting the $Skin variable in your local/config.php.  For 
+example, if you copy your custom skin to pub/skins/custom, then you 
+would set
+   $Skin = 'custom';
+in local/config.php.
+
+The files in this directory:
+    skin.tmpl   -- the default template for page layouts
+    skin.css    -- PmWiki's default css
+    skin.php    -- some template functions
+    skin.js     -- some template functions (browser)
+    *.svg       -- icons
+
+Note, the default PmWiki logo is in the "pmwiki" template directory.
+If you just want to change the logo, you can do it by setting $PageLogoUrl
+to the url location of your logo.
+
blob - /dev/null
blob + 90c6643faa12c7641e907bc632298e7d7914228a (mode 644)
--- /dev/null
+++ pub/skins/pmwiki-responsive/skin.css
@@ -0,0 +1,572 @@
+/***********************************************************************
+**  skin.css
+**  Copyright 2016-2022 Petko Yotov www.pmwiki.org/petko
+**  
+**  Partially based on pmwiki.css:
+**  Copyright 2004-2006 Patrick R. Michaud pmichaud@pobox.com
+**  Copyright 2006 Hagan Fox
+**  
+**  This file is part of PmWiki; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License as published
+**  by the Free Software Foundation; either version 2 of the License, or
+**  (at your option) any later version.  See pmwiki.php for full details.
+**  
+**  This skin was implemented with a mobile-first approach.
+**  It should work reasonably well with browsers released since 2009.
+**  This CSS uses relative "Reference pixel" dimensions.
+***********************************************************************/
+
+html, body, #bodywrap {
+  padding: 0;
+  margin: 0;
+  font-family: 'Arial', 'Helvetica', Sans-serif;
+  font-size:15px;
+  line-height: 25px;
+  background-color: #f7f7f7;
+  color: black;
+  min-height: 100%;
+  position: relative;
+}
+
+#wikibody {
+  position: relative;
+  background-color: white;
+  padding: 3px;
+  margin: 0;
+}
+
+#wikileft, #wikihead-searchform, #wikicmds {
+  background-color: #fff;
+  opacity: 0.1;
+  display: none;
+  position: absolute;
+  border: 1px solid #ccc;
+  max-width: 90%;
+  max-width: 90vw;
+  height: auto;
+  overflow: auto;
+  top: 8px;  
+  -webkit-box-shadow: 2px 2px 8px 0px rgba(0,0,0,0.75);
+  -moz-box-shadow: 2px 2px 8px 0px rgba(0,0,0,0.75);
+  box-shadow: 2px 2px 8px 0px rgba(0,0,0,0.75);
+}
+
+#wikihead {
+  border-bottom:1px solid #ccc;
+  padding: 0;
+  margin: 0;
+  line-height: 13px;
+  min-height: 33px;
+}
+
+#wikihead-searchform {
+  text-align: center;
+  padding: 10px;
+  z-index: 5;
+  right: 30px;
+  width: 16em;
+  max-width: 80%;
+  line-height: 167%;
+}
+#wikihead-searchquery {
+  max-width: 12em;
+}
+#wikimid {
+  margin: 0; 
+  padding: 0;
+  max-width: 100%;
+}
+
+#wikileft { 
+  left: 30px;
+  padding: 6px;
+  z-index: 4;
+}
+
+#wikicmds { 
+  padding:0px;
+  z-index: 6;
+  white-space:nowrap; 
+  right: 30px;
+}
+
+#wikitext {
+  margin-top: 12px;
+}
+
+#wikifoot {
+  border-top: 1px solid #ccc;
+  padding: 3px;
+  font-size: 13.5px;
+}
+
+#wikifoot.nosidebar {
+  padding-left:3px;
+}
+
+#wikihead-search-toggle, #wikileft-toggle, #wikicmds-toggle {
+  display: none;
+}
+
+#wikihead-search-toggle-label { background-image: url(xsearch.svg); }
+#wikileft-toggle-label        { background-image: url(xmenu.svg); }
+#wikicmds-toggle-label        { background-image: url(xwrench.svg); }
+
+#wikihead-search-toggle-label, #wikileft-toggle-label, #wikicmds-toggle-label {
+  position: relative;
+  display: block;
+  width: 22px;
+  height: 22px;
+  background-size: cover;
+  background-repeat: no-repeat;
+  float:right;
+  margin: 6px 6px 0 6px;
+  z-index: 3;
+}
+
+#wikileft-toggle-label {
+  float: left;
+}
+#wikicmds-toggle-label {
+  margin: 3px;
+}
+
+#wikihead-search-toggle:checked + label,
+#wikileft-toggle:checked + label, 
+#wikicmds-toggle:checked ~ #wikimid #wikicmds-toggle-label {
+  background-image: url(xclose.svg);
+}
+
+#wikileft-toggle:checked ~ * #wikileft,
+#wikihead-search-toggle:checked ~ * #wikihead-searchform,
+#wikicmds-toggle:checked ~ * #wikicmds {   
+  display: block;
+  opacity: 1;
+  
+-webkit-animation: fadein 1s; 
+   -moz-animation: fadein 1s;
+    -ms-animation: fadein 1s;
+     -o-animation: fadein 1s;
+        animation: fadein 1s;
+}
+
+#wikioverlay {
+  position: fixed;
+  top: 0;
+  bottom: 0;
+  left: 0; 
+  right: 0;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  background-color: rgba(0, 0, 0, .2);
+  z-index: 2;
+  display: none;
+}
+#wikileft-toggle:checked ~ #wikioverlay,
+#wikihead-search-toggle:checked ~ #wikioverlay,
+#wikicmds-toggle:checked ~ #wikioverlay {   
+  display: block;
+}
+
+
+
+/* These are for the left-sidebar. */
+#wikileft .vspace { margin-top:20px; }
+#wikileft ul { list-style:none; padding:0px; margin:0px; }
+#wikileft li { margin:8px 0px; padding-left: 6px; }
+.sidehead {
+  margin:0px; padding:4px 2px 2px 2px;
+  font-weight:bold; font-style:normal; 
+}
+.sidehead a 
+  { color:#505050; font-weight:bold; font-style:normal; }
+#wikileft a { text-decoration:none; color:black; padding: 8px 0; }
+#wikileft a:hover { text-decoration:underline; color:blue; }
+
+#wikicmds ul { list-style:none; margin:0px; padding:0px; }
+#wikicmds li { padding: 8px; border-top:1px solid #ccc;}
+#wikicmds li:first-child {border-top:none;}
+#wikicmds li a { text-decoration:none; color:black; border: none; }
+#wikicmds li a.createlink { display:none; }
+#wikicmds li a:hover { text-decoration:underline; color:blue; }
+
+
+/* These primarily adjust the size and spacing of heading elements,
+** most browsers have atrocious defaults for these. */
+h1, h2, h3, h4, h5, h6 { margin-top:15px; margin-bottom:9px; }
+h1, h2, h3, h6 { font-weight:normal; }
+h4, h5 { font-weight:bold; }
+h1 code, h2 code, h3 code, h4 code { font-size:15px; }
+h1 { font-size:27px; }
+h2 { font-size:22px; }
+h3 { font-size:18px; }
+h4 { font-size:16px; }
+h5 { font-size:15px; }
+h6 { font-size:15px; }
+
+.pagegroup { line-height:30px; }
+.pagetitle { line-height:24px; margin:0px; font-size:24px; font-weight:normal; }
+.wikiaction { margin-top:4px; margin-bottom:4px; }
+
+/* These control the fixed-width text elements of the page */
+pre, code { font-size: .93333em; } /*14px didn't scale down in smaller text*/
+pre, code, .diffmarkup { font-family:'Lucida Console','Andale Mono','Courier New',Courier,monospace; }
+pre { line-height: 18px; }
+pre code, code code, pre pre { font-size:100%; }
+pre, code.escaped { max-width: 100%; overflow: auto; }
+
+/* Large tables can scroll */
+div.scrollable { max-width: 100%; overflow: auto; border: 1px dotted red;}
+
+#wikiedit form { margin:0px; width:100%; max-width:100%; }
+#wikiedit textarea { width:99.5%; max-width:99.5%; max-height: 60vh; }
+#wikiedit input { max-width:99.5%; }
+.wikimessage { margin-top:4px; margin-bottom:4px; font-style:italic; }
+
+input, img, iframe {
+  max-width: 100%;
+}
+dd {
+  margin-left: 15px;
+}
+ul, ol {
+  margin: 0;
+}
+details > summary {
+  cursor: pointer;
+}
+details > summary:hover {
+  color: navy;
+}
+
+select, textarea, input {
+  font-size: 16px; /*disable zoom-in on some phones*/
+}
+
+/* xlpage-utf-8.php */
+.rtl, .rtl * {direction:rtl; unicode-bidi:bidi-override;}
+.ltr, .ltr * {direction:ltr; unicode-bidi:bidi-override;}
+.rtl .indent, .rtl.indent, .rtl .outdent, .rtl.outdent {
+  margin-left:0; margin-right: 15px;
+}
+
+/* pmwiki.php */
+ul, ol, pre, dl, p { margin-top:0px; margin-bottom:0px; }
+code.escaped { 
+  white-space: pre; 
+  display: inline-block;
+  vertical-align: bottom;
+  text-indent: 0;
+}
+.vspace { margin-top:25px; }
+.indent { margin-left:15px; }
+.outdent { margin-left:15px; text-indent:-15px; }
+a.createlinktext { text-decoration:none; border-bottom:1px dotted gray; }
+a.createlink { text-decoration:none; position:relative; top:-7px;
+  font-weight:bold; font-size:smaller; border-bottom:none; }
+img { border:0px; }
+
+/* Prevent white space below vertically stacked images */
+div.imgonly img, div.imgcaption img:first-child { vertical-align: bottom; }
+
+/* wikistyles.php */
+.frame { border:1px solid #cccccc; padding:4px; background-color:#f9f9f9; }
+.lfloat { float:left; margin-right:7px; }
+.rfloat { float:right; margin-left:7px; }
+.clearboth { clear: both; }
+
+/* stdmarkup.php */
+table.markup { border:2px dotted #ccf; width:100%; }
+/* td.markup1, td.markup2 { padding-left:0px; padding-right:0px; } */
+table.horiz td.markup1, table.vert td.markup1 { 
+  border-bottom:1px solid #ccf; border-right: none; width: auto; }
+table.horiz td.markup1, table.horiz td.markup2 {
+  /* horizontal markup tables to vertical */
+  display: block; }
+table.markup caption { text-align:left; }
+div.faq p, div.faq pre { margin-left:15px; }
+div.faq p.question { margin: 0; font-weight:bold; }
+div.faqtoc div.faq * { display:none; }
+div.faqtoc div.faq p.question 
+  { display:block; font-weight:normal; margin:7px 0 7px 15px; line-height:normal; }
+div.faqtoc div.faq p.question * { display:inline; }    
+
+/* simuledit.php */
+.editconflict { color:green; 
+  font-style:italic; margin-top:20px; margin-bottom:20px; }
+
+/* pagerev.php */
+.diffbox { border-left:1px #999 solid; margin-top:20px; font-size:12px;  }
+.diffauthor { font-weight:bold; }
+.diffchangesum { font-weight:bold; }
+.difftime { background-color:#ddd; }
+.difftype { font-weight:bold; }
+.diffadd { border-left:5px #9f9 solid; padding-left:5px; }
+.diffdel { border-left:5px #ff9 solid; padding-left:5px; }
+.diffrestore { margin:20px 0px; }
+.diffmarkup { font-size:14px;  } 
+.diffmarkup del { background:#ff9; text-decoration: none; }
+.diffmarkup ins { background:#9f9; text-decoration: none; }
+.rcplus { cursor:pointer; opacity:.3; font-weight:bold; padding: 0 .3em; }
+.rcplus:hover {color: white; background: blue; opacity: 1;}
+.rcreload { opacity:0.2; font-size: .9rem; cursor: pointer;  }
+.rcnew {background-color: #ffa;}
+
+/* urlapprove.php */
+.apprlink { font-size:smaller; }
+
+/* vardoc.php */
+a.varlink { text-decoration:none; }
+
+#wikiedit-minoredit {
+  white-space: nowrap;
+}
+
+/* In HTML5 only styles are valid for alignment */
+td.left,   th.left   { text-align: left;}
+td.center, th.center { text-align: center;}
+td.right,  th.right  { text-align: right;}
+td.top,    th.top    { vertical-align: top;}
+td.bottom, th.bottom { vertical-align: bottom;}
+td.middle, th.middle { vertical-align: middle;}
+
+.noPmTOC {display:none;}
+.PmTOCdiv { display: inline-block; font-size: 13px; overflow: auto; max-height: 500px;}
+.PmTOCdiv a { text-decoration: none; display: block; line-height: 1; margin: .4em 0;}
+.PmTOCdiv a.pmtoc-indent1 { margin-left: 1em; }
+.PmTOCdiv a.pmtoc-indent2 { margin-left: 2em; }
+.PmTOCdiv a.pmtoc-indent3 { margin-left: 3em; }
+.PmTOCdiv a.pmtoc-indent4 { margin-left: 4em; }
+.PmTOCdiv a.pmtoc-indent5 { margin-left: 5em; }
+.PmTOCdiv a.pmtoc-indent6 { margin-left: 6em; }
+.back-arrow {font-size: .8rem; text-decoration: none; vertical-align: text-top;}
+#PmTOCchk + label {cursor: pointer;}
+#PmTOCchk {display: none;}
+#PmTOCchk:not(:checked) + label > .pmtoc-show {display: none;}
+#PmTOCchk:checked + label > .pmtoc-hide {display: none;}
+#PmTOCchk:checked + label + div {display: none;}
+
+table.simpletable {
+  border-collapse: collapse;
+}
+table.simpletable tr:nth-child(odd) {
+  background-color: #eee;
+}
+table.simpletable th {
+  background-color: #ccc;
+}
+table.simpletable th, table.simpletable td {
+  border: 1px solid #888;
+}
+
+table.sortable th {
+  cursor: pointer;
+}
+
+table.sortable th:hover::after {
+  color: inherit;
+  content: "\00A0\025B8";
+}
+
+table.sortable th::after {
+  color: transparent;
+  content: "\00A0\025B8";
+}
+
+table.sortable th.dir-u::after {
+  color: inherit;
+  content: "\00A0\025BE";
+}
+
+table.sortable th.dir-d::after {
+  color: inherit;
+  content: "\00A0\025B4";
+}
+
+*[data-pmtoggle], .pmtoggleall {
+  cursor: pointer;
+  font-weight: bold;
+}
+*[data-pmtoggle]::before {
+  content: "\025BE\00A0";
+  float: left;
+}
+*[data-pmtoggle="closed"]::before {
+  content: "\025B8\00A0";
+}
+
+*[data-pmtoggle] + * {
+  margin-left: .8em;
+}
+*[data-pmtoggle="closed"] + * {
+  display: none;
+}
+
+@media screen and (min-width:50em) {
+  html, body, #bodywrap {
+    line-height: 20px;
+    width: 100%;
+    margin: 0 auto;
+    background-color: #f7f7f7;
+  }
+
+  #wikileft, #wikihead-searchform, #wikicmds {
+    background-color: #f7f7f7;
+    opacity: 1;
+    display: block;
+    position: relative;
+    border: none;
+    max-width: none;
+    height: auto;
+    max-height: none;
+    overflow: auto;
+    top: 0px;  
+    -webkit-box-shadow: none;
+    -moz-box-shadow: none;
+    box-shadow: none;
+  }
+  #wikicmds-toggle-label,  #wikileft-toggle-label,  #wikihead-search-toggle-label {
+    display: none;
+  }
+  #wikihead-searchform {
+    background-color: transparent;
+    float: right;
+    padding: 4px;
+    right: 6px;
+    top: 6px;
+    width: auto;
+    max-width: none;
+    line-height: inherit;
+    overflow: hidden;
+  }
+  #wikilogo {
+    display: inline-block;
+    margin-top: 4px;
+    padding: 6px;
+  }
+  #wikihead, #wikihead input {
+    font-size: 85%;
+  }
+  
+  #wikihead-recent-changes-link, #wikihead-searchlink{
+    display: inline;
+  }
+  
+  #wikimid {
+    display: table;
+    table-layout:fixed;
+    width: 100%;
+  }
+  #wikisidebar, #wikibody {
+    display: table-cell;
+  }
+  
+  #wikisidebar {
+    position: relative;
+    border-right:1px solid #ccc; 
+    width:167px;
+    vertical-align: top;
+    padding: 0; margin: 0;
+    overflow: auto;
+  }
+  #wikileft {
+    padding:6px; 
+    left: 0;
+    margin: 0 1px 0 0;
+    background: transparent;
+    font-size: 13px;
+    line-height: 17px;
+  }
+  #wikileft a { padding: 0px; }
+  #wikileft li {margin:0px; }
+  
+  #wikibody {
+    padding-left: 10px;
+    vertical-align: top;
+  }
+  
+  #wikicmds {
+    right: 0px;
+    background-color: transparent;
+    float:right;
+    white-space:nowrap; 
+    font-size:13px; 
+  }
+  #wikicmds li { display:inline; margin:0px 5px; padding: 0; border: none; }
+  
+  #wikifoot {
+    padding-left:178px;
+  }
+  
+  #wikifoot.nosidebar {
+    padding-left:10px;
+  }
+  .vspace { margin-top: 20px; }
+  .indent { margin-left:40px; }
+  .outdent { margin-left:40px; text-indent:-40px; }
+  
+  .rtl .indent, .rtl.indent, .rtl .outdent, .rtl.outdent {
+    margin-left:0; margin-right: 40px;
+  }
+    
+  dd { margin-left: 40px; }
+
+  table.horiz td.markup1, table.horiz td.markup2 {
+    display: table-cell; }
+    
+  td.markup1, td.markup2 { padding-left:10px; padding-right:10px; }
+  table.vert td.markup1 { border-bottom:1px solid #ccf; }
+  table.horiz td.markup1 { width:23em; border-right:1px solid #ccf; border-bottom:none; }
+  td.markup1 pre { white-space: pre-wrap; }
+  
+  div.faq p, div.faq pre { margin-left:40px; }
+  div.faq p.question { margin:15px 0 12px 0; }
+  div.faqtoc div.faq p.question 
+    { margin:8px 0 8px 20px; }
+    
+  
+  select, textarea, input {
+    font-size: 14px;
+  }
+  
+  #wikileft-toggle:checked ~ #wikioverlay,
+  #wikihead-search-toggle:checked ~ #wikioverlay,
+  #wikicmds-toggle:checked ~ #wikioverlay {   
+    display: none;
+  }
+
+}
+
+/* These affect the printed appearance of the web view (not the separate
+** print view) of pages.  The sidebar and action links aren't printed. */
+@media print {
+  body { width:auto; margin:0px; padding:8px; }
+  #wikihead, #wikileft, #wikicmds, .footnav { display:none; }
+  #wikifoot { padding:2px; }
+  *[data-pmtoggle="closed"] + * { display: inherit; }
+  *[data-pmtoggle="closed"]::before { content: "\025BE\00A0"; }
+}
+
+/* Fade-in animation */
+@keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+@-ms-keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+@-o-keyframes fadein {
+    from { opacity: 0; }
+    to   { opacity: 1; }
+}
+
blob - /dev/null
blob + 53d2d3fb437082a594700f0fb185a79520ed7163 (mode 644)
--- /dev/null
+++ pub/skins/pmwiki-responsive/skin.js
@@ -0,0 +1,78 @@
+/***********************************************************************
+**  skin.js
+**  Copyright 2016-2017 Petko Yotov www.pmwiki.org/petko
+**  
+**  This file is part of PmWiki; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License as published
+**  by the Free Software Foundation; either version 2 of the License, or
+**  (at your option) any later version.  See pmwiki.php for full details.
+**  
+**  This script fixes the styles of some elements when some directives
+**  like (:noleft:) are used in a page.
+***********************************************************************/
+(function(){
+  var W = window, D = document;
+  function $(x) { // returns element from id
+    return D.getElementById(x);
+  }
+  function hide(id) { // hides element
+    var el = $(id);
+    if(el) el.style.display = 'none'; 
+  }
+  function cname(id, c) { // set element className
+    var el = $(id);
+    if(el) el.className = c;
+  }
+  var wsb = $('wikisidebar');
+  if(! wsb) { // (:noleft:)
+    hide('wikileft-toggle-label')
+    cname('wikifoot', 'nosidebar');
+  }
+  else { 
+    var sbcontent = wsb.textContent || wsb.innerText;
+    if(! sbcontent.replace(/\s+/, '').length) // empty sidebar, eg. protected
+      hide('wikileft-toggle-label');
+  }
+  var wcmd = $('wikicmds');
+  if(wcmd) { // page actions
+    var pacontent = wcmd.textContent || wcmd.innerText;
+    if(! pacontent.replace(/\s+/, '').length) // empty, eg. protected
+      hide('wikicmds-toggle-label');
+  }
+  if(! $('wikihead-searchform')) // no search form, eg. custom header
+    hide('wikihead-search-toggle-label');
+  var overlay = $('wikioverlay');
+  if(overlay) {
+    overlay.addEventListener('click', function(){
+      $('wikicmds-toggle').checked = false;
+      $('wikihead-search-toggle').checked = false;
+      $('wikileft-toggle').checked = false;
+    });
+  }
+  var scrolltables = function() {
+    // This function "wraps" large tables in a scrollable div
+    // and "unwraps" narrow tables from the scrollable div 
+    // allowing table alignement
+    var tables = D.getElementsByTagName('table');
+    for(var i=0; i<tables.length; i++) {
+      var t = tables[i];
+      var pn = t.parentNode;
+      if(pn.className == 'scrollable') {
+        var gp = pn.parentNode;
+        if(t.offsetWidth < gp.offsetWidth) {
+          gp.insertBefore(t, pn);
+          gp.removeChild(pn);
+        }
+      }
+      else  {
+        if(t.offsetWidth > pn.offsetWidth) {
+          var nn = D.createElement('div');
+          pn.insertBefore(nn, t).className = 'scrollable';
+          nn.appendChild(t);
+        }
+      }
+    }
+  }
+  W.addEventListener('resize', scrolltables, false);
+  D.addEventListener('DOMContentLoaded', scrolltables, false);
+})();
blob - /dev/null
blob + 5688264740cd33bd651aafa3f648d4d5cd519c95 (mode 644)
--- /dev/null
+++ pub/skins/pmwiki-responsive/skin.php
@@ -0,0 +1,89 @@
+<?php if (!defined('PmWiki')) exit();
+/***********************************************************************
+**  skin.php
+**  Copyright 2016-2019 Petko Yotov www.pmwiki.org/petko
+**  
+**  This file is part of PmWiki; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License as published
+**  by the Free Software Foundation; either version 2 of the License, or
+**  (at your option) any later version.  See pmwiki.php for full details.
+***********************************************************************/
+
+
+global $HTMLStylesFmt, $SkinElementsPages, $DefaultSkinElements, $TableCellAlignFmt, 
+  $SearchBoxInputType, $WrapSkinSections, $HideTemplateSections, $EnableTableAttrToStyles;
+
+# Disable inline styles injected by the PmWiki core (we provide these styles in skin.css)
+$styles = explode(' ', 'pmwiki rtl-ltr wikistyles markup simuledit diff urlapprove vardoc PmSortable PmTOC');
+foreach($styles as $style) $HTMLStylesFmt[$style] = '';
+
+# CSS alignment for table cells (valid HTML5)
+SDV($TableCellAlignFmt, " class='%s'");
+
+# For (:searchbox:), valid semantic HTML5
+$SearchBoxInputType = "search";
+
+# remove deprecated "name=" parameter from anchor tags
+if($GLOBALS['VersionNum'] < 2002056) {
+  # we want the skin to also work with older PmWiki versions
+  Markup('[[#','<[[','/(?>\\[\\[#([A-Za-z][-.:\\w]*))\\]\\]/e',
+    "Keep(TrackAnchors('$1') ? '' : \"<a id='$1'></a>\", 'L')");
+}
+else {
+  Markup('[[#','<[[','/(?>\\[\\[#([A-Za-z][-.:\\w]*))\\]\\]/',
+    "MarkupKeepTrackAnchors");
+}
+function MarkupKeepTrackAnchors($m) {
+  return Keep(TrackAnchors($m[1]) ? '' : "<a id='{$m[1]}'></a>", 'L');
+}
+
+# in HTML5 "clear" is a style not an attribute
+Markup('[[<<]]','inline','/\\[\\[&lt;&lt;\\]\\]/',"<br class='clearboth' />");
+
+# Allow skin header and footer to be written 
+# in a wiki page, and use defaults otherwise
+SDVA($WrapSkinSections, array(
+  '#skinheader' => '<header id="wikihead">
+      <div id="wikihead-content">
+      %s
+      </div>
+    </header>',
+  '#skinfooter' => '<footer id="wikifoot">
+    %s
+  </footer>',
+));
+SDVA($HideTemplateSections, array(
+  '#skinheader' => 'PageHeaderFmt',
+  '#skinfooter' => 'PageFooterFmt',
+));
+
+# This function prints a skin element which is written 
+# inside a [[#header]]...[[#headerend]] section in Site.SkinElements
+# overriding the existing section from the template file
+
+function SkinFmt($pagename, $args) {
+  global $WrapSkinSections, $HideTemplateSections, $TmplDisplay;
+  
+  $args = preg_split('!\\s+!', $args, -1, PREG_SPLIT_NO_EMPTY);
+  
+  $section = array_shift($args);
+  $hidesection = $HideTemplateSections[$section];
+  
+  if(isset($TmplDisplay[$hidesection]) && $TmplDisplay[$hidesection] == 0) {
+    return;      # Section was disabled by (:noheader:) or (:nofooter:)
+  }
+  
+  foreach($args as $p) {
+    $pn = FmtPageName($p, $pagename);
+    $elm = RetrieveAuthSection($pn, "$section{$section}end");
+    if(!$elm) continue;
+    
+    $html = MarkupToHTML($pagename, Qualify($pn, $elm));
+    echo sprintf($WrapSkinSections[$section], $html);
+    SetTmplDisplay($hidesection,0);
+    return;
+  }
+  if(@$DefaultSkinElements[$section])
+    echo FmtPageName($DefaultSkinElements[$section], $pagename);
+}
+
blob - /dev/null
blob + 596fd4d6c6a213a32d387ed069e869c86de70a20 (mode 644)
--- /dev/null
+++ pub/skins/pmwiki-responsive/skin.tmpl
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html $HTMLTagAttr>
+<head>
+  <title>$WikiTitle | {$Group} / {$Title} $ActionTitle</title>
+  <!-- Skin Copyright 2017 Petko Yotov www.pmwiki.org/petko ; Skin License GNU GPLv2+ -->
+  <meta name="viewport" content="width=device-width, initial-scale=1"/>
+  <link rel='stylesheet' href='$SkinDirUrl/skin.css' type='text/css' />
+  <!--HTMLHeader-->
+</head>
+<body>
+  <div id="bodywrap">
+    <input id="wikileft-toggle" type="checkbox"/>
+    <label for="wikileft-toggle" id="wikileft-toggle-label"></label>
+
+    <input id="wikihead-search-toggle" type="checkbox"/>
+    <label for="wikihead-search-toggle" id="wikihead-search-toggle-label"></label>
+    <input id="wikicmds-toggle" type="checkbox"/>
+
+<!--function:SkinFmt #skinheader {$Group}.SkinElements {$SiteGroup}.SkinElements-->
+<!--PageHeaderFmt-->
+    <header id="wikihead">
+      <div id="wikihead-content">
+        <span id="wikilogo"><a href="{$ScriptUrl}"><img src="$PageLogoUrl" alt="$WikiTitle"/></a></span>
+        <form id="wikihead-searchform" action="{$ScriptUrl}" method="get">
+          <span class="headnav" id="wikihead-recent-changes-link">
+            <a href="{$ScriptUrl}/$[{$Group}/RecentChanges]" accesskey="$[ak_recentchanges]">$[Recent Changes]</a> -
+          </span>
+          <span id="wikihead-searchlink"><a href="{$ScriptUrl}/$[{$SiteGroup}/Search]">$[Search]</a>:</span>
+          <input type="hidden" name="n" value="{$FullName}" />
+          <input type="hidden" name="action" value="search" />
+          <input id="wikihead-searchquery" type="search" name="q" value="" class="inputbox searchbox" placeholder="$[Search]" />
+          <input id="wikihead-searchsubmitbtn" type="submit" class="inputbutton searchbutton" value="$[Go]" />
+        </form>
+      </div><!--wikiheadcontent-->
+    </header><!--wikihead-->
+<!--/PageHeaderFmt-->
+
+    <div id="wikimid">
+<!--PageLeftFmt-->
+      <nav id="wikisidebar">
+        <div id="wikileft">
+          <!--wiki:{$Group}.SideBar {$SiteGroup}.SideBar-->
+        </div>
+      </nav>
+<!--/PageLeftFmt-->
+
+      <div id="wikibody">
+        <main>
+<!--PageActionFmt-->
+        <label for="wikicmds-toggle" id="wikicmds-toggle-label"></label>
+        <div id='wikicmds'><!--wiki:{$Group}.PageActions {$SiteGroup}.PageActions--></div>
+<!--/PageActionFmt-->
+<!--PageTitleFmt-->
+          <div id='wikititle'>
+            <div class='pagegroup'><a href='{$ScriptUrl}/{$Group}'>{$Group}</a> /</div>
+            <h1 class='pagetitle'>{$Title}</h1>
+          </div>
+<!--/PageTitleFmt-->
+
+<!--PageText-->
+        </main>
+
+      </div><!--wikibody-->
+
+    </div><!--wikimid-->
+
+<!--function:SkinFmt #skinfooter {$Group}.SkinElements {$SiteGroup}.SkinElements-->
+<!--PageFooterFmt-->
+    <footer id='wikifoot'>
+      <div id="wikifoot-links" class="footnav">
+        <a rel="nofollow" href="{$PageUrl}?action=edit">$[Edit]</a> -
+        <a rel="nofollow" href="{$PageUrl}?action=diff">$[History]</a> -
+        <a rel="nofollow" href="{$PageUrl}?action=print" target="_blank">$[Print]</a> -
+        <a href="{$ScriptUrl}/$[{$Group}/RecentChanges]">$[Recent Changes]</a> -
+        <a href="{$ScriptUrl}/$[{$SiteGroup}/Search]">$[Search]</a>
+      </div>
+      <div id="wikifoot-lastmod" class="lastmod">$[Page last modified on {$LastModified}]</div>
+    </footer>
+<!--/PageFooterFmt-->
+    <div id="wikioverlay"></div>
+  </div><!--bodywrap-->
+
+  <script type='text/javascript' src='$SkinDirUrl/skin.js' async></script>
+
+<!--HTMLFooter-->
+
+</body>
+</html>
+
blob - /dev/null
blob + b972d12a8cdad477a90b61bd1e1610158a8816a9 (mode 644)
--- /dev/null
+++ pub/skins/pmwiki-responsive/xclose.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" stroke-width="8" stroke="#bf0000" viewBox="0 0 60 60"><!-- Copyright 2016 Petko Yotov www.pmwiki.org/petko ; License GNU GPLv2+ --><path d="m56 56l-52-52m0 52l52-52"/></svg>
\ No newline at end of file
blob - /dev/null
blob + c7ead3df5fd8fa3b694f2b6b1f884d8693132b13 (mode 644)
--- /dev/null
+++ pub/skins/pmwiki-responsive/xmenu.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" stroke-width="8" fill="none" stroke="#7f7f7f" viewBox="0 0 60 60"><!-- Copyright 2016 Petko Yotov www.pmwiki.org/petko ; License GNU GPLv2+ --><path d="m0 6h60m-60 21h60m-60 21h60"/></svg>
\ No newline at end of file
blob - /dev/null
blob + 4495dcc8d3eaaf54d3271cc3d3da44e873ad80ba (mode 644)
--- /dev/null
+++ pub/skins/pmwiki-responsive/xsearch.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" stroke="#7c7c7c" fill="none" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="8" viewBox="0 0 60 60"><!-- Copyright 2016 Petko Yotov www.pmwiki.org/petko ; License GNU GPLv2+ --><circle r="20" cy="25" cx="25"/><path d="m56 56l-16-16"/></svg>
\ No newline at end of file
blob - /dev/null
blob + 6b4d840aaffc2586556118f46e9d14d8aefc0567 (mode 644)
--- /dev/null
+++ pub/skins/pmwiki-responsive/xwrench.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" stroke-linecap="null" stroke-linejoin="null" stroke-width="0" stroke="#7f7f7f" fill="#7f7f7f" viewBox="0 0 60 60"><!-- Copyright 2016 Petko Yotov www.pmwiki.org/petko ; License GNU GPLv2+ --><path d="m51.28 27.324c3.917-4.503 4.704-10.65 2.573-15.818l-7.863 9.17-7.751-1.508-2.569-7.467 7.844-9.149c-5.396-1.359-11.34.28-15.24 4.766-4.113 4.73-4.786 11.278-2.241 16.592l-20.498 23.571c-2.18 2.506-1.915 6.306.591 8.487 2.506 2.178 6.306 1.915 8.487-.591l20.474-23.547c5.636 1.816 12.06.244 16.193-4.508z" transform="rotate(-90 30 30)"/></svg>
\ No newline at end of file
blob - /dev/null
blob + 7dadea1ab6cdb18bb1668213ae4430b329bb232c (mode 644)
--- /dev/null
+++ pub/skins/print/README
@@ -0,0 +1,20 @@
+This directory contains the files to print pages in PmWiki for ?action=print.
+This is a template just like any other layout skin, except that for
+?action=print PmWiki looks for print.tmpl instead of screen.tmpl.
+
+==>Don't edit these files directly, as you may lose your edits the
+next time you upgrade PmWiki!
+
+Instead, copy the files to another directory in pub/skins/ and edit
+them there.  You can then configure PmWiki to use your modified layout
+files by setting $ActionSkin['print'] to the name of your new skin.
+For example, if you copy your custom print skin to pub/skins/custom, 
+then you would set
+   $ActionSkin['print'] = 'custom';
+in local/config.php.
+
+The files in this directory:
+    print.tmpl    -- the default template for ?action=print
+    print.css     -- the print template's css
+    print.php     -- loaded when the skin is loaded, it redefines the link
+                     formats to a form better suited for printing
blob - /dev/null
blob + 5244ff5e6d57064d6e8f4f2d3e1591301251d6db (mode 644)
--- /dev/null
+++ pub/skins/print/print.css
@@ -0,0 +1,50 @@
+/***********************************************************************
+** print.css
+**  Copyright 2004 Patrick R. Michaud (pmichaud@pobox.com)
+**  This file is part of PmWiki; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License as published
+**  by the Free Software Foundation; either version 2 of the License, or
+**  (at your option) any later version.  See pmwiki.php for full details.
+***********************************************************************/
+
+/***********************************************************************
+** These settings are part of the ?action=print skin.  If you want
+** to change these settings, create a new print template and set
+** $PrintTemplateFmt in the config.php file to point to your new 
+** printing skin.
+***********************************************************************/
+
+body { 
+  width:auto;
+  background-color:white;
+  color:black;
+  font-family:serif;
+}
+
+#printhead { 
+  font-family:sans-serif;
+  border-top:3px solid #a0a0a0; 
+  border-bottom:5px solid #a0a0a0; 
+  margin-bottom:1em; 
+}
+#printhead h3 { margin-top:0px; } 
+#printhead h1 { margin-bottom:0px; }
+
+#printtitle { 
+}
+
+#printfoot {
+  clear:both;
+  margin-top:1em; 
+  border-top:5px solid #a0a0a0; 
+  font-size:smaller; 
+}
+
+  
+a:link { color:#444444; font-weight:bold; text-decoration:none; }
+a:visited { color:#444444; font-weight:bold; text-decoration:none; }
+a.wikilink:hover { color: #444444; text-decoration:underline; }
+a.createlink { color:#444444; }
+a.createlink:visited { color:#444444; }
+a.createlink:hover { color:#ff2222; }
+
blob - /dev/null
blob + 4d30dd0471eac1c1c83aaa31e18874f3b441d770 (mode 644)
--- /dev/null
+++ pub/skins/print/print.php
@@ -0,0 +1,29 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script defines additional settings needed when the 'print'
+    skin is loaded (usually in response to ?action=print, as controlled
+    by the $ActionSkin['print'] setting.  See scripts/skins.php for
+    more details.
+
+    The changes made are:
+      - Redefines the standard layout to a format suitable for printing
+      - Redefines internal links to keep ?action=print
+      - Changes the display of URL and mailto: links
+      - Uses GroupPrintHeader and GroupPrintFooter pages instead
+        of GroupHeader and GroupFooter
+*/
+
+global $LinkPageExistsFmt, $GroupPrintHeaderFmt, 
+  $GroupPrintFooterFmt, $GroupHeaderFmt, $GroupFooterFmt;
+
+$LinkPageExistsFmt = "<a class='wikilink' href='\$PageUrl?action=print'>\$LinkText</a>";
+SDV($GroupPrintHeaderFmt,'(:include $Group.GroupPrintHeader basepage={*$FullName}:)(:nl:)');
+SDV($GroupPrintFooterFmt,'(:nl:)(:include $Group.GroupPrintFooter basepage={*$FullName}:)');
+$GroupHeaderFmt = $GroupPrintHeaderFmt;
+$GroupFooterFmt = $GroupPrintFooterFmt;
+
blob - /dev/null
blob + 6164520a4fe947085a2a7eb85fd0ea07a607b573 (mode 644)
--- /dev/null
+++ pub/skins/print/print.tmpl
@@ -0,0 +1,20 @@
+<!DOCTYPE html 
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+  <title>$WikiTitle | {$Group} / {$Title}</title>
+  <link rel='stylesheet' href='$SkinDirUrl/print.css' type='text/css' />
+  <!--HTMLHeader-->
+</head>
+<body>
+  <div id='printhead'>
+    <h3>$[From $WikiTitle]</h3>
+    <h1 class='pagename'><a href='$ScriptUrl/{$Group}'>{$Group}: {$Title}</a></h1>
+  </div>
+<!--PageText-->
+  <div id='printfoot'>
+    <div class='from'>$[Retrieved from {$PageUrl}]</div>
+    <div class='lastmod'>$[Page last modified on {$LastModified}]</div></div>
+<!--HTMLFooter-->
+</body>
+</html>
blob - /dev/null
blob + e9fd498fca44223d7bc7b243e676a79c88ec6f8e (mode 644)
--- /dev/null
+++ scripts/.htaccess
@@ -0,0 +1,19 @@
+# This file is script/.htaccess -- the default distribution contains this
+# file to prevent script/ files from being accessed directly by browsers
+# (this is a potential, albeit very unlikely, security hole).
+#
+# If you alter or replace this file, it will likely be overwritten when
+# you upgrade from one version of PmWiki to another.  Be sure to save
+# a copy of your alterations in another location so you can restore them,
+# and you might try changing this file to be read-only to prevent a PmWiki
+# upgrade from overwriting your altered version.
+
+<IfModule !mod_authz_host.c>
+  Order Deny,Allow
+  Deny from all
+</IfModule>
+
+<IfModule mod_authz_host.c>
+  Require all denied
+</IfModule>
+
blob - /dev/null
blob + 4ab13cfd54a804c884292dbbe6bad5e7ee5c30ec (mode 644)
--- /dev/null
+++ scripts/author.php
@@ -0,0 +1,60 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script handles author tracking.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($AuthorNameChars, "- '\\w\\x80-\\xff");
+SDV($AuthorCookie, $CookiePrefix.'author');
+SDV($AuthorCookieExpires,$Now+60*60*24*30);
+SDV($AuthorCookieDir,'/');
+SDV($AuthorGroup,'Profiles');
+SDV($AuthorRequiredFmt,
+  "<h3 class='wikimessage'>$[An author name is required.]</h3>");
+Markup('[[~','<links','/\\[\\[~(.*?)\\]\\]/',"[[$AuthorGroup/$1]]");
+
+$LogoutCookies[] = $AuthorCookie;
+
+if (!isset($Author)) {
+  if (isset($_POST['author'])) {
+    $x = stripmagic($_POST['author']);
+    pmsetcookie($AuthorCookie, $x, $AuthorCookieExpires, $AuthorCookieDir);
+  } elseif (@$_COOKIE[$AuthorCookie]) {
+    $x = stripmagic(@$_COOKIE[$AuthorCookie]);
+  } else $x = @$AuthId;
+  $Author = trim(PHSC(preg_replace("/[^$AuthorNameChars]/", '', strval($x)), 
+                ENT_COMPAT));
+}
+if (!isset($AuthorPage)) $AuthorPage = 
+    FmtPageName('$AuthorGroup/$Name', MakePageName("$AuthorGroup.$AuthorGroup", $Author));
+SDV($AuthorLink,($Author) ? "[[~$Author]]" : '?');
+
+## EnableSignatures() is now called from stdconfig.php, because author.php may be 
+## included early by local config or recipe, before some variables are defined.
+function EnableSignatures() {
+  global $EnableLocalTimes, $CurrentLocalTime, $CurrentTime,
+    $Author, $EnableAuthorSignature, $ROSPatterns;
+  if (! IsEnabled($EnableAuthorSignature,1)) return;
+  $time = IsEnabled($EnableLocalTimes, 0)? $CurrentLocalTime : $CurrentTime;
+  SDVA($ROSPatterns, array(
+    '/(?<!~)~~~~(?!~)/' => "[[~$Author]] $time",
+    '/(?<!~)~~~(?!~)/' => "[[~$Author]]",
+  ));
+}
+if (IsEnabled($EnablePostAuthorRequired,0))
+  array_unshift($EditFunctions,'RequireAuthor');
+
+## RequireAuthor forces an author to enter a name before posting.
+function RequireAuthor($pagename, &$page, &$new) {
+  global $Author, $MessagesFmt, $AuthorRequiredFmt, $EnablePost;
+  if (!$Author) {
+    $MessagesFmt[] = $AuthorRequiredFmt;
+    $EnablePost = 0;
+  }
+}
blob - /dev/null
blob + 0f1aebf244840bb756270ae02a3dd4a7551f5cb7 (mode 644)
--- /dev/null
+++ scripts/authuser.php
@@ -0,0 +1,232 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2005-2021 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    The APR compatible MD5 encryption algorithm in _crypt() below is 
+    based on code Copyright 2005 by D. Faure and the File::Passwd
+    PEAR library module by Mike Wallner <mike@php.net>.
+
+    This script enables simple authentication based on username and 
+    password combinations.  At present this script can authenticate
+    from passwords held in arrays or in .htpasswd-formatted files,
+    but eventually it will support authentication via sources such
+    as LDAP and Active Directory.
+
+    To configure a .htpasswd-formatted file for authentication, do
+        $AuthUser['htpasswd'] = '/path/to/.htpasswd';
+    prior to including this script.  
+
+    Individual username/password combinations can also be placed
+    directly in the $AuthUser array, such as:
+        $AuthUser['pmichaud'] = pmcrypt('secret');
+
+    To authenticate against an LDAP server, put the url for
+    the server in $AuthUser['ldap'], as in:
+        $AuthUser['ldap'] = 'ldap://ldap.example.com/ou=People,o=example?uid';
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+# let Site.AuthForm know that we're doing user-based authorization
+$EnableAuthUser = 1;
+
+if (@$_POST['authid']) 
+  AuthUserId($pagename, stripmagic(@$_POST['authid']), 
+             stripmagic(@$_POST['authpw']));
+else SessionAuth($pagename);
+
+function AuthUserId($pagename, $id, $pw=NULL) {
+  global $AuthUser, $AuthUserPageFmt, $AuthUserFunctions, 
+    $AuthId, $MessagesFmt, $AuthUserPat, $MultiFactorAuthFunction, $FailedLoginsFunction;
+    
+  $flf = (IsEnabled($FailedLoginsFunction) && function_exists($FailedLoginsFunction))
+    ? $FailedLoginsFunction : false;
+  if ($flf && ! $flf($id)) { return false; }
+  
+  $mff = (IsEnabled($MultiFactorAuthFunction, 0) && function_exists($MultiFactorAuthFunction))
+    ? $MultiFactorAuthFunction : false;
+  $auth = array();
+  foreach((array)$AuthUser as $k=>$v) $auth[$k] = (array)$v;
+  $authid = '';
+
+  # load information from SiteAdmin.AuthUser (or page in $AuthUserPageFmt)
+  SDV($AuthUserPageFmt, '$SiteAdminGroup.AuthUser');
+  SDVA($AuthUserFunctions, array(
+    'htpasswd' => 'AuthUserHtPasswd',
+    'ldap' => 'AuthUserLDAP',
+#    'mysql' => 'AuthUserMySQL',
+    $id => 'AuthUserConfig'));
+
+  SDV($AuthUserPat, "/^\\s*([@\\w][^\\s:]*):(.*)/m");
+  foreach ( (array)$AuthUserPageFmt as $aupn) {
+    $pn = FmtPageName($aupn, $pagename);
+    $apage = ReadPage($pn, READPAGE_CURRENT);
+    if ($apage && preg_match_all($AuthUserPat,
+                                $apage['text'], $matches, PREG_SET_ORDER)) {
+      foreach($matches as $m) {
+        if (!preg_match_all('/\\bldaps?:\\S+|[^\\s,]+/', $m[2], $v))
+          continue;
+        if ($m[1][0] == '@')
+          foreach($v[0] as $g) $auth[$g][] = $m[1];
+        else $auth[$m[1]] = array_merge((array)@$auth[$m[1]], $v[0]);
+      }
+    }
+  }
+
+  $authlist = array();
+  if (func_num_args()==2) $authid = $id;
+  else
+    foreach($AuthUserFunctions as $k => $fn) 
+      if (@$auth[$k] && $fn($pagename, $id, $pw, $auth[$k], $authlist)) 
+        { $authid = $id; break; }
+
+  if (!$authid) { $GLOBALS['InvalidLogin'] = 1; if ($flf) $flf($id, 1); return; }
+  if ($mff && ! $mff($id, $pw)) {
+    if ($flf) $flf($id, 1);
+    return;
+  }
+    
+  
+  if (!isset($AuthId)) $AuthId = $authid;
+  $authlist["id:$authid"] = 1;
+  $authlist["id:-$authid"] = -1;
+  foreach(preg_grep('/^@/', (array)@$auth[$authid]) as $g) 
+    $authlist[$g] = 1;
+  foreach(preg_grep('/^@/', (array)@$auth['*']) as $g) 
+    $authlist[$g] = 1;
+  foreach(preg_grep('/^@/', array_keys($auth)) as $g) # useless? PITS:01201
+    if (in_array($authid, $auth[$g])) $authlist[$g] = 1;
+  if (@$auth['htgroup']) {
+    foreach(AuthUserHtGroup($pagename, $id, $pw, $auth['htgroup']) as $g)
+      $authlist["@$g"] = 1;
+  }
+  foreach(preg_grep('/^@/', (array)@$auth["-$authid"]) as $g) 
+    unset($authlist[$g]);
+  SessionAuth($pagename, array('authid' => $authid, 'authlist' => $authlist));
+}
+
+
+function AuthUserConfig($pagename, $id, $pw, $pwlist) {
+  foreach ((array)$pwlist as $chal) 
+    if (_crypt($pw, $chal) == $chal) return true;
+  return false;
+}
+
+
+function AuthUserHtPasswd($pagename, $id, $pw, $pwlist) {
+  foreach ((array)$pwlist as $f) {
+    $fp = fopen($f, "r"); if (!$fp) continue;
+    while ($x = fgets($fp, 1024)) {
+      $x = rtrim($x);
+      @list($i, $c, $r) = explode(':', $x, 3);
+      if ($i == $id && _crypt($pw, $c) == $c) { fclose($fp); return true; }
+    }
+    fclose($fp);
+  }
+  return false;
+}
+
+
+function AuthUserHtGroup($pagename, $id, $pw, $pwlist) {
+  $groups = array();
+  foreach ((array)$pwlist as $f) {
+    $fp = fopen($f, 'r'); if (!$fp) continue;
+    while ($x = fgets($fp, 4096)) {
+      if (preg_match('/^(\\w[^\\s:]+)\\s*:(.*)$/', trim($x), $match)) {
+        $glist = preg_split('/[\\s,]+/', $match[2], -1, PREG_SPLIT_NO_EMPTY);
+        if (in_array($id, $glist)) $groups[$match[1]] = 1;
+      }
+    }
+    fclose($fp);
+  }
+  return array_keys($groups);
+}
+  
+
+function AuthUserLDAP($pagename, $id, $pw, $pwlist) {
+  global $AuthLDAPBindDN, $AuthLDAPBindPassword, $AuthLDAPReferrals;
+  if (!$pw) return false;
+  if (!function_exists('ldap_connect')) 
+    Abort('authuser: LDAP authentication requires PHP ldap functions','ldapfn');
+  foreach ((array)$pwlist as $ldap) {
+    if (!preg_match('!(ldaps?://[^/]+)/(.*)$!', $ldap, $match))
+      continue;
+    ##  connect to the LDAP server
+    list($z, $url, $path) = $match;
+    $ds = ldap_connect($url);
+    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
+    if (isset($AuthLDAPReferrals)) # *NOT* IsEnabled
+      ldap_set_option($ds, LDAP_OPT_REFERRALS, $AuthLDAPReferrals);
+    ##  For Active Directory, don't specify a path and we simply
+    ##  attempt to bind with the username and password directly
+    if (!$path && @ldap_bind($ds, $id, $pw)) { ldap_close($ds); return true; }
+    ##  Otherwise, we use Apache-style urls for LDAP authentication
+    ##  Split the path into its search components
+    list($basedn, $attr, $sub, $filter) = explode('?', $path);
+    if (!$attr) $attr = 'uid';
+    if (!$sub) $sub = 'one';
+    if (!$filter) $filter = '(objectClass=*)';
+    $binddn = @$AuthLDAPBindDN;
+    $bindpw = @$AuthLDAPBindPassword;
+    if (ldap_bind($ds, $binddn, $bindpw)) {
+      ##  Search for the appropriate uid
+      $fn = ($sub == 'sub') ? 'ldap_search' : 'ldap_list';
+      $sr = $fn($ds, $basedn, "(&$filter($attr=$id))", array($attr));
+      $x = ldap_get_entries($ds, $sr);
+      ##  If we find a unique id, bind to it for success
+      if ($x['count'] == 1) {
+        $dn = $x[0]['dn'];
+        if (@ldap_bind($ds, $dn, $pw)) { ldap_close($ds); return true; }
+      }
+    }
+    ldap_close($ds);
+  }
+  return false;
+}
+
+
+#  The _crypt function provides support for SHA1 encrypted passwords 
+#  (keyed by '{SHA}') and Apache MD5 encrypted passwords (keyed by 
+#  '$apr1$'); otherwise it just calls PHP's crypt() for the rest.
+#  The APR MD5 encryption code was contributed by D. Faure.
+
+function _crypt($plain, $salt=null) {
+  if (strncmp($salt, '{SHA}', 5) == 0) 
+    return '{SHA}'.base64_encode(pack('H*', sha1($plain)));
+  if (strncmp($salt, '$apr1$', 6) == 0) {
+    preg_match('/^\\$apr1\\$([^$]+)/', $salt, $match);
+    $salt = $match[1];
+    $length = strlen($plain);
+    $context = $plain . '$apr1$' . $salt;
+    $binary = pack('H32', md5($plain . $salt . $plain));
+    for($i = $length; $i > 0; $i -= 16) 
+      $context .= substr($binary, 0, min(16, $i));
+    for($i = $length; $i > 0; $i >>= 1)
+      $context .= ($i & 1) ? chr(0) : $plain[0];
+    $binary = pack('H32', md5($context));
+    for($i = 0; $i < 1000; $i++) {
+      $new = ($i & 1) ? $plain : $binary;
+      if ($i % 3) $new .= $salt;
+      if ($i % 7) $new .= $plain;
+      $new .= ($i & 1) ? $binary : $plain;
+      $binary = pack('H32', md5($new));
+    }
+    $q = '';
+    for ($i = 0; $i < 5; $i++) {
+      $k = $i + 6;
+      $j = $i + 12;
+      if ($j == 16) $j = 5;
+      $q = $binary[$i].$binary[$k].$binary[$j] . $q;
+    }
+    $q = chr(0).chr(0).$binary[11] . $q;
+    $q = strtr(strrev(substr(base64_encode($q), 2)),
+           'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
+           './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz');
+    return "\$apr1\$$salt\$$q";
+  }
+  if (md5($plain) == $salt) return $salt;
+  return pmcrypt($plain, $salt);
+}
blob - /dev/null
blob + 55c17e53917b6b2744d38d2b4adf6ff7d7759d76 (mode 644)
--- /dev/null
+++ scripts/blocklist.php
@@ -0,0 +1,239 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2006-2021 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script adds blocklisting capabilities to PmWiki, and can
+    be enabled by simply setting the following in local/config.php:
+
+        $EnableBlocklist = 1;
+
+    With $EnableBlocklist set to 1, this module will search through
+    the SiteAdmin.Blocklist page, as well as any other pages given by
+    the $Blocklist pages variable, looking for lines of the
+    form "block:some phrase" or "block:/regex/", with "some phrase" 
+    and "/regex/" indicating things to be excluded from any 
+    posting to the site.  
+
+    In addition, if a page contains IP addresses of the form
+    "a.b.c.d" or "a.b.c.*", then any posts coming from hosts
+    matching the address will be blocked.
+
+    There is also an "unblock:..." form, which removes an entry
+    from the blocklist.  This is useful for removing specific
+    block items in wikifarms and with automatically downloaded
+    blocklists (below).
+
+    The script also has the capability of automatically downloading
+    blocklists from other sources, such as chongqed.org and
+    and the MoinMaster blocklist.  These are configured using
+    the $BlocklistDownload array.  An $EnableBlocklist value
+    of at least 10 configures PmWiki to automatically download
+    these external blocklists and refresh them daily.
+
+    More information about blocklists is available in the
+    PmWiki.Blocklist page.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+
+##   Some recipes do page updates outside of the built-in posting
+##   cycle, so $EnableBlocklistImmediate is used to determine if
+##   we need to catch these.  Currently this defaults to enabled,
+##   but at some point we may change the default to disabled.
+if (IsEnabled($EnableBlocklistImmediate, 1)) {
+  SDVA($BlocklistActions, array('comment' => 1));
+  $ptext = implode(' ', @$_POST);
+  if ($ptext && @$BlocklistActions[$action]) {
+    Blocklist($pagename, $ptext);
+    if (!$EnablePost) {
+      unset($_POST['post']);
+      unset($_POST['postattr']);
+      unset($_POST['postedit']);
+    }
+  }
+}
+
+
+##   If $EnableBlocklist is set to 10 or higher, then arrange to 
+##   periodically download the "moinmaster" blocklists.
+if ($EnableBlocklist >= 10) {
+  SDVA($BlocklistDownload['SiteAdmin.Blocklist-MoinMaster'], array(
+    'url' => 'http://moinmo.in/BadContent?action=raw',
+    'format' => 'regex'));
+}
+
+
+##   CheckBlocklist is inserted into $EditFunctions, to automatically
+##   check for blocks on anything being posted through the normal
+##   "update a page cycle"
+array_unshift($EditFunctions, 'CheckBlocklist');
+function CheckBlocklist($pagename, &$page, &$new) { 
+  StopWatch("CheckBlocklist: begin $pagename");
+  $ptext = implode(' ', @$_POST);
+  if (@$ptext) Blocklist($pagename, $ptext); 
+  StopWatch("CheckBlocklist: end $pagename");
+}
+
+
+##   Blocklist is the function that does all of the work of
+##   checking for reasons to block a posting.  It reads
+##   the available blocklist pages ($BlocklistPages) and
+##   builds an array of strings and regular expressiongs to
+##   be checked against the page; if any are found, then
+##   posting is blocked (via $EnablePost=0).  The function
+##   also checks the REMOTE_ADDR against any blocked IP addresses.
+function Blocklist($pagename, $text) {
+  global $BlocklistPages, $BlockedMessagesFmt, $BlocklistDownload,
+    $BlocklistDownloadRefresh, $Now, $EnablePost, $WhyBlockedFmt,
+    $MessagesFmt, $BlocklistMessageFmt, $EnableWhyBlocked, $IsBlocked;
+
+  StopWatch("Blocklist: begin $pagename");
+
+  $BlocklistDownload = (array)@$BlocklistDownload;
+  SDV($BlocklistPages, 
+    array_merge(array('$SiteAdminGroup.Blocklist', 
+                      '$SiteAdminGroup.Blocklist-Farm'),
+                array_keys($BlocklistDownload)));
+  SDV($BlocklistMessageFmt, "<h3 class='wikimessage'>$[This post has been blocked by the administrator]</h3>");
+  SDVA($BlockedMessagesFmt, array(
+    'ip' => '$[Address blocked from posting]: ',
+    'text' => '$[Text blocked from posting]: '));
+  SDV($BlocklistDownloadRefresh, 86400);
+
+  ##  Loop over all blocklist pages
+  foreach((array)$BlocklistPages as $b) {
+
+    ##  load the current blocklist page
+    $pn = FmtPageName($b, $pagename);
+    $page = ReadPage($pn, READPAGE_CURRENT);
+    if (!$page) continue;
+
+    ##  if the page being checked is a blocklist page, stop blocking
+    if ($pagename == $pn) return;
+
+    ##  If the blocklist page is managed by automatic download,
+    ##  schedule any new downloads here
+    if (@$BlocklistDownload[$pn]) {
+      $bd = &$BlocklistDownload[$pn];
+      SDVA($bd, array(
+        'refresh' => $BlocklistDownloadRefresh,
+        'url' => "http://www.pmwiki.org/blocklists/$pn" ));
+      if (!@$page['text'] || $page['time'] < $Now - $bd['refresh'])
+        register_shutdown_function('BlocklistDownload', $pn, getcwd());
+    }
+
+    ##  If the blocklist is simply a list of regexes to be matched, load 
+    ##  them into $terms['block'] and continue to the next blocklist page.
+    ##  Some regexes from remote sites aren't well-formed, so we have
+    ##  to escape any slashes that aren't already escaped.
+    if (strpos(@$page['text'], 'blocklist-format: regex') !==false) {
+      if (preg_match_all('/^([^\\s#].+)/m', $page['text'], $match)) 
+        foreach($match[0] as $m) {
+          $m = preg_replace('#(?<!\\\\)/#', '\\/', trim($m));
+          $terms['block'][] = "/$m/";
+        }
+      continue;
+    }
+
+    ##  Treat the page as a pmwiki-format blocklist page, with
+    ##  IP addresses and "block:"-style declarations.  First, see
+    ##  if we need to block the author based on a.b.c.d or a.b.c.*
+    ##  IP addresses.
+    $ip = preg_quote($_SERVER['REMOTE_ADDR']);
+    $ip = preg_replace('/\\d+$/', '($0\\b|\\*)', $ip);
+    if (preg_match("/\\b$ip/", @$page['text'], $match)) {
+      $EnablePost = 0;
+      $IsBlocked = 1;
+      $WhyBlockedFmt[] = $BlockedMessagesFmt['ip'] . $match[0];
+    }
+
+    ##  Now we'll load any "block:" or "unblock:" specifications
+    ##  from the page text.
+    if (preg_match_all('/(un)?(?:block|regex):(.*)/', @$page['text'], 
+                       $match, PREG_SET_ORDER)) 
+      foreach($match as $m) $terms[$m[1].'block'][] = trim($m[2]);
+  }
+
+  ##  okay, we've loaded all of the terms, now subtract any 'unblock'
+  ##  terms from the block set.
+  StopWatch("Blocklist: diff unblock");
+  $blockterms = array_diff((array)@$terms['block'], (array)@$terms['unblock']);
+
+  ##  go through each of the remaining blockterms and see if it matches the
+  ##  text -- if so, disable posting and add a message to $WhyBlockedFmt.
+  StopWatch('Blocklist: blockterms (count='.count($blockterms).')');
+  $itext = strtolower($text);
+  foreach($blockterms as $b) {
+    if ($b[0] == '/') {
+      if (!preg_match($b, $text)) continue;
+    } else if (strpos($itext, strtolower($b)) === false) continue;
+    $EnablePost = 0;
+    $IsBlocked = 1;
+    $WhyBlockedFmt[] = $BlockedMessagesFmt['text'] . $b;
+  }
+  StopWatch('Blocklist: blockterms done');
+
+  ##  If we came across any reasons to block, let's provide a message
+  ##  to the author that it was blocked.  If $EnableWhyBlocked is set,
+  ##  we'll even tell the author why.  :-)
+  if (@$WhyBlockedFmt) {
+    $MessagesFmt[] = $BlocklistMessageFmt;
+    if (IsEnabled($EnableWhyBlocked, 0)) 
+      foreach((array)$WhyBlockedFmt as $why) 
+        $MessagesFmt[] = "<pre class='blocklistmessage'>$why</pre>\n";
+  }
+  StopWatch("Blocklist: end $pagename");
+}
+
+
+##   BlocklistDownload() handles retrieving blocklists from
+##   external sources into PmWiki pages.  If it's able to
+##   download an updated list, it uses that; otherwise it leaves
+##   any existing list alone.
+function BlocklistDownload($pagename, $dir = '') {
+  global $BlocklistDownloadFmt, $BlocklistDownload, $FmtV;
+
+  if ($dir) { flush(); chdir($dir); }
+  SDV($BlocklistDownloadFmt, "
+  [@
+## blocklist-note:   NOTE: This page is automatically generated by blocklist.php
+## blocklist-note:   NOTE: Any edits to this page may be lost!
+## blocklist-url:    \$BlocklistDownloadUrl
+## blocklist-when:   \$CurrentTimeISO
+#  blocklist-format: \$BlocklistFormat
+\$BlocklistData
+  @]
+");
+
+  ##  get the existing blocklist page
+  $bd = &$BlocklistDownload[$pagename];
+  $page = ReadPage($pagename, READPAGE_CURRENT);
+
+  ##  try to retrieve the remote data
+  $blocklistdata = @file($bd['url']);
+
+  ##  if we didn't get it, and we don't already have text, save a
+  ##  note in the page so we know what happened
+  if (!$blocklistdata && !@$page['text']) {
+    $auf = ini_get('allow_url_fopen');
+    $blocklistdata = "#### Unable to download blocklist (allow_url_fopen=$auf)";
+  }
+
+  ##  if we have some new text to save, let's format it and save it
+  if ($blocklistdata) {
+    $blocklistdata = implode('', (array)$blocklistdata);
+    $blocklistdata = preg_replace('/^##blocklist.*/m', '', $blocklistdata);
+    $FmtV['$BlocklistData'] = $blocklistdata;
+    $FmtV['$BlocklistDownloadUrl'] = $bd['url'];
+    $FmtV['$BlocklistFormat'] = $bd['format'];
+    $page['text'] = FmtPageName($BlocklistDownloadFmt, $pagename);
+    SDV($page['passwdread'], '@lock');
+  }
+
+  ##  save our updated(?) blocklist page
+  WritePage($pagename, $page);
+}
blob - /dev/null
blob + 1e3b4820a94fbd9625ddf6df964af29a3b87f17f (mode 644)
--- /dev/null
+++ scripts/caches.php
@@ -0,0 +1,67 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2006-2020 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+## Browser cache-control.  If this is a cacheable action (e.g., browse,
+## diff), then set the Last-Modified header to the time the site was 
+## last modified.  If the browser has provided us with a matching 
+## If-Modified-Since request header, we can return 304 Not Modified.
+SDV($LastModFile,"$WorkDir/.lastmod");
+if (!$LastModFile) return;
+
+$LastModTime = @filemtime($LastModFile);
+foreach(get_included_files() as $f) 
+  { $v = @filemtime($f); if ($v > $LastModTime) $LastModTime = $v; }
+
+if (@$EnableIMSCaching) {
+  SDV($IMSCookie, $CookiePrefix.'imstime');
+  SDV($IMSCookieExpires, $Now + 60*60*24*30);
+  SDV($IMSInvalidators, array('authpw', 'author'));
+  $LogoutCookies[] = $IMSCookie;
+
+  if ($IMSCookie) {
+    $IMSTime = @$_COOKIE[$IMSCookie];
+    if ($IMSTime < $LastModTime
+        || array_intersect($IMSInvalidators, array_keys($_POST))) {
+      $IMSTime = $Now; 
+      pmsetcookie($IMSCookie, $IMSTime, $IMSCookieExpires, '/');
+    }
+  } else $IMSTime = $LastModTime;
+
+  if (in_array($action, (array)$CacheActions)) {
+    $HTTPLastMod = gmdate('D, d M Y H:i:s \G\M\T',$IMSTime);
+    $HTTPHeaders[] = "Cache-Control: no-cache";
+    $HTTPHeaders[] = "Last-Modified: $HTTPLastMod";
+    if (@$_SERVER['HTTP_IF_MODIFIED_SINCE']==$HTTPLastMod) {
+      header("HTTP/1.0 304 Not Modified");
+      header("Cache-Control: no-cache");
+      header("Expires: ");
+      header("Last-Modified: $HTTPLastMod");
+      exit(); 
+    }
+  }
+}
+
+if ($NoHTMLCache 
+    || !@$PageCacheDir
+    || count($_POST) > 0
+    || count($_GET) > 1
+    || (count($_GET) == 1 && !@$_GET['n'])) { $NoHTMLCache |= 1; return; }
+
+mkdirp($PageCacheDir);
+if (!file_exists("$PageCacheDir/.htaccess") 
+    && $fp = @fopen("$PageCacheDir/.htaccess", "w"))
+  { fwrite($fp, $DenyHtaccessContent); fclose($fp); }
+
+SDV($PageCacheFileFmt, "%s/%s,cache");
+SDV($PageCacheFile, sprintf($PageCacheFileFmt, $PageCacheDir, $pagename));
+
+if (file_exists($PageCacheFile) && @filemtime($PageCacheFile) < $LastModTime) 
+  @unlink($PageCacheFile);
+
blob - /dev/null
blob + 50539ae8ebb78d39eaded84923246d721354cfa1 (mode 644)
--- /dev/null
+++ scripts/creole.php
@@ -0,0 +1,82 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2007-2017 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script adds Creole v0.4 markup (http://www.wikicreole.org/)
+    to PmWiki.  To activate this script, simply add the following into
+    a local customization file:
+
+        include_once('scripts/creole.php');
+
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+## **strong**
+Markup('**', 'inline', 
+  '/^\\*\\*(?>(.+?)\\*\\*)(?!\\S)|(?<!^)\\*\\*(.+?)\\*\\*/',
+  '<strong>$1$2</strong>');
+
+## //emphasized//
+Markup('//', 'inline', 
+  '/(?<!http:|https:|ftp:)\\/\\/(.*?)\\/\\//',
+  '<em>$1</em>');
+
+## == Headings ==
+Markup('^=', 'block',
+  '/^(={1,6})\\s?(.*?)(\\s*=*\\s*)$/',
+  "MarkupCreole");
+
+## Line breaks
+Markup('\\\\', 'inline', '/\\\\\\\\/', '<br />');
+
+## Preformatted
+Markup('^{{{', '[=',
+  "/^\\{\\{\\{\n(.*?\n)\\}\\}\\}[^\\S\n]*\n/sm",
+  "MarkupCreole");
+Markup('{{{', '>{{{',
+  '/\\{\\{\\{(.*?)\\}\\}\\}/s',
+  "MarkupCreole");
+
+## Tables
+Markup('|-table', '>^||',
+  '/^\\|(.*)$/',
+  "MarkupCreole");
+
+## Images
+Markup('{{', 'inline',
+  '/\\{\\{(?>(\\L))([^|\\]]*)(?:\\|\\s*(.*?)\\s*)?\\}\\}/',
+  "MarkupCreole");
+
+function MarkupCreole($m) {
+  extract($GLOBALS["MarkupToHTML"]); # get $pagename, $markupid
+  switch ($markupid) {
+    case '^=': 
+      return '<:block,1><h'.strlen($m[1]).'>'.$m[2].'</h'.strlen($m[1]).'>';
+    case '^{{{': 
+      return Keep('<pre class="escaped">'.$m[1].'</pre>');
+    case '{{{': 
+      return Keep('<code class="escaped">'.$m[1].'</code>');
+    case '|-table': 
+      return FormatTableRow($m[0], '\\|');
+    case '{{': 
+      return Keep($GLOBALS['LinkFunctions'][$m[1]]($pagename, $m[1], $m[2], $m[3],
+     $m[1].$m[2], $GLOBALS['ImgTagFmt']),'L');
+  }
+}
+
+## GUIButtons
+SDVA($GUIButtons, array(
+  'em'       => array(100, "//", "//", '$[Emphasized]',
+                  '$GUIButtonDirUrlFmt/em.gif"$[Emphasized (italic)]"',
+                  '$[ak_em]'),
+  'strong'   => array(110, "**", "**", '$[Strong]',
+                  '$GUIButtonDirUrlFmt/strong.gif"$[Strong (bold)]"',
+                  '$[ak_strong]'),
+  'h2'       => array(400, '\\n== ', ' ==\\n', '$[Heading]',
+                  '$GUIButtonDirUrlFmt/h.gif"$[Heading]"'),
+
+  ));
+
blob - /dev/null
blob + c3af7f0808c0d1cd6cde48becbb4aa67e3d97572 (mode 644)
--- /dev/null
+++ scripts/crypt.php
@@ -0,0 +1,43 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2002-2015 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script defines ?action=crypt, providing help for WikiAdministrators
+    to set up site-wide passwords in the installation.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($HandleActions['crypt'],'HandleCrypt');
+SDV($ActionTitleFmt['crypt'],'| $[Password encryption]');
+
+function HandleCrypt($pagename, $auth='read') {
+  global $ScriptUrl,$HTMLStartFmt,$HTMLEndFmt;
+  PrintFmt($pagename,$HTMLStartFmt);
+  $passwd = stripmagic(@$_POST["passwd"]);
+  echo FmtPageName(
+    "<form action='{\$ScriptUrl}' method='POST'><p>
+      Enter password to encrypt: 
+      <input type='text' name='passwd' value='"
+      . PHSC($passwd, ENT_QUOTES) ."' />
+      <input type='submit' />
+      <input type='hidden' name='n' value='{\$FullName}' />
+      <input type='hidden' name='action' value='crypt' /></p></form>",
+    $pagename);
+  if ($passwd) { 
+    $crypt = pmcrypt($passwd);
+    echo "<p class='vspace'>Encrypted password = $crypt</p>"; 
+    echo "<p class='vspace'>To set a site-wide password, insert the line below
+      in your <i>config.php</i> file, <br />replacing <tt>'type'</tt> with
+      one of <tt>'admin'</tt>, <tt>'read'</tt>, <tt>'edit'</tt>,
+      or <tt>'attr'</tt>.  <br />See <a 
+      href='$ScriptUrl?n=PmWiki.PasswordsAdmin'>PasswordsAdmin</a> for more
+      details.</p>
+      <pre class='vspace'>  \$DefaultPasswords['type']='$crypt';</pre>";
+  }
+  PrintFmt($pagename,$HTMLEndFmt);
+}
+
blob - /dev/null
blob + 67fd5a3e1fc2e00c2abadaa707b332c3c8df449a (mode 644)
--- /dev/null
+++ scripts/diag.php
@@ -0,0 +1,174 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2003-2015 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file adds "?action=diag" and "?action=phpinfo" actions to PmWiki.  
+    This produces lots of diagnostic output that may be helpful to the 
+    software authors when debugging PmWiki or other scripts.
+
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+
+if ($action=='diag') {
+  @ini_set('track_errors','1');
+  @ini_set('display_errors', '1');
+  pm_session_start();
+  header('Content-type: text/plain');
+  print_r($GLOBALS);
+  exit();
+}
+
+if ($action=='phpinfo') { phpinfo(); exit(); }
+
+function Ruleset() {
+  global $MarkupTable;
+  $out = '';
+  $dbg = 0;
+  BuildMarkupRules();
+  foreach($MarkupTable as $id=>$m) {
+    $out .= sprintf("%-16s %-16s %-16s %s\n",$id,@$m['cmd'],@$m['seq'], @$m['dbg']);
+    if (@$m['dbg']) $dbg++;
+  }
+  if ($dbg) $out .= "
+[!] Markup rules possibly incompatible with PHP 5.5 or newer.
+    Please contact the recipe maintainer for update
+    or see www.pmwiki.org/wiki/PmWiki/CustomMarkup";
+  return $out;
+}
+
+$HandleActions['ruleset'] = 'HandleRuleset';
+
+function HandleRuleset($pagename) {
+  header("Content-type: text/plain");
+  print Ruleset();
+}
+
+function StopWatchHTML($pagename, $print = 0) {
+  global $StopWatch;
+  StopWatch('now');
+  $l = strlen(count($StopWatch));
+  $out = '<pre>';
+  foreach((array)$StopWatch as $i => $x)
+    $out .= sprintf("%{$l}d: %s\n", $i, $x);
+  $out .= '</pre>';
+  if (is_array($StopWatch)) array_pop($StopWatch);
+  if ($print) print $out;
+  return $out;
+}
+
+### From Cookbook:RecipeCheck
+/*  Copyright 2007-2019 Patrick R. Michaud (pmichaud@pobox.com)
+
+    This recipe adds ?action=recipecheck to a site.  When activated,
+    ?action=recipecheck fetches the current list of Cookbook recipes
+    and their versions from pmwiki.org.  It then compares this list
+    with the versions of any installed recipes on the local site
+    and reports any differences.
+
+    By default the recipe restricts ?action=recipecheck to admins.
+
+    Note that not all recipes currently follow PmWiki's
+    recipecheck standard (feel free to report these to the pmwiki-users
+    mailing list).
+
+    * 2007-04-17:  Added suggestions by Feral
+      - explicit black text
+      - skip non-php files and directories
+    * 2019-11-28: Added to scripts/diag.php by Petko
+*/
+if($action=='recipecheck') {
+  SDV($HandleActions['recipecheck'], 'HandleRecipeCheckCore');
+  SDV($HandleAuth['recipecheck'], 'admin');
+  SDV($ActionTitleFmt['recipecheck'], '| $[Recipe Check]');
+
+  SDV($WikiStyleApply['tr'], 'tr');
+  SDV($HTMLStylesFmt['recipecheck'], '
+    table.recipecheck tr.ok { color:black; background-color:#ccffcc; }
+    table.recipecheck tr.check { color:black; background-color:#ffffcc; }
+    table.recipecheck { border:1px solid #cccccc; padding:4px; }
+  ');
+
+  SDV($RecipeListUrl, 'http://www.pmwiki.org/pmwiki/recipelist');
+}
+
+function HandleRecipeCheckCore($pagename, $auth = 'admin') {
+  global $RecipeListUrl, $Version, $RecipeInfo, 
+    $RecipeCheckFmt, $PageStartFmt, $PageEndFmt;
+  $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
+  if (!$page) Abort('?admin access required');
+  $cvinfo = GetRecipeListCore($RecipeListUrl);
+  if (!$cvinfo) {
+    $msg = "Unable to retrieve cookbook data from $RecipeListUrl\n";
+    $allow_url_fopen = ini_get('allow_url_fopen');
+    if (!$allow_url_fopen) $msg .= "
+      <br /><br />It appears that your PHP environment isn't allowing
+      the recipelist to be downloaded from pmwiki.org  
+      (allow_url_fopen&nbsp;=&nbsp;$allow_url_fopen).";
+    Abort($msg);
+  }
+  $rinfo['PmWiki:Upgrades'] = $Version;
+  ScanRecipeInfoCore('cookbook', $cvinfo);
+  foreach((array)$RecipeInfo as $r => $v) {
+    if (!@$v['Version']) continue;
+    $r = preg_replace('/^(?!PmWiki:)(Cookbook[.:])?/', 'Cookbook:', $r);
+    $rinfo[$r] = $v['Version'];
+  }
+  $markup = "!!Recipe status for {\$PageUrl}\n".RecipeTableCore($rinfo, $cvinfo);
+  $html = MarkupToHTML($pagename, $markup);
+  SDV($RecipeCheckFmt, array(&$PageStartFmt, $html, &$PageEndFmt));
+  PrintFmt($pagename, $RecipeCheckFmt);
+}
+
+
+function GetRecipeListCore($list) {
+  $cvinfo = array();
+  $fp = fopen($list, 'r');
+  while ($fp && !feof($fp)) {
+    $line = fgets($fp, 1024);
+    if ($line[0] == '#') continue;
+    if (preg_match('/(\\S+) +(.*)/', $line, $match)) 
+      $cvinfo[$match[1]] = trim($match[2]);
+  }
+  fclose($fp);
+  return $cvinfo;
+}
+
+
+function ScanRecipeInfoCore($dlistfmt, $cvinfo = NULL) {
+  global $RecipeInfo;
+  foreach((array)$dlistfmt as $dir) {
+    $dfp = @opendir($dir); if (!$dfp) continue;
+    while ( ($name = readdir($dfp)) !== false) {
+      if ($name[0] == '.') continue;
+      if (!preg_match('/\\.php/i', $name)) continue;
+      $text = implode('', @file("$dir/$name"));
+      if (preg_match("/^\\s*\\\$RecipeInfo\\['(.*?)'\\]\\['Version'\\]\\s*=\\s*'(.*?)'\\s*;/m", $text, $match)) 
+        SDV($RecipeInfo[$match[1]]['Version'], $match[2]);
+      if (preg_match("/^\\s*SDV\\(\\s*\\\$RecipeInfo\\['(.*?)'\\]\\['Version'\\]\\s*,\\s*'(.*?)'\\s*\\)\\s*\\;/m", $text, $match)) 
+        SDV($RecipeInfo[$match[1]]['Version'], $match[2]);
+      if (@$cvinfo[$name]) {
+        $r = preg_replace('/^.*:/', '', $cvinfo[$name]);
+        SDV($RecipeInfo[$r]['Version'], "unknown ($name)");
+      }
+    }
+    closedir($dfp);
+  }
+}
+
+
+function RecipeTableCore($rinfo, $cvinfo) {
+  $fmt = "||%-40s ||%-20s ||%-20s ||\n";
+  $out = "||class=recipecheck cellpadding=0 cellspacing=0 width=600\n";
+  $out .= sprintf($fmt, '!Recipe', '!local', '!pmwiki.org');
+  foreach($rinfo as $r => $lv) {
+    $cv = @$cvinfo[$r];
+    $style = ($lv == $cv) ? 'ok' : 'check';
+    $out .= sprintf($fmt, "%apply=tr $style%[[$r]]", $lv, $cv);
+  }
+  return $out;
+}
+
blob - /dev/null
blob + 66be36386359c1884bcea6f305571bd3f8b354be (mode 644)
--- /dev/null
+++ scripts/draft.php
@@ -0,0 +1,75 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2006-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($DraftSuffix, '-Draft');
+if ($DraftSuffix) 
+  SDV($SearchPatterns['normal']['draft'], "!$DraftSuffix\$!");
+
+##  set up a 'publish' authorization level, defaulting to 'edit' authorization
+SDV($DefaultPasswords['publish'], '');
+SDV($AuthCascade['publish'], 'edit');
+SDV($FmtPV['$PasswdPublish'], 'PasswdVar($pn, "publish")');
+if ($AuthCascade['attr'] == 'edit') $AuthCascade['attr'] = 'publish';
+
+## Add a 'publish' page attribute if desired
+if (IsEnabled($EnablePublishAttr, 0))
+  SDV($PageAttributes['passwdpublish'], '$[Set new publish password:]');
+
+
+$basename = preg_replace("/$DraftSuffix\$/", '', $pagename);
+##  if no -Draft page, switch to $basename
+if (!PageExists($pagename) && PageExists($basename)) $pagename = $basename;
+
+## The section below handles specialized EditForm pages and handler.
+## We don't bother to load it if we're not editing.
+SDV($DraftActionsPattern, 'edit');
+if (! preg_match("/($DraftActionsPattern)/", $action)) return;
+
+##  set edit form button labels to reflect draft prompts
+SDVA($InputTags['e_savebutton'], array('value' => ' '.XL('Publish').' '));
+SDVA($InputTags['e_saveeditbutton'], array('value' => ' '.XL('Save draft and edit').' '));
+SDVA($InputTags['e_savedraftbutton'], array(
+    ':html' => "<input type='submit' \$InputFormArgs />",
+    'name' => 'postdraft', 'value' => ' '.XL('Save draft').' ',
+    'accesskey' => XL('ak_savedraft')));
+
+##  with drafts enabled, the 'post' operation requires 'publish' permissions
+if ($_POST['post'] && $HandleAuth['edit'] == 'edit')
+  $HandleAuth['edit'] = 'publish';
+
+##  disable the 'publish' button if not authorized to publish
+if (!CondAuth($basename, 'publish')) 
+  SDVA($InputTags['e_savebutton'], array('disabled' => 'disabled'));
+
+##  add the draft handler into $EditFunctions
+array_unshift($EditFunctions, 'EditDraft');
+function EditDraft(&$pagename, &$page, &$new) {
+  global $WikiDir, $DraftSuffix, $DeleteKeyPattern, $EnableDraftAtomicDiff,
+    $DraftRecentChangesFmt, $RecentChangesFmt, $Now;
+  SDV($DeleteKeyPattern, "^\\s*delete\\s*$");
+  $basename = preg_replace("/$DraftSuffix\$/", '', $pagename);
+  $draftname = $basename . $DraftSuffix;
+  if (@$_POST['postdraft'] || @$_POST['postedit']) $pagename = $draftname; 
+  else if ($_POST['post'] && !preg_match("/$DeleteKeyPattern/", $new['text'])) { 
+    $pagename = $basename; 
+    if (IsEnabled($EnableDraftAtomicDiff, 0)) {
+      $page = ReadPage($basename);
+      foreach($new as $k=>$v) # delete draft history
+        if (preg_match('/:\\d+(:\\d+:)?$/', $k) && ! preg_match("/:$Now(:\\d+:)?$/", $k)) unset($new[$k]);
+      unset($new['rev']);
+      SDVA($new, $page);
+    }
+    $WikiDir->delete($draftname);
+  }
+  else if (PageExists($draftname) && $pagename != $draftname)
+    { Redirect($draftname, '$PageUrl?action=edit'); exit(); }
+  if ($pagename == $draftname && isset($DraftRecentChangesFmt))
+    $RecentChangesFmt = $DraftRecentChangesFmt;
+}
blob - /dev/null
blob + 7c99783e23fd037b20b1d114dc3e5ea5f6966210 (mode 644)
--- /dev/null
+++ scripts/feeds.php
@@ -0,0 +1,546 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2005-2019 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script provides a number of syndication feed and xml-based 
+    metadata options to PmWiki, including Atom, RSS 2.0, RSS 1.0 (RDF), 
+    and the Dublin Core Metadata extensions.  This module is typically
+    activated from a local configuration file via a line such as
+
+      if ($action == 'atom') include_once("$FarmD/scripts/feeds.php");
+      if ($action == 'dc') include_once("$FarmD/scripts/feeds.php");
+
+    When enabled, ?action=atom, ?action=rss, and ?action=rdf produce
+    syndication feeds based on any wikitrail contained in the page,
+    or, for Category pages, on the pages in the category.  The feeds
+    are generated using pagelist, thus one can include parameters such
+    as count=, list=, order=, etc. in the url to adjust the feed output.
+
+    ?action=dc will normally generate Dublin Core Metadata for the 
+    current page only, but placing a group=, trail=, or link= argument 
+    in the url causes it to generate metadata for all pages in the
+    associated group, trail, or backlink.
+
+    There are a large number of customizations available, most of which
+    are controlled by the $FeedFmt array.  Elements $FeedFmt look like
+
+        $FeedFmt['atom']['feed']['rights'] = 'All Rights Reserved';
+
+    where the first index corresponds to the action (?action=atom),
+    the second index indicates a per-feed or per-item element, and
+    the third index is the name of the element being generated.
+    The above setting would therefore generate a
+    "<rights>All Rights Reserved</rights>" in the feed for
+    ?action=atom.  If the value of an entry begins with a '<',
+    then feeds.php doesn't automatically add the tag around it.
+    Elements can also be callable functions which are called to
+    generate the appropriate output.
+
+    For example, to set the RSS 2.0 <author> element to the
+    value of the last author to modify a page, one can set 
+    (in local/config.php):
+
+        $FeedFmt['rss']['item']['author'] = '$LastModifiedBy';
+
+    To use the RSS 2.0 <description> element to contain the
+    change summary of the most recent edit, set
+
+        $FeedFmt['rss']['item']['description'] = '$LastModifiedSummary';
+
+    Feeds.php can also be combined with attachments to support
+    podcasting via ?action=rss.  Any page such as "PageName"
+    that has an mp3 attachment with the same name as the page
+    ("PageName.mp3") will have an appropriate <enclosure> element
+    in the feed output.  The set of allowed attachments can be
+    extended using the $RSSEnclosureFmt array:
+
+        $RSSEnclosureFmt = array('{$Name}.mp3', '{$Name}.mp4');
+
+    References:
+      http://www.atomenabled.org/developers/syndication/
+      http://dublincore.org/documents/dcmes-xml/
+      http://en.wikipedia.org/wiki/Podcasting
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+## Settings for ?action=atom
+SDVA($FeedFmt['atom']['feed'], array(
+  '_header' => 'Content-type: text/xml; charset="$Charset"',
+  '_start' => '<?xml version="1.0" encoding="$Charset"?'.'>
+<feed xmlns="http://www.w3.org/2005/Atom">'."\n",
+  '_end' => "</feed>\n",
+  'title' => '$WikiTitle',
+  'link' => '<link rel="self" href="{$PageUrl}?action=atom" />',
+  'id' => '{$PageUrl}?action=atom',
+  'updated' => '$FeedISOTime',
+  'author' => "<author><name>$WikiTitle</name></author>\n",
+  'generator' => '$Version',
+  'logo' => '$PageLogoUrl'));
+SDVA($FeedFmt['atom']['item'], array(
+  '_start' => "<entry>\n",
+  'id' => '{$PageUrl}',
+  'title' => '{$Title}',
+  'updated' => '$ItemISOTime',
+  'link' => "<link rel=\"alternate\" href=\"{\$PageUrl}\" />\n",
+  'author' => "<author><name>{\$LastModifiedBy}</name></author>\n",
+  'summary' => '{$Description}',
+  'category' => "<category term=\"\$Category\" />\n",
+  '_end' => "</entry>\n"));
+
+## Settings for ?action=dc
+SDVA($FeedFmt['dc']['feed'], array(
+  '_header' => 'Content-type: text/xml; charset="$Charset"',
+  '_start' => '<?xml version="1.0" encoding="$Charset"?'.'>
+<!DOCTYPE rdf:RDF PUBLIC "-//DUBLIN CORE//DCMES DTD 2002/07/31//EN"
+    "http://dublincore.org/documents/2002/07/31/dcmes-xml/dcmes-xml-dtd.dtd">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+         xmlns:dc="http://purl.org/dc/elements/1.1/">'."\n",
+  '_end' => "</rdf:RDF>\n"));
+SDVA($FeedFmt['dc']['item'], array(
+  '_start' => "<rdf:Description rdf:about=\"{\$PageUrl}\">\n",
+  'dc:title' => '{$Title}',
+  'dc:identifier' => '{$PageUrl}',
+  'dc:date' => '$ItemISOTime',
+  'dc:type' => 'Text',
+  'dc:format' => 'text/html',
+  'dc:description' => '{$Description}',
+  'dc:subject' => "<dc:subject>\$Category</dc:subject>\n",
+  'dc:publisher' => '$WikiTitle',
+  'dc:author' => '{$LastModifiedBy}',
+  '_end' => "</rdf:Description>\n"));
+
+## RSS 2.0 settings for ?action=rss
+SDVA($FeedFmt['rss']['feed'], array(
+  '_header' => 'Content-type: text/xml; charset="$Charset"',
+  '_start' => '<?xml version="1.0" encoding="$Charset"?'.'>
+<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<channel>'."\n",
+  '_end' => "</channel>\n</rss>\n",
+  'title' => '$WikiTitle | {$Group} / {$Title}',
+  'link' => '{$PageUrl}?action=rss',
+  'description' => '{$Group}.{$Title}',
+  'lastBuildDate' => '$FeedRSSTime'));
+SDVA($FeedFmt['rss']['item'], array(
+  '_start' => "<item>\n",
+  '_end' => "</item>\n",
+  'title' => '{$Group} / {$Title}',
+  'link' => '{$PageUrl}',
+  'description' => '{$Description}',
+  'dc:contributor' => '{$LastModifiedBy}',
+  'dc:date' => '$ItemISOTime',
+  'pubDate' => '$ItemRSSTime',
+  'enclosure' => 'RSSEnclosure'));
+
+## RDF 1.0, for ?action=rdf
+SDVA($FeedFmt['rdf']['feed'], array(
+  '_header' => 'Content-type: text/xml; charset="$Charset"',
+  '_start' => '<?xml version="1.0" encoding="$Charset"?'.'>
+<rdf:RDF xmlns="http://purl.org/rss/1.0/"
+         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+         xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <channel rdf:about="{$PageUrl}?action=rdf">'."\n",
+  'title' => '$WikiTitle | {$Group} / {$Title}',
+  'link' => '{$PageUrl}?action=rdf',
+  'description' => '{$Group}.{$Title}',
+  'dc:date' => '$FeedISOTime',
+  'items' => "<items>\n<rdf:Seq>\n\$FeedRDFSeq</rdf:Seq>\n</items>\n",
+  '_items' => "</channel>\n",
+  '_end' => "</rdf:RDF>\n"));
+SDVA($FeedFmt['rdf']['item'], array(
+  '_start' => "<item rdf:about=\"{\$PageUrl}\">\n",
+  '_end' => "</item>\n",
+  'title' => '$WikiTitle | {$Group} / {$Title}',
+  'link' => '{$PageUrl}',
+  'description' => '{$Description}',
+  'dc:date' => '$ItemISOTime'));
+  
+foreach(array_keys($FeedFmt) as $k) {
+  SDV($HandleActions[$k], 'HandleFeed');
+  SDV($HandleAuth[$k], 'read');
+}
+
+function HandleFeed($pagename, $auth = 'read') {
+  global $FeedFmt, $action, $PCache, $FmtV, $TimeISOZFmt, $RSSTimeFmt,
+    $FeedPageListOpt, $FeedCategoryOpt, $FeedTrailOpt,
+    $FeedDescPatterns, $CategoryGroup, $EntitiesTable;
+  SDV($RSSTimeFmt, 'D, d M Y H:i:s \G\M\T');
+  SDV($FeedDescPatterns, 
+    array('/<[^>]*$/' => ' ', '/\\w+$/' => '', '/<[^>]+>/' => ''));
+  $FeedPageListOpt = (array)@$FeedPageListOpt;
+  SDVA($FeedCategoryOpt, array('link' => $pagename));
+  SDVA($FeedTrailOpt, array('trail' => $pagename, 'count' => 10));
+
+  $f = $FeedFmt[$action];
+  $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
+  if (!$page) Abort("?cannot generate feed");
+  $feedtime = $page['time'];
+
+  # determine list of pages to display
+  if (@($_REQUEST['trail'] || $_REQUEST['group'] || $_REQUEST['link'] 
+        || $_REQUEST['name'])) 
+    $opt = $FeedPageListOpt;
+  else if (preg_match("/^$CategoryGroup\\./", $pagename)) 
+    $opt = $FeedCategoryOpt;
+  else if ($action != 'dc') $opt = $FeedTrailOpt;
+  else { 
+    PCache($pagename, $page); 
+    $pagelist = array($pagename); 
+  }
+  if (!@$pagelist) {
+    $opt = array_merge($opt, @$_REQUEST);
+    $pagelist = MakePageList($pagename, $opt, 0);
+  }
+
+  # process list of pages in feed
+  $rdfseq = '';
+  $pl = array();
+  foreach($pagelist as $pn) {
+    if (!PageExists($pn)) continue;
+    if (!isset($PCache[$pn]['time'])) 
+      { $page = ReadPage($pn, READPAGE_CURRENT); PCache($pn, $page); }
+    $pc = & $PCache[$pn];
+    $pl[] = $pn;
+    $rdfseq .= FmtPageName("<rdf:li resource=\"{\$PageUrl}\" />\n", $pn);
+    if ($pc['time'] > $feedtime) $feedtime = $pc['time'];
+    if (@$opt['count'] && count($pl) >= $opt['count']) break;
+  }
+  $pagelist = $pl;
+
+  $FmtV['$FeedRDFSeq'] = $rdfseq;
+  $FmtV['$FeedISOTime'] = PSFT($TimeISOZFmt, $feedtime, null, 'GMT');
+  $FmtV['$FeedRSSTime'] = gmdate($RSSTimeFmt, $feedtime);
+  # format start of feed
+  $out = FmtPageName($f['feed']['_start'], $pagename);
+
+  # format feed elements
+  foreach($f['feed'] as $k => $v) {
+    if ($k[0] == '_' || !$v) continue;
+    $x = FmtPageName($v, $pagename);
+    if (!$x) continue;
+    $out .= ($v[0] == '<') ? $x : "<$k>$x</$k>\n";
+  }
+
+  # format items in feed
+  if (@$f['feed']['_items']) 
+    $out .= FmtPageName($f['feed']['_items'], $pagename);
+  foreach($pagelist as $pn) {
+    $page = &$PCache[$pn];
+    $FmtV['$ItemDesc'] = @$page['description'];
+    $FmtV['$ItemISOTime'] = gmstrftime($TimeISOZFmt, $page['time']);
+    $FmtV['$ItemRSSTime'] = gmdate($RSSTimeFmt, $page['time']);
+
+    $out .= FmtPageName($f['item']['_start'], $pn);
+    foreach((array)@$f['item'] as $k => $v) {
+      if ($k[0] == '_' || !$v) continue;
+      if (is_callable($v)) { $out .= $v($pn, $page, $k); continue; }
+      if (strpos($v, '$LastModifiedBy') !== false && !@$page['author']) 
+        continue;
+      if (strpos($v, '$Category') !== false) {
+        if (preg_match_all("/(?<=^|,)$CategoryGroup\\.([^,]+)/", 
+                           @$page['targets'], $match)) {
+          foreach($match[1] as $c) {
+            $FmtV['$Category'] = $c;
+            $out .= FmtPageName($v, $pn);
+          }
+        }
+        continue;
+      }
+      $x = FmtPageName($v, $pn);
+      if (!$x) continue;
+      $out .= ($v[0] == '<') ? $x : "<$k>$x</$k>\n";
+    }
+    $out .= FmtPageName($f['item']['_end'], $pn);
+  } 
+  $out .= FmtPageName($f['feed']['_end'], $pagename);
+  foreach((array)@$f['feed']['_header'] as $fmt)
+    header(FmtPageName($fmt, $pagename));
+  print str_replace(array_keys($EntitiesTable),
+                    array_values($EntitiesTable), $out);
+}
+
+## RSSEnclosure is called in ?action=rss to generate <enclosure>
+## tags for any pages that have an attached "PageName.mp3" file.
+## The set of attachments to enclose is given by $RSSEnclosureFmt.
+function RSSEnclosure($pagename, &$page, $k) {
+  global $RSSEnclosureFmt, $UploadFileFmt, $UploadExts;
+  if (!function_exists('MakeUploadName')) return '';
+  SDV($RSSEnclosureFmt, array('{$Name}.mp3'));
+  $encl = '';
+  foreach((array)$RSSEnclosureFmt as $fmt) {
+    $path = FmtPageName($fmt, $pagename);
+    $upname = MakeUploadName($pagename, $path);
+    $filepath = FmtPageName("$UploadFileFmt/$upname", $pagename);
+    if (file_exists($filepath)) {
+      $length = filesize($filepath);
+      $type = @$UploadExts[preg_replace('/.*\\./', '', $filepath)];
+      $url = LinkUpload($pagename, 'Attach:', $path, '', '', '$LinkUrl');
+      $encl .= "<$k url='$url' length='$length' type='$type' />";
+    }
+  }
+  return $encl;
+}
+
+## Since most feeds don't understand html character entities, we
+## convert the common ones to their numeric form here.
+SDVA($EntitiesTable, array(
+  # entities defined in "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"
+  '&nbsp;' => '&#160;', 
+  '&iexcl;' => '&#161;', 
+  '&cent;' => '&#162;', 
+  '&pound;' => '&#163;', 
+  '&curren;' => '&#164;', 
+  '&yen;' => '&#165;', 
+  '&brvbar;' => '&#166;', 
+  '&sect;' => '&#167;', 
+  '&uml;' => '&#168;', 
+  '&copy;' => '&#169;', 
+  '&ordf;' => '&#170;', 
+  '&laquo;' => '&#171;', 
+  '&not;' => '&#172;', 
+  '&shy;' => '&#173;', 
+  '&reg;' => '&#174;', 
+  '&macr;' => '&#175;', 
+  '&deg;' => '&#176;', 
+  '&plusmn;' => '&#177;', 
+  '&sup2;' => '&#178;', 
+  '&sup3;' => '&#179;', 
+  '&acute;' => '&#180;', 
+  '&micro;' => '&#181;', 
+  '&para;' => '&#182;', 
+  '&middot;' => '&#183;', 
+  '&cedil;' => '&#184;', 
+  '&sup1;' => '&#185;', 
+  '&ordm;' => '&#186;', 
+  '&raquo;' => '&#187;', 
+  '&frac14;' => '&#188;', 
+  '&frac12;' => '&#189;', 
+  '&frac34;' => '&#190;', 
+  '&iquest;' => '&#191;', 
+  '&Agrave;' => '&#192;', 
+  '&Aacute;' => '&#193;', 
+  '&Acirc;' => '&#194;', 
+  '&Atilde;' => '&#195;', 
+  '&Auml;' => '&#196;', 
+  '&Aring;' => '&#197;', 
+  '&AElig;' => '&#198;', 
+  '&Ccedil;' => '&#199;', 
+  '&Egrave;' => '&#200;', 
+  '&Eacute;' => '&#201;', 
+  '&Ecirc;' => '&#202;', 
+  '&Euml;' => '&#203;', 
+  '&Igrave;' => '&#204;', 
+  '&Iacute;' => '&#205;', 
+  '&Icirc;' => '&#206;', 
+  '&Iuml;' => '&#207;', 
+  '&ETH;' => '&#208;', 
+  '&Ntilde;' => '&#209;', 
+  '&Ograve;' => '&#210;', 
+  '&Oacute;' => '&#211;', 
+  '&Ocirc;' => '&#212;', 
+  '&Otilde;' => '&#213;', 
+  '&Ouml;' => '&#214;', 
+  '&times;' => '&#215;', 
+  '&Oslash;' => '&#216;', 
+  '&Ugrave;' => '&#217;', 
+  '&Uacute;' => '&#218;', 
+  '&Ucirc;' => '&#219;', 
+  '&Uuml;' => '&#220;', 
+  '&Yacute;' => '&#221;', 
+  '&THORN;' => '&#222;', 
+  '&szlig;' => '&#223;', 
+  '&agrave;' => '&#224;', 
+  '&aacute;' => '&#225;', 
+  '&acirc;' => '&#226;', 
+  '&atilde;' => '&#227;', 
+  '&auml;' => '&#228;', 
+  '&aring;' => '&#229;', 
+  '&aelig;' => '&#230;', 
+  '&ccedil;' => '&#231;', 
+  '&egrave;' => '&#232;', 
+  '&eacute;' => '&#233;', 
+  '&ecirc;' => '&#234;', 
+  '&euml;' => '&#235;', 
+  '&igrave;' => '&#236;', 
+  '&iacute;' => '&#237;', 
+  '&icirc;' => '&#238;', 
+  '&iuml;' => '&#239;', 
+  '&eth;' => '&#240;', 
+  '&ntilde;' => '&#241;', 
+  '&ograve;' => '&#242;', 
+  '&oacute;' => '&#243;', 
+  '&ocirc;' => '&#244;', 
+  '&otilde;' => '&#245;', 
+  '&ouml;' => '&#246;', 
+  '&divide;' => '&#247;', 
+  '&oslash;' => '&#248;', 
+  '&ugrave;' => '&#249;', 
+  '&uacute;' => '&#250;', 
+  '&ucirc;' => '&#251;', 
+  '&uuml;' => '&#252;', 
+  '&yacute;' => '&#253;', 
+  '&thorn;' => '&#254;', 
+  '&yuml;' => '&#255;', 
+  # entities defined in "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent"
+  '&quot;' => '&#34;', 
+  #'&amp;' => '&#38;#38;', 
+  #'&lt;' => '&#38;#60;', 
+  #'&gt;' => '&#62;', 
+  '&apos;' => '&#39;', 
+  '&OElig;' => '&#338;', 
+  '&oelig;' => '&#339;', 
+  '&Scaron;' => '&#352;', 
+  '&scaron;' => '&#353;', 
+  '&Yuml;' => '&#376;', 
+  '&circ;' => '&#710;', 
+  '&tilde;' => '&#732;', 
+  '&ensp;' => '&#8194;', 
+  '&emsp;' => '&#8195;', 
+  '&thinsp;' => '&#8201;', 
+  '&zwnj;' => '&#8204;', 
+  '&zwj;' => '&#8205;', 
+  '&lrm;' => '&#8206;', 
+  '&rlm;' => '&#8207;', 
+  '&ndash;' => '&#8211;', 
+  '&mdash;' => '&#8212;', 
+  '&lsquo;' => '&#8216;', 
+  '&rsquo;' => '&#8217;', 
+  '&sbquo;' => '&#8218;', 
+  '&ldquo;' => '&#8220;', 
+  '&rdquo;' => '&#8221;', 
+  '&bdquo;' => '&#8222;', 
+  '&dagger;' => '&#8224;', 
+  '&Dagger;' => '&#8225;', 
+  '&permil;' => '&#8240;', 
+  '&lsaquo;' => '&#8249;', 
+  '&rsaquo;' => '&#8250;', 
+  '&euro;' => '&#8364;', 
+  # entities defined in "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent"
+  '&fnof;' => '&#402;', 
+  '&Alpha;' => '&#913;', 
+  '&Beta;' => '&#914;', 
+  '&Gamma;' => '&#915;', 
+  '&Delta;' => '&#916;', 
+  '&Epsilon;' => '&#917;', 
+  '&Zeta;' => '&#918;', 
+  '&Eta;' => '&#919;', 
+  '&Theta;' => '&#920;', 
+  '&Iota;' => '&#921;', 
+  '&Kappa;' => '&#922;', 
+  '&Lambda;' => '&#923;', 
+  '&Mu;' => '&#924;', 
+  '&Nu;' => '&#925;', 
+  '&Xi;' => '&#926;', 
+  '&Omicron;' => '&#927;', 
+  '&Pi;' => '&#928;', 
+  '&Rho;' => '&#929;', 
+  '&Sigma;' => '&#931;', 
+  '&Tau;' => '&#932;', 
+  '&Upsilon;' => '&#933;', 
+  '&Phi;' => '&#934;', 
+  '&Chi;' => '&#935;', 
+  '&Psi;' => '&#936;', 
+  '&Omega;' => '&#937;', 
+  '&alpha;' => '&#945;', 
+  '&beta;' => '&#946;', 
+  '&gamma;' => '&#947;', 
+  '&delta;' => '&#948;', 
+  '&epsilon;' => '&#949;', 
+  '&zeta;' => '&#950;', 
+  '&eta;' => '&#951;', 
+  '&theta;' => '&#952;', 
+  '&iota;' => '&#953;', 
+  '&kappa;' => '&#954;', 
+  '&lambda;' => '&#955;', 
+  '&mu;' => '&#956;', 
+  '&nu;' => '&#957;', 
+  '&xi;' => '&#958;', 
+  '&omicron;' => '&#959;', 
+  '&pi;' => '&#960;', 
+  '&rho;' => '&#961;', 
+  '&sigmaf;' => '&#962;', 
+  '&sigma;' => '&#963;', 
+  '&tau;' => '&#964;', 
+  '&upsilon;' => '&#965;', 
+  '&phi;' => '&#966;', 
+  '&chi;' => '&#967;', 
+  '&psi;' => '&#968;', 
+  '&omega;' => '&#969;', 
+  '&thetasym;' => '&#977;', 
+  '&upsih;' => '&#978;', 
+  '&piv;' => '&#982;', 
+  '&bull;' => '&#8226;', 
+  '&hellip;' => '&#8230;', 
+  '&prime;' => '&#8242;', 
+  '&Prime;' => '&#8243;', 
+  '&oline;' => '&#8254;', 
+  '&frasl;' => '&#8260;', 
+  '&weierp;' => '&#8472;', 
+  '&image;' => '&#8465;', 
+  '&real;' => '&#8476;', 
+  '&trade;' => '&#8482;', 
+  '&alefsym;' => '&#8501;', 
+  '&larr;' => '&#8592;', 
+  '&uarr;' => '&#8593;', 
+  '&rarr;' => '&#8594;', 
+  '&darr;' => '&#8595;', 
+  '&harr;' => '&#8596;', 
+  '&crarr;' => '&#8629;', 
+  '&lArr;' => '&#8656;', 
+  '&uArr;' => '&#8657;', 
+  '&rArr;' => '&#8658;', 
+  '&dArr;' => '&#8659;', 
+  '&hArr;' => '&#8660;', 
+  '&forall;' => '&#8704;', 
+  '&part;' => '&#8706;', 
+  '&exist;' => '&#8707;', 
+  '&empty;' => '&#8709;', 
+  '&nabla;' => '&#8711;', 
+  '&isin;' => '&#8712;', 
+  '&notin;' => '&#8713;', 
+  '&ni;' => '&#8715;', 
+  '&prod;' => '&#8719;', 
+  '&sum;' => '&#8721;', 
+  '&minus;' => '&#8722;', 
+  '&lowast;' => '&#8727;', 
+  '&radic;' => '&#8730;', 
+  '&prop;' => '&#8733;', 
+  '&infin;' => '&#8734;', 
+  '&ang;' => '&#8736;', 
+  '&and;' => '&#8743;', 
+  '&or;' => '&#8744;', 
+  '&cap;' => '&#8745;', 
+  '&cup;' => '&#8746;', 
+  '&int;' => '&#8747;', 
+  '&there4;' => '&#8756;', 
+  '&sim;' => '&#8764;', 
+  '&cong;' => '&#8773;', 
+  '&asymp;' => '&#8776;', 
+  '&ne;' => '&#8800;', 
+  '&equiv;' => '&#8801;', 
+  '&le;' => '&#8804;', 
+  '&ge;' => '&#8805;', 
+  '&sub;' => '&#8834;', 
+  '&sup;' => '&#8835;', 
+  '&nsub;' => '&#8836;', 
+  '&sube;' => '&#8838;', 
+  '&supe;' => '&#8839;', 
+  '&oplus;' => '&#8853;', 
+  '&otimes;' => '&#8855;', 
+  '&perp;' => '&#8869;', 
+  '&sdot;' => '&#8901;', 
+  '&lceil;' => '&#8968;', 
+  '&rceil;' => '&#8969;', 
+  '&lfloor;' => '&#8970;', 
+  '&rfloor;' => '&#8971;', 
+  '&lang;' => '&#9001;', 
+  '&rang;' => '&#9002;', 
+  '&loz;' => '&#9674;', 
+  '&spades;' => '&#9824;', 
+  '&clubs;' => '&#9827;', 
+  '&hearts;' => '&#9829;', 
+  '&diams;' => '&#9830;'));
+
blob - /dev/null
blob + d69f582cdcce1d0bcc35f3b5abd35668ad340e65 (mode 644)
--- /dev/null
+++ scripts/forms.php
@@ -0,0 +1,421 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2005-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+# $InputAttrs are the attributes we allow in output tags
+SDV($InputAttrs, array('name', 'value', 'id', 'class', 'rows', 'cols', 
+  'size', 'maxlength', 'action', 'method', 'accesskey', 'tabindex', 'multiple',
+  'checked', 'disabled', 'readonly', 'enctype', 'src', 'alt', 'title', 'list',
+  'required', 'placeholder', 'autocomplete', 'min', 'max', 'step', 'pattern',
+  'role', 'aria-label', 'aria-labelledby', 'aria-describedby',
+  'aria-expanded', 'aria-pressed', 'aria-current', 'aria-hidden',
+  'lang', 'formnovalidate', 'autofocus', 'accept'
+  ));
+
+# Set up formatting for text, submit, hidden, radio, etc. types
+foreach(array('text', 'submit', 'hidden', 'password', 'reset', 'file',
+    'image', 'email', 'url', 'tel', 'number', 'search', 'date', 'button') as $t) 
+  SDV($InputTags[$t][':html'], "<input type='$t' \$InputFormArgs />");
+
+foreach(array('text', 'password', 'email', 'url', 'tel', 'number', 'search', 'date') as $t) 
+  SDV($InputTags[$t]['class'], "inputbox");
+
+foreach(array('submit', 'button', 'reset') as $t) 
+  SDV($InputTags[$t]['class'], "inputbutton");
+
+foreach(array('radio', 'checkbox') as $t) 
+  SDVA($InputTags[$t], array(
+    ':html' => "<input type='$t' \$InputFormArgs />\$InputFormLabel",
+    ':args' => array('name', 'value', 'label'),
+    ':checked' => 'checked'));
+
+# (:input form:)
+SDVA($InputTags['form'], array(
+  ':args' => array('action', 'method'),
+  ':html' => "<form \$InputFormArgs>",
+  'method' => 'post'));
+
+# (:input end:)
+SDV($InputTags['end'][':html'], '</form>');
+
+# (:input textarea:)
+SDVA($InputTags['textarea'], array(
+  ':content' => array('value'),
+  ':attr' => array_diff($InputAttrs, array('value')),
+  ':html' => "<textarea \$InputFormArgs>\$InputFormContent</textarea>"));
+
+# (:input image:)
+SDV($InputTags['image'][':args'], array('name', 'src', 'alt'));
+
+# (:input select:)
+SDVA($InputTags['select-option'], array(
+  ':args' => array('name', 'value', 'label'),
+  ':content' => array('label', 'value', 'name'),
+  ':attr' => array('value', 'selected'),
+  ':checked' => 'selected',
+  ':html' => "<option \$InputFormArgs>\$InputFormContent</option>"));
+SDVA($InputTags['select'], array(
+  'class' => 'inputbox',
+  ':html' => "<select \$InputSelectArgs>\$InputSelectOptions</select>"));
+
+# (:input datalist:)
+SDVA($InputTags['datalist-option'], array(
+  ':args' => array('id', 'value'),
+  ':attr' => array('value'),
+  ':html' => "<option \$InputFormArgs>"));
+SDVA($InputTags['datalist'], array(
+  ':html' => "<datalist \$InputSelectArgs>\$InputSelectOptions</datalist>"));
+
+# (:input defaults?:)
+SDVA($InputTags['default'], array(':fn' => 'InputDefault'));
+SDVA($InputTags['defaults'], array(':fn' => 'InputDefault'));
+
+##  (:input ...:) directives
+Markup('input', 'directives',
+  '/\\(:input\\s+(\\w+)(.*?):\\)/i',
+  "MarkupInputForms");
+
+##  (:input select:) has its own markup processing
+Markup('input-select', '<input',
+  '/\\(:input\\s+select\\s.*?:\\)(?:\\s*\\(:input\\s+select\\s.*?:\\))*/i',
+  "MarkupInputForms");
+
+##  (:input datalist:) has its own markup processing
+Markup('input-datalist', '<input',
+  '/\\(:input\\s+datalist\\s.*?:\\)(?:\\s*\\(:input\\s+datalist\\s.*?:\\))*/i',
+  "MarkupInputForms");
+
+function MarkupInputForms($m) {
+  extract($GLOBALS["MarkupToHTML"]); # get $pagename, $markupid
+  switch ($markupid) {
+    case 'input': 
+      return InputMarkup($pagename, $m[1], $m[2]);
+    case 'input-select': 
+      return InputSelect($pagename, 'select', $m[0]);
+    case 'input-datalist': 
+      return InputSelect($pagename, 'datalist', $m[0]);
+    case 'e_preview': 
+      return isset($GLOBALS['FmtV']['$PreviewText']) 
+        ? Keep($GLOBALS['FmtV']['$PreviewText']): '';
+  }
+}
+
+##  The 'input+sp' rule combines multiple (:input select ... :)
+##  into a single markup line (to avoid split line effects)
+Markup('input+sp', '<split', 
+  '/(\\(:input\\s+(select|datalist)\\s(?>.*?:\\)))\\s+(?=\\(:input\\s)/', '$1');
+
+##  InputToHTML performs standard processing on (:input ...:) arguments,
+##  and returns the formatted HTML string.
+function InputToHTML($pagename, $type, $args, &$opt) {
+  global $InputTags, $InputAttrs, $InputValues, $FmtV, $KeepToken,
+    $InputFocusLevel, $InputFocusId, $InputFocusFmt, $HTMLFooterFmt,
+    $EnableInputDataAttr;
+  if (!@$InputTags[$type]) return "(:input $type $args:)";
+  ##  get input arguments
+  if (!is_array($args)) $args = ParseArgs($args, '(?>([\\w-]+)[:=])');
+  ##  convert any positional arguments to named arguments
+  $posnames = @$InputTags[$type][':args'];
+  if (!$posnames) $posnames = array('name', 'value');
+  while (count($posnames) > 0 && @$args[''] && count($args['']) > 0) {
+    $n = array_shift($posnames);
+    if (!isset($args[$n])) $args[$n] = array_shift($args['']);
+  }
+  
+  
+  ##  merge defaults for input type with arguments
+  $opt = array_merge($InputTags[$type], $args);
+  ## www.w3.org/TR/html4/types
+  if (isset($opt['id'])) $opt['id'] = preg_replace('/[^-A-Za-z0-9:_.]+/', '_', $opt['id']);
+  ##  convert any remaining positional args to flags
+  foreach ((array)@$opt[''] as $a) 
+    { $a = strtolower($a); if ( preg_match('/^\\w+$/', $a) && !isset($opt[$a])) $opt[$a] = $a; }
+  if (isset($opt['name'])) {
+    $opt['name'] = preg_replace('/^\\$:/', 'ptv_', @$opt['name']);
+    $opt['name'] = preg_replace('/[^-A-Za-z0-9:_.\\[\\]]+/', '_', $opt['name']);
+    $name = $opt['name'];
+    ##  set control values from $InputValues array
+    ##  radio, checkbox, select, etc. require a flag of some sort,
+    ##  others just set 'value'
+    if (isset($InputValues[$name])) {
+      $checked = @$opt[':checked'];
+      if ($checked) {
+        $opt[$checked] = in_array(@$opt['value'], (array)$InputValues[$name])
+                         ? $checked : false;
+      } else if (!isset($opt['value'])) $opt['value'] = $InputValues[$name];
+    }
+    if ( (strpos($name, 'ptv_') === 0) && !isset($opt['value']) ) {
+      # $DefaultUnsetPageTextVars, $DefaultEmptyPageTextVars with wildcards
+      $default = PageTextVar($pagename, substr($name, 4));
+      if ($default !== '') $opt['value'] = $default;
+    }
+  }
+  ##  build $InputFormContent
+  $FmtV['$InputFormContent'] = '';
+  foreach((array)@$opt[':content'] as $a)
+    if (isset($opt[$a])) { 
+      $FmtV['$InputFormContent'] = is_array($opt[$a]) ? $opt[$a][0]: $opt[$a];
+      break; 
+    }
+  ##  hash and store any "secure" values
+  if (@$opt['secure'] == '#') $opt['secure'] = rand();
+  if (@$opt['secure'] > '') {
+    $md5 = md5($opt['secure'] . $opt['value']);
+    pm_session_start(); 
+    $_SESSION['forms'][$md5] = $opt['value'];
+    $opt['value'] = $md5;
+  }
+  ## labels for checkbox and radio
+  $FmtV['$InputFormLabel'] = '';
+  if (isset($opt['label']) && strpos($InputTags[$type][':html'], '$InputFormLabel')!==false) {
+    static $labelcnt = 0;
+    if (!isset($opt['id'])) $opt['id'] = "lbl_". (++$labelcnt);
+    $lbtitle = isset($opt['title']) ? " title='".str_replace("'", '&#39;', $opt['title'])."'" : '';
+    $FmtV['$InputFormLabel'] = " <label for=\"{$opt['id']}\"$lbtitle>{$opt['label']}</label> ";
+  }
+  ##  handle focus=# option
+  if (@$opt['focus']) {
+    unset($opt['focus']);
+    $opt['autofocus'] = 'autofocus';
+  }
+  ##  build $InputFormArgs from $opt
+  $attrlist = (isset($opt[':attr'])) ? $opt[':attr'] : $InputAttrs;
+  if (IsEnabled($EnableInputDataAttr, 1)) {
+    $dataattr = preg_grep('/^data-[-a-z]+$/', array_keys($opt));
+    $attrlist = array_merge($attrlist, $dataattr);
+  }
+  $attr = array();
+  foreach ($attrlist as $a) {
+    if (!isset($opt[$a]) || $opt[$a]===false) continue;
+    if (is_array($opt[$a])) $opt[$a] = $opt[$a][0];
+    if (strpos($opt[$a], $KeepToken)!== false) # multiline textarea/hidden fields
+      $opt[$a] = Keep(str_replace("'", '&#39;', MarkupRestore($opt[$a]) ));
+    $attr[] = "$a='".str_replace("'", '&#39;', $opt[$a])."'";
+  }
+  $FmtV['$InputFormArgs'] = implode(' ', $attr);
+  return FmtPageName($opt[':html'], $pagename);
+}
+
+
+##  InputMarkup handles the (:input ...:) directive.  It either
+##  calls any function given by the :fn element of the corresponding
+##  tag, or else just returns the result of InputToHTML().
+function InputMarkup($pagename, $type, $args) {
+  global $InputTags;
+  $fn = @$InputTags[$type][':fn'];
+  if ($fn) return $fn($pagename, $type, $args);
+  return Keep(InputToHTML($pagename, $type, $args, $opt));
+}
+
+
+##  (:input default:) directive.
+function InputDefault($pagename, $type, $args) {
+  global $InputValues, $PageTextVarPatterns, $PCache;
+  $args = ParseArgs($args);
+  $args[''] = (array)@$args[''];
+  $name = (isset($args['name'])) ? $args['name'] : array_shift($args['']);
+  $name = $name ? preg_replace('/^\\$:/', 'ptv_', $name) : '';
+  $value = (isset($args['value'])) ? $args['value'] : $args[''];
+  if (!isset($InputValues[$name])) $InputValues[$name] = $value;
+  if (@$args['request']) {
+    $req = RequestArgs();
+    foreach($req as $k => $v) {
+      if (is_array($v)) {
+        foreach($v as $vk=>$vv) {
+          if (is_numeric($vk)) $InputValues["{$k}[]"][] = PHSC($vv, ENT_NOQUOTES);
+          else $InputValues["{$k}[{$vk}]"] = PHSC($vv, ENT_NOQUOTES);
+        }
+      }
+      else {
+        if (!isset($InputValues[$k])) 
+          $InputValues[$k] = PHSC($v, ENT_NOQUOTES);
+      }
+    }
+  }
+  $sources = @$args['source'];
+  if ($sources) {
+    foreach(explode(',', $sources) as $source) {
+      $source = MakePageName($pagename, $source);
+      if (!PageExists($source)) continue;
+      $page = RetrieveAuthPage($source, 'read', false, READPAGE_CURRENT);
+      if (! $page || ! isset($page['text'])) continue;
+      foreach((array)$PageTextVarPatterns as $pat)
+        if (preg_match_all($pat, IsEnabled($PCache[$source]['=preview'], $page['text']), 
+          $match, PREG_SET_ORDER))
+          foreach($match as $m)
+#           if (!isset($InputValues['ptv_'.$m[2]])) PITS:01337
+              $InputValues['ptv_'.$m[2]] = 
+                PHSC(Qualify($source, $m[3]), ENT_NOQUOTES);
+      break;
+    }
+  }
+  
+  return '';
+}
+
+
+##  (:input select ...:) is special, because we need to process a bunch of
+##  them as a single unit.
+function InputSelect($pagename, $type, $markup) {
+  global $InputTags, $InputAttrs, $FmtV;
+  preg_match_all('/\\(:input\\s+\\S+\\s+(.*?):\\)/', $markup, $match);
+  $selectopt = (array)$InputTags[$type];
+  $opt = $selectopt;
+  $optionshtml = '';
+  $optiontype = isset($InputTags["$type-option"]) 
+                ? "$type-option" : "select-option";
+  foreach($match[1] as $args) {
+    $optionshtml .= InputToHTML($pagename, $optiontype, $args, $oo);
+    $opt = array_merge($opt, $oo);
+  }
+  $attrlist = array_diff($InputAttrs, array('value'));
+  $attr = array();
+  foreach($attrlist as $a) {
+    if (!isset($opt[$a]) || $opt[$a]===false) continue;
+    $attr[] = "$a='".str_replace("'", '&#39;', $opt[$a])."'";
+  }
+  $FmtV['$InputSelectArgs'] = implode(' ', $attr);
+  $FmtV['$InputSelectOptions'] = $optionshtml;
+  return Keep(FmtPageName($selectopt[':html'], $pagename));
+}
+
+
+function InputActionForm($pagename, $type, $args) {
+  global $InputAttrs;
+  $args = ParseArgs($args);
+  if (@$args['pagename']) $pagename = $args['pagename'];
+  $opt = NULL;
+  $html = InputToHTML($pagename, $type, $args, $opt);
+  foreach(preg_grep('/^[\\w$]/', array_keys($args)) as $k) {
+    if (is_array($args[$k]) || in_array($k, $InputAttrs)) continue;
+    if ($k == 'n' || $k == 'pagename') continue;
+    $html .= "<input type='hidden' name='$k' value='{$args[$k]}' />";
+  }
+  return Keep($html);
+}
+
+
+## RequestArgs is used to extract values from controls (typically
+## in $_GET and $_POST).
+function RequestArgs($req = NULL) {
+  if (is_null($req)) $req = array_merge($_GET, $_POST);
+  foreach ($req as $k => $v) {
+    if (is_array($v)) $req[$k] = RequestArgs($v);
+    else $req[$k] = stripmagic($req[$k]);
+  }
+  return $req;
+}
+
+
+## Form-based authorization prompts (for use with PmWikiAuth)
+SDVA($InputTags['auth_form'], array(
+  ':html' => "<form \$InputFormArgs>\$PostVars",
+  'action' => str_replace("'", '%37', stripmagic($_SERVER['REQUEST_URI'])),
+  'method' => 'post',
+  'name' => 'authform'));
+SDV($AuthPromptFmt, array(&$PageStartFmt, 'page:$SiteGroup.AuthForm',
+  &$PageEndFmt));
+
+## PITS:01188, these should exist in "browse" mode
+## NOTE: also defined in prefs.php
+XLSDV('en', array(
+  'ak_save' => 's',
+  'ak_saveedit' => 'u',
+  'ak_preview' => 'p',
+  'ak_textedit' => ',',
+  'e_rows' => '23',
+  'e_cols' => '60'));
+
+## The section below handles specialized EditForm pages.
+## We don't bother to load it if we're not editing.
+
+if ($action != 'edit') return;
+
+SDV($PageEditForm, '$SiteGroup.EditForm');
+SDV($PageEditFmt, '$EditForm');
+if (@$_REQUEST['editform']) {
+  $PageEditForm=$_REQUEST['editform'];
+  $PageEditFmt='$EditForm';
+}
+$Conditions['e_preview'] = '(boolean)$_REQUEST["preview"]';
+
+# (:e_preview:) displays the preview of formatted text.
+Markup('e_preview', 'directives',
+  '/^\\(:e_preview:\\)/', "MarkupInputForms");
+
+# If we didn't load guiedit.php, then set (:e_guibuttons:) to
+# simply be empty.
+Markup('e_guibuttons', 'directives', '/\\(:e_guibuttons:\\)/', '');
+
+# Prevent (:e_preview:) and (:e_guibuttons:) from 
+# participating in text rendering step.
+SDV($SaveAttrPatterns['/\\(:e_(preview|guibuttons):\\)/'], ' ');
+
+$TextScrollTop = intval(@$_REQUEST['textScrollTop']);
+SDVA($InputTags['e_form'], array(
+  ':html' => "<form action='{\$PageUrl}?action=edit' method='post'
+    \$InputFormArgs><input type='hidden' name='action' value='edit' 
+    /><input type='hidden' name='n' value='{\$FullName}' 
+    /><input type='hidden' name='basetime' value='\$EditBaseTime' 
+    /><input type='hidden' name='\$TokenName' value='\$TokenValue' 
+    /><input type='hidden' name='textScrollTop' id='textScrollTop' value='$TextScrollTop'
+    />"));
+SDVA($InputTags['e_textarea'], array(
+  ':html' => "<textarea \$InputFormArgs>\$EditText</textarea>\$IncludedPages",
+  'name' => 'text', 'id' => 'text', 'accesskey' => XL('ak_textedit'),
+  'rows' => XL('e_rows'), 'cols' => XL('e_cols')));
+SDVA($InputTags['e_author'], array(
+  ':html' => "<input type='text' \$InputFormArgs />",
+  'placeholder' => PHSC(XL('Author'), ENT_QUOTES),
+  'name' => 'author', 'value' => $Author));
+SDVA($InputTags['e_changesummary'], array(
+  ':html' => "<input type='text' \$InputFormArgs />",
+  'name' => 'csum', 'size' => '60', 'maxlength' => '100',
+  'placeholder' => PHSC(XL('Summary'), ENT_QUOTES),
+  'value' => PHSC(stripmagic(@$_POST['csum']), ENT_QUOTES)));
+SDVA($InputTags['e_minorcheckbox'], array(
+  ':html' => "<input type='checkbox' \$InputFormArgs />\$InputFormLabel",
+  'name' => 'diffclass', 'value' => 'minor'));
+if (@$_POST['diffclass']=='minor') 
+  SDV($InputTags['e_minorcheckbox']['checked'], 'checked');
+SDVA($InputTags['e_savebutton'], array(
+  ':html' => "<input type='submit' \$InputFormArgs />",
+  'name' => 'post', 'value' => ' '.XL('Save').' ', 
+  'accesskey' => XL('ak_save')));
+SDVA($InputTags['e_saveeditbutton'], array(
+  ':html' => "<input type='submit' \$InputFormArgs />",
+  'name' => 'postedit', 'value' => ' '.XL('Save and edit').' ',
+  'accesskey' => XL('ak_saveedit')));
+SDVA($InputTags['e_savedraftbutton'], array(':html' => ''));
+SDVA($InputTags['e_previewbutton'], array(
+  ':html' => "<input type='submit' \$InputFormArgs />",
+  'name' => 'preview', 'value' => ' '.XL('Preview').' ', 
+  'accesskey' => XL('ak_preview')));
+SDVA($InputTags['e_cancelbutton'], array(
+  ':html' => "<input type='submit' \$InputFormArgs />",
+  'name' => 'cancel', 'value' => ' '.XL('Cancel').' ',
+  'formnovalidate' => 'formnovalidate'));
+SDVA($InputTags['e_resetbutton'], array(
+  ':html' => "<input type='reset' \$InputFormArgs />",
+  'value' => ' '.XL('Reset').' '));
+
+if(IsEnabled($EnablePostAuthorRequired))
+  $InputTags['e_author']['required'] = 'required';
+
+if(IsEnabled($EnableNotSavedWarning, 1)) {
+  $is_preview = @$_REQUEST['preview'] ? 'class="preview"' : '';
+  $InputTags['e_form'][':html'] .=
+    "<input type='hidden' id='EnableNotSavedWarning'
+      value=\"$[Content was modified, but not saved!]\" $is_preview />";
+}
+
+if(IsEnabled($EnableEditAutoText)) {
+  $InputTags['e_form'][':html'] .=
+    "<input type='hidden' id='EnableEditAutoText' />";
+}
blob - /dev/null
blob + 7af62b705a2203aca750129b544881d928fb5b43 (mode 644)
--- /dev/null
+++ scripts/guiedit.php
@@ -0,0 +1,80 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script adds a graphical button bar to the edit page form.
+    The buttons are placed in the $GUIButtons array; each button
+    is specified by an array of five values:
+      - the position of the button relative to others (a number)
+      - the opening markup sequence
+      - the closing markup sequence
+      - the default text if none was highlighted
+      - the text of the button, either (a) HTML markup or (b) the 
+        url of a gif/jpg/png image to be used for the button 
+        (along with optional "title" text in quotes).
+
+    The buttons specified in this file are the default buttons
+    for the standard markups.  Some buttons (e.g., the attach/upload
+    button) are specified in their respective cookbook module.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+
+## Included even if no buttons: has "not saved warning" and others
+SDVA($HTMLHeaderFmt, array('guiedit' => "<script type='text/javascript'
+  src='\$FarmPubDirUrl/guiedit/guiedit.js'></script>\n"));
+
+SDV($GUIButtonDirUrlFmt,'$FarmPubDirUrl/guiedit');
+
+if(IsEnabled($EnableGUIButtons,0)) {
+  SDVA($GUIButtons, array(
+    'em'       => array(100, "''", "''", '$[Emphasized]',
+                    '$GUIButtonDirUrlFmt/em.gif"$[Emphasized (italic)]"',
+                    '$[ak_em]'),
+    'strong'   => array(110, "'''", "'''", '$[Strong]',
+                    '$GUIButtonDirUrlFmt/strong.gif"$[Strong (bold)]"',
+                    '$[ak_strong]'),
+    'pagelink' => array(200, '[[', ']]', '$[Page link]',
+                    '$GUIButtonDirUrlFmt/pagelink.gif"$[Link to internal page]"'),
+    'extlink'  => array(210, '[[', ']]', 'https:// | $[link text]',
+                    '$GUIButtonDirUrlFmt/extlink.gif"$[Link to external page]"'),
+    'big'      => array(300, "'+", "+'", '$[Big text]',
+                    '$GUIButtonDirUrlFmt/big.gif"$[Big text]"'),
+    'small'    => array(310, "'-", "-'", '$[Small text]',
+                    '$GUIButtonDirUrlFmt/small.gif"$[Small text]"'),
+    'sup'      => array(320, "'^", "^'", '$[Superscript]',
+                    '$GUIButtonDirUrlFmt/sup.gif"$[Superscript]"'),
+    'sub'      => array(330, "'_", "_'", '$[Subscript]',
+                    '$GUIButtonDirUrlFmt/sub.gif"$[Subscript]"'),
+    'h2'       => array(400, '\\n!! ', '\\n', '$[Heading]',
+                    '$GUIButtonDirUrlFmt/h.gif"$[Heading]"'),
+    'center'   => array(410, '%center%', '', '',
+                    '$GUIButtonDirUrlFmt/center.gif"$[Center]"')));
+
+  if(IsEnabled($EnableGuiEditFixUrl)) {
+    $GUIButtons['fixurl'] = array($EnableGuiEditFixUrl, 'FixSelectedURL', '', '',
+      '$GUIButtonDirUrlFmt/fixurl.png"$[Encode special characters in URL link addresses]"');
+  }
+
+  Markup('e_guibuttons', 'directives',
+    '/\\(:e_guibuttons:\\)/', 'GUIButtonCode');
+}
+
+function GUIButtonCode() {
+  global $GUIButtons;
+  extract($GLOBALS["MarkupToHTML"]); # get $pagename
+
+  usort($GUIButtons, 'cb_gbcompare');
+  
+  $json = PHSC(json_encode($GUIButtons));
+  $out = "<span class='GUIButtons' data-json=\"$json\"></span>";
+  return Keep(FmtPageName($out, $pagename));
+}
+function cb_gbcompare($a, $b) {return $a[0]-$b[0];}
+
+
+
blob - /dev/null
blob + 73c2d3af199a6ec58e16504389cd18ce5dc742c2 (mode 644)
--- /dev/null
+++ scripts/httpauth.php
@@ -0,0 +1,46 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2005 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file defines an alternate authentication scheme based on the
+    HTTP Basic authentication protocol (i.e., the scheme used by default
+    in PmWiki 1).
+*/
+
+## If the webserver has already authenticated someone, then use
+## that identifier for our authorization id.  We also disable
+## the use of the browser's Basic Auth form later, since it tends
+## to confuse webservers.
+if (IsEnabled($EnableRemoteUserAuth, 1) && @$_SERVER['REMOTE_USER']) {
+  SDV($EnableHTTPBasicAuth, 0);
+  SDV($AuthId, $_SERVER['REMOTE_USER']);
+}
+
+## If the browser supplied a password, add that password to the
+## list of passwords used for authentication
+if (@$_SERVER['PHP_AUTH_PW']) 
+  SessionAuth($pagename, array('authpw'=>array($_SERVER['PHP_AUTH_PW'] => 1)));
+
+
+## $EnableHTTPBasicAuth tells PmWikiAuth to use the browser's
+## HTTP Basic protocol prompt instead of a form-based prompt.
+if (IsEnabled($EnableHTTPBasicAuth, 1)) 
+  SDV($AuthPromptFmt, 'function:HTTPBasicAuthPrompt');
+
+## HTTPBasicAuthPrompt replaces PmWikiAuth's form-based password
+## prompt with the browser-based HTTP Basic prompt.
+function HTTPBasicAuthPrompt($pagename) {
+  global $AuthRealmFmt, $AuthDeniedFmt;
+  SDV($AuthRealmFmt,$GLOBALS['WikiTitle']);
+  SDV($AuthDeniedFmt,'A valid password is required to access this feature.');
+  $realm=FmtPageName($AuthRealmFmt,$pagename);
+  header("WWW-Authenticate: Basic realm=\"$realm\"");
+  header("Status: 401 Unauthorized");
+  header("HTTP-Status: 401 Unauthorized");
+  PrintFmt($pagename,$AuthDeniedFmt);
+  exit;
+}
+
blob - /dev/null
blob + 1bea050bb5fbf60bb0f7f8ba38a730f1a986f89d (mode 644)
--- /dev/null
+++ scripts/intermap.txt
@@ -0,0 +1,10 @@
+PmWiki:     https://www.pmwiki.org/wiki/PmWiki/
+Cookbook:   https://www.pmwiki.org/wiki/Cookbook/
+Skins:      https://www.pmwiki.org/wiki/Skins/
+Wiki:       http://www.c2.com/cgi/wiki?
+UseMod:     http://www.usemod.com/cgi-bin/wiki.pl?
+Meatball:   http://meatballwiki.org/wiki/
+Wikipedia:  https://en.wikipedia.org/wiki/
+PITS:       https://www.pmwiki.org/wiki/PITS/
+PmL10n:     https://www.pmwiki.org/wiki/Localization/
+Path:            
blob - /dev/null
blob + 69d456beb87c34b2686927bd88f78c2a1e8b89d4 (mode 644)
--- /dev/null
+++ scripts/markupexpr.php
@@ -0,0 +1,132 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2007-2021 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script implements "markup expressions" --  a method to
+    do simple computations and manipulations from markup.  The
+    generic form of a markup expression is "{(func arg1 arg2)}",
+    where the named function (held in the $MarkupExpr array)
+    is called with arg1 and arg2 as arguments.
+
+    Markup expressions can be nested.  For example, to strip
+    off the first five characters and convert the remainder to
+    lowercase, an author can write:
+
+        {(tolower (substr "HELLOWORLD" 5))}    # produces "world"
+
+    Some "built-in" expressions defined by this recipe include:
+        substr   - extract a portion of a string
+        ftime    - date/time formatting
+        strlen   - length of a string
+        rand     - generate a random number
+        pagename - build a pagename from a string
+        toupper  - convert string to uppercase
+        tolower  - convert string to lowercase
+        ucfirst  - convert first character to uppercase
+        ucwords  - convert first character of each word to uppercase
+        asspaced - spaceformatting of wikiwords
+
+    Custom expressions may be added by other recipes by adding
+    entries into the $MarkupExpr array.  Each entry's key is
+    the name of the function, the value is the code to be evaluated
+    for that function (similar to the way $FmtPV works).  By default,
+    any arguments for the expression are placed into the $args array:
+
+        ##  expressions like {(myfunc foo bar)}
+        $MarkupExpr['myfunc'] = 'myfunc($args[0], $args[1])';
+
+    The expression arguments are parsed using ParseArgs(), and the
+    result of this parsing is available through the $argp array:
+
+        ##  expressions like {(myfunc fmt=foo output=bar)}
+        $MarkupExpr['myfunc'] = 'myfunc($argp["fmt"], $argp["output"])';
+   
+    Finally, if the code in $MarkupExpr contains '$params', then
+    it is executed directly without any preprocessing into arguments,
+    and $params contains the entire argument string.  Note that $params
+    may contain escaped values representing quoted arguments and
+    results of other expressions; these values may be un-escaped
+    by using "preg_replace_callback($rpat, 'cb_expandkpv', $params)".
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+Markup('{(', '>{$var}',
+  '/\\{(\\(\\w+\\b.*?\\))\\}/',
+  "MarkupMarkupExpression");
+
+function MarkupMarkupExpression($m) {
+  extract($GLOBALS["MarkupToHTML"]); # get $pagename
+  return MarkupExpression($pagename, $m[1]);
+}
+
+SDVA($MarkupExpr, array(
+  'substr'   => 'call_user_func_array("substr", $args)',
+  'strlen'   => 'strlen($args[0])',
+  'ftime'    => 'ME_ftime(@$args[0], @$args[1], $argp)',
+  'rand'     => '($args) ? rand($args[0], $args[1]) : rand()',
+  'ucfirst'  => 'ucfirst($args[0])',
+  'ucwords'  => 'ucwords($args[0])',
+  'tolower'  => 'strtolower($args[0])',
+  'toupper'  => 'strtoupper($args[0])',
+  'mod'      => '0 + (intval($args[0]) % intval($args[1]))',
+  'asspaced' => '$GLOBALS["AsSpacedFunction"]($args[0])',
+  'pagename' => 'MakePageName($pagename, preg_replace_callback($rpat, "cb_expandkpv", $params))',
+));
+
+function cb_keep_m0_p($m) { return Keep($m[0],'P'); }
+function cb_keep_m2_p($m) { return Keep($m[2],'P'); }
+
+function MarkupExpression($pagename, $expr) {
+  global $KeepToken, $KPV, $MarkupExpr;
+  $rpat = "/$KeepToken(\\d+P)$KeepToken/";
+  
+  $expr = preg_replace_callback('/([\'"])(.*?)\\1/','cb_keep_m2_p', $expr);
+  $expr = preg_replace_callback('/\\(\\W/', 'cb_keep_m0_p', $expr);
+  while (preg_match('/\\((\\w+)(\\s[^()]*)?\\)/', $expr, $match)) {
+    @list($repl, $func, $params) = $match;
+    $code = @$MarkupExpr[$func];
+    ##  if not a valid function, save this string as-is and exit
+    if (!$code) break;
+    ##  if the code uses '$params', we just evaluate directly
+    if (strpos($code, '$params') !== false) {
+      $out = eval("return ({$code});");
+      if ($expr == $repl) { $expr = $out; break; }
+      $expr = str_replace($repl, $out, $expr);
+      continue;
+    }
+    ##  otherwise, we parse arguments into $args before evaluating
+    $argp = ParseArgs($params);
+    $x = @$argp['#']; $args = array();
+    while ($x) {
+      list($k, $v) = array_splice($x, 0, 2);
+      if ($k == '' || $k == '+' || $k == '-') 
+        $args[] = $k.preg_replace_callback($rpat, 'cb_expandkpv', $v);
+    }
+    ##  fix any quoted arguments
+    foreach ($argp as $k => $v)
+      if (!is_array($v)) $argp[$k] = preg_replace_callback($rpat, 'cb_expandkpv', $v);
+    $out = eval("return ({$code});");
+    if ($expr == $repl) { $expr = $out; break; }
+    $expr = str_replace($repl, Keep($out, 'P'), $expr);
+  }
+  return preg_replace_callback($rpat, 'cb_expandkpv', $expr);
+}
+
+##   ME_ftime handles {(ftime ...)} expressions.
+##
+function ME_ftime($arg0 = '', $arg1 = '', $argp = NULL) {
+  global $TimeFmt, $Now, $FTimeFmt;
+  if (@$argp['fmt']) $fmt = $argp['fmt']; 
+  elseif ($arg0 && strpos($arg0, '%') !== false) { $fmt = $arg0; $arg0 = $arg1; }
+  elseif ($arg1 && strpos($arg1, '%') !== false) $fmt = $arg1;
+  else $fmt = '';
+  ## determine the timestamp
+  if (isset($argp['when'])) list($time, $x) = DRange($argp['when']);
+  elseif ($arg0 > '') list($time, $x) = DRange($arg0);
+  else $time = $Now;
+  return PSFT($fmt, $time, @$argp['locale'], @$argp['tz']);
+}
+
blob - /dev/null
blob + 1a568f79727edfbc876771dc7a2c6fb4de25a80c (mode 644)
--- /dev/null
+++ scripts/notify.php
@@ -0,0 +1,204 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2006-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script enables email notifications to be sent when posts
+    are made.  It is included by default from the stdconfig.php 
+    script if $EnableNotify is set to non-zero.
+
+    Once enabled, the addresses to receive messages are configured
+    via the Site.NotifyList page.  A simple line in that page
+    such as 
+
+        notify=somebody@example.com
+
+    will cause messages to be periodically sent to "somebody@example.com"
+    listing the pages that have changed on the site since the previous
+    message was sent.  Multiple notify lines can be placed in the page,
+    and there are options to restrict the types of notifications
+    desired.  For more details, see the PmWiki.Notify page in
+    the documentation.
+
+    Several variables set defaults for this script:
+
+    $NotifyFrom - return email address to use in message.
+    $NotifyDelay - number of seconds to wait before sending mail
+        after the first post.
+    $NotifySquelch - minimum number of seconds between sending email
+        messages to each address.  Individual "notify=" lines in
+        Site.NotifyList can override this value via a custom "squelch="
+        parameter.
+    $NotifyFile - scratchpad file used to keep track of pending emails.
+    $NotifyListPageFmt - name of the NotifyList configuration page.
+    $NotifySubjectFmt - subject line for sent messages.
+    $NotifyBodyFmt - body of message to be sent.  The string '$NotifyItems'
+        is replaced with the list of posts in the email.
+    $NotifyItemFmt - the format for each post to be included in a notification.
+    $NotifyTimeFmt - the format for dates and times ($PostTime) 
+        in notification messages.
+    $NotifyHeaders - any additional message headers to be sent.
+    $NotifyParameters - any additional parameters to be passed to PHP's
+        mail() function.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($NotifyDelay, 0);
+SDV($NotifySquelch, 10800);
+SDV($NotifyFile, "$WorkDir/.notifylist");
+SDV($NotifyListPageFmt, '$SiteAdminGroup.NotifyList');
+SDV($NotifySubjectFmt, '[$WikiTitle] recent notify posts');
+SDV($NotifyBodyFmt, 
+  "Recent \$WikiTitle posts:\n" 
+  . "  \$ScriptUrl/$[{\$SiteGroup}/AllRecentChanges]\n\n\$NotifyItems\n");
+SDV($NotifyTimeFmt, $TimeFmt);
+SDV($NotifyItemFmt, 
+  ' * {$FullName} . . . $PostTime by {$Author}');
+SDV($NotifyHeaders, '');
+SDV($NotifyParameters, '');
+
+if (@$NotifyFrom)
+  $NotifyHeaders = "From: $NotifyFrom\r\n$NotifyHeaders";
+
+$EditFunctions[] = 'PostNotify';
+
+##   check if we need to do notifications
+if ($action != 'edit' && $action != 'postupload') NotifyCheck($pagename);
+
+
+function NotifyCheck($pagename) {
+  global $NotifyFile, $Now, $LastModTime;
+  $nfp = @fopen($NotifyFile, 'r');
+  if (!$nfp) return;
+  $nextevent = fgets($nfp);
+  fclose($nfp);
+  if ($Now < $nextevent && $LastModTime < filemtime($NotifyFile)) return;
+  register_shutdown_function('NotifyUpdate', $pagename, getcwd());
+}
+
+    
+function PostNotify($pagename, &$page, &$new) {
+  global $IsPagePosted;
+  if ($IsPagePosted) 
+    register_shutdown_function('NotifyUpdate', $pagename, getcwd());
+}
+
+
+function NotifyUpdate($pagename, $dir='') {
+  global $NotifyList, $NotifyListPageFmt, $NotifyFile, $IsPagePosted, $IsUploadPosted,
+    $FmtV, $NotifyTimeFmt, $NotifyItemFmt, $SearchPatterns, $MailFunction,
+    $NotifySquelch, $NotifyDelay, $Now, $Charset, $EnableNotifySubjectEncode,
+    $NotifySubjectFmt, $NotifyBodyFmt, $NotifyHeaders, $NotifyParameters;
+
+  $abort = ignore_user_abort(true);
+  if ($dir) { flush(); chdir($dir); }
+
+  $GLOBALS['EnableRedirect'] = 0;
+
+  ##   Read in the current notify configuration
+  $pn = FmtPageName($NotifyListPageFmt, $pagename);
+  $npage = ReadPage($pn, READPAGE_CURRENT);
+  preg_match_all('/^[\s*:#>-]*(notify[:=].*)/m', strval(@$npage['text']), $nlist);
+  $nlist = array_merge((array)@$NotifyList, (array)@$nlist[1]);
+  if (!$nlist) return;
+
+  ##   make sure other processes are locked out
+  Lock(2);
+
+  ##   let's load the current .notifylist table
+  $nfile = FmtPageName($NotifyFile, $pagename);
+  $nfp = @fopen($nfile, 'r');
+  if ($nfp) {
+    ##   get our current squelch and delay timestamps
+    clearstatcache();
+    $sz = filesize($nfile);
+    list($nextevent, $firstpost) = explode(' ', rtrim(fgets($nfp, $sz)));
+    ##   restore our notify array
+    $notify = unserialize(fgets($nfp, $sz));
+    fclose($nfp);
+  }
+  if (!is_array($notify)) $notify = array();
+
+  ##   if this is for a newly posted page, get its information
+  if ($IsPagePosted || $IsUploadPosted) {
+    $page = ReadPage($pagename, READPAGE_CURRENT);
+    $FmtV['$PostTime'] = PSFT($NotifyTimeFmt, $Now);
+    $item = $tzitem = urlencode(FmtPageName($NotifyItemFmt, $pagename));
+    if ($firstpost < 1) $firstpost = $Now;
+  }
+
+  foreach($nlist as $n) {
+    $opt = ParseArgs($n);
+    $mailto = preg_split('/[\s,]+/', $opt['notify']);
+    if (!$mailto) continue;
+    if (@$opt['squelch']) 
+      foreach($mailto as $m) $squelch[$m] = $opt['squelch'];
+    if (!$IsPagePosted) continue;
+    if (@$opt['link']) {
+      $link = MakePageName($pagename, $opt['link']);
+      if (!preg_match("/(^|,)$link(,|$)/i", $page['targets'])) continue;
+    }
+    $pats = @(array)$SearchPatterns[$opt['list']];
+    if (@$opt['group']) $pats[] = FixGlob($opt['group'], '$1$2.*');
+    if (@$opt['name']) $pats[] = FixGlob($opt['name'], '$1*.$2');
+    if ($pats && !MatchPageNames($pagename, $pats)) continue;
+    if (@$opt['trail']) {
+      $trail = ReadTrail($pagename, $opt['trail']);
+      for ($i=0; $i<count($trail); $i++) 
+        if ($trail[$i]['pagename'] == $pagename) break;
+      if ($i >= count($trail)) continue;
+    }
+    if (@$opt['tz']) {
+      $FmtV['$PostTime'] = PSFT($NotifyTimeFmt, $Now, @$opt['locale'], $opt['tz']);
+      $tzitem = urlencode(FmtPageName($NotifyItemFmt, $pagename));
+    }
+    foreach($mailto as $m) { $notify[$m][] = $tzitem; }
+  }
+
+  $nnow = time();
+  if ($nnow < $firstpost + $NotifyDelay) 
+    $nextevent = $firstpost + $NotifyDelay;
+  else {
+    $firstpost = 0;
+    $nextevent = $nnow + 86400;
+    $mailto = array_keys($notify);
+    $subject = FmtPageName($NotifySubjectFmt, $pagename);
+    if(IsEnabled($EnableNotifySubjectEncode, 0)
+      && preg_match("/[^\x20-\x7E]/", $subject))
+        $subject = strtoupper("=?$Charset?B?"). base64_encode($subject)."?=";
+    $body = FmtPageName($NotifyBodyFmt, $pagename);
+    foreach ($mailto as $m) {
+      $msquelch = @$notify[$m]['lastmail'] +
+                    ((@$squelch[$m]) ? $squelch[$m] : $NotifySquelch);
+      if ($nnow < $msquelch) {
+        if ($msquelch < $nextevent && count($notify[$m])>1)
+          $nextevent = $msquelch;
+        continue;
+      }
+      unset($notify[$m]['lastmail']);
+      if (!$notify[$m]) { unset($notify[$m]); continue; }
+      $mbody = str_replace('$NotifyItems',   
+                           urldecode(implode("\n", $notify[$m])), $body);
+      SDV($MailFunction, 'mail');
+      if ($NotifyParameters && !@ini_get('safe_mode'))
+        $MailFunction($m, $subject, $mbody, $NotifyHeaders, $NotifyParameters);
+      else 
+        $MailFunction($m, $subject, $mbody, $NotifyHeaders);
+      $notify[$m] = array('lastmail' => $nnow);
+    }
+  }
+
+  ##   save the updated notify status
+  $nfp = @fopen($nfile, "w");
+  if ($nfp) {
+    fputs($nfp, "$nextevent $firstpost\n");
+    fputs($nfp, serialize($notify) . "\n");
+    fclose($nfp);
+  }
+  Lock(0);
+  return true;
+}
+
blob - /dev/null
blob + 326351467c878fcb5ade4505f89c7271ab019dd1 (mode 644)
--- /dev/null
+++ scripts/pagelist.php
@@ -0,0 +1,979 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2023 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script implements (:pagelist:) and friends -- it's one
+    of the nastiest scripts you'll ever encounter.  Part of the reason
+    for this is that page listings are so powerful and flexible, so
+    that adds complexity.  They're also expensive, so we have to
+    optimize them wherever we can.
+
+    The core function is FmtPageList(), which will generate a 
+    listing according to a wide variety of options.  FmtPageList takes 
+    care of initial option processing, and then calls a "FPL"
+    (format page list) function to obtain the formatted output.
+    The FPL function is chosen by the 'fmt=' option to (:pagelist:).
+
+    Each FPL function calls MakePageList() to obtain the list
+    of pages, formats the list somehow, and returns the results
+    to FmtPageList.  FmtPageList then returns the output to
+    the caller, and calls Keep() (preserves HTML) or PRR() (re-evaluate
+    as markup) as appropriate for the output being returned.
+
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+## $PageIndexFile is the index file for term searches and link= option
+if (IsEnabled($EnablePageIndex, 1)) {
+  SDV($PageIndexFile, "$WorkDir/.pageindex");
+  $EditFunctions[] = 'PostPageIndex';
+}
+SDV($StrFoldFunction, 'strtolower');
+SDV($PageIndexFoldFunction, $StrFoldFunction);
+SDV($PageIndexTermsFunction, 'PageIndexTerms');
+SDV($PageListSortCmpFunction, 'strcasecmp');
+
+## $SearchPatterns holds patterns for list= option
+SDV($SearchPatterns['all'], array());
+SDVA($SearchPatterns['normal'], array(
+  'recent' => '!\.(All)?Recent(Changes|Uploads)$!',
+  'group' => '!\.Group(Print)?(Header|Footer|Attributes)$!',
+  'self' => str_replace('.', '\\.', "!^$pagename$!")));
+
+# The list=grouphomes search pattern requires to scan 
+# all PageStore directories to get the pagenames.
+# This takes (a tiny amoint of) time, so we only do it when needed.
+function EnablePageListGroupHomes() { 
+  global $SearchPatterns;
+  if(isset($SearchPatterns['grouphomes'])) return;
+  
+  $groups = $homes = array();
+  foreach(ListPages() as $pn) {
+    list($g, $n) = explode(".", $pn);
+    @$groups[$g]++;
+  }
+  foreach($groups as $g => $cnt) {
+    $homes[] = MakePageName("$g.$g", "$g.");
+  }
+  $SearchPatterns['grouphomes'] = array('/^('.implode('|', $homes).')$/');
+}
+
+## $FPLFormatOpt is a list of options associated with fmt=
+## values.  'default' is used for any undefined values of fmt=.
+SDVA($FPLFormatOpt, array(
+  'default' => array('fn' => 'FPLTemplate', 'fmt' => '#default'),
+  'bygroup' => array('fn' => 'FPLTemplate', 'template' => '#bygroup',
+                     'class' => 'fplbygroup'),
+  'simple'  => array('fn' => 'FPLTemplate', 'template' => '#simple',
+                     'class' => 'fplsimple'),
+  'group'   => array('fn' => 'FPLTemplate', 'template' => '#group',
+                     'class' => 'fplgroup'),
+  'title'   => array('fn' => 'FPLTemplate', 'template' => '#title',
+                     'class' => 'fpltitle', 'order' => 'title'),
+  'count'   => array('fn' => 'FPLCountA'),
+  ));
+
+SDV($SearchResultsFmt, "<div class='wikisearch'>\$[SearchFor]
+  <div class='vspace'></div>\$MatchList
+  <div class='vspace'></div>\$[SearchFound]</div>");
+SDV($SearchQuery, str_replace('$', '&#036;', 
+  PHSC(stripmagic(@$_REQUEST['q']), ENT_NOQUOTES)));
+XLSDV('en', array(
+  'SearchFor' => 'Results of search for <em>$Needle</em>:',
+  'SearchFound' => 
+    '$MatchCount pages found out of $MatchSearched pages searched.'));
+
+SDV($PageListArgPattern, '((?:\\$:?)?\\w[-\\w]*)[:=]');
+
+Markup('pagelist', 'directives',
+  '/\\(:pagelist(\\s+.*?)?:\\)/i', "MarkupPageList");
+Markup('searchbox', 'directives',
+  '/\\(:searchbox(\\s.*?)?:\\)/', "MarkupPageList");
+Markup('searchresults', 'directives',
+  '/\\(:searchresults(\\s+.*?)?:\\)/i', "MarkupPageList");
+
+function MarkupPageList($m) {
+  extract($GLOBALS["MarkupToHTML"]); # get $pagename, $markupid
+  switch ($markupid) {
+    case 'pagelist': 
+      return FmtPageList('$MatchList', $pagename, array('o' => $m[1].' '));
+    case 'searchbox': 
+      return SearchBox($pagename, 
+        ParseArgs(@$m[1], $GLOBALS['PageListArgPattern']));
+    case 'searchresults': 
+      return FmtPageList($GLOBALS['SearchResultsFmt'], 
+        $pagename, array('req' => 1, 'request'=>1, 'o' => @$m[1]));
+  }
+}
+
+# called from PageListIf and FPLExpandItemVars
+class cb_pl_expandvars extends PPRC { 
+  function pl_expandvars($m) {
+    $pn = $this->vars;
+    return PVSE(PageVar($pn, $m[2], $m[1]));
+  }
+}
+
+SDV($SaveAttrPatterns['/\\(:(searchresults|pagelist)(\\s+.*?)?:\\)/i'], ' ');
+
+SDV($HandleActions['search'], 'HandleSearchA');
+SDV($HandleAuth['search'], 'read');
+SDV($ActionTitleFmt['search'], '| $[Search Results]');
+
+SDVA($PageListFilters, array(
+  'PageListCache' => 80,
+  'PageListProtect' => 90,
+  'PageListSources' => 100,
+  'PageListPasswords' => 120,
+  'PageListIf' => 140,
+  'PageListTermsTargets' => 160,
+  'PageListVariables' => 180,
+  'PageListSort' => 900,
+));
+
+function CorePageListSorts($x, $y, $o) {
+  global $PCache;
+  if($o == 'title')
+    return @strcasecmp($PCache[$x]['=title'],$PCache[$y]['=title']);
+  return @($PCache[$x][$o]-$PCache[$y][$o]);
+}
+foreach(array('random', 'size', 'time', 'ctime', 'title') as $o) 
+  SDV($PageListSortCmp[$o], 'CorePageListSorts');
+
+define('PAGELIST_PRE' , 1);
+define('PAGELIST_ITEM', 2);
+define('PAGELIST_POST', 4);
+
+## SearchBox generates the output of the (:searchbox:) markup.
+## If $SearchBoxFmt is defined, that is used, otherwise a searchbox
+## is generated.  Options include group=, size=, label=.
+function SearchBox($pagename, $opt) {
+  global $SearchBoxFmt, $SearchBoxInputType, $SearchBoxOpt, $SearchQuery, $EnablePathInfo;
+  if (isset($SearchBoxFmt)) return Keep(FmtPageName($SearchBoxFmt, $pagename));
+  SDVA($SearchBoxOpt, array('size' => '40', 
+    'label' => FmtPageName('$[Search]', $pagename),
+    'placeholder' => FmtPageName('$[Search]', $pagename),
+    'value' => str_replace("'", "&#039;", $SearchQuery)));
+  $opt = array_merge((array)$SearchBoxOpt, @$_GET, (array)$opt);
+  $opt['action'] = 'search';
+  $target = (@$opt['target']) 
+            ? MakePageName($pagename, $opt['target']) : $pagename;
+  $opt['n'] = IsEnabled($EnablePathInfo, 0) ? '' : $target;
+  $out = FmtPageName(" class='wikisearch' action='\$PageUrl' method='get'>",
+                     $target);
+  foreach($opt as $k => $v) {
+    if ($v == '' || is_array($v)) continue;
+    $v = PHSC($v, ENT_QUOTES, null, false);
+    $opt[$k] = $v;
+    if(preg_match('/^(q|label|value|size|placeholder|aria-\\w+)$/', $k)) continue;
+    $k = PHSC($k, ENT_QUOTES, null, false);
+    $out .= "<input type='hidden' name='$k' value='$v' />";
+  }
+  SDV($SearchBoxInputType, 'text');
+  $out .= "<input type='$SearchBoxInputType' name='q' value='{$opt['value']}' ";
+  $attrs = preg_grep('/^(placeholder|aria-\\w+)/', array_keys($opt));
+  foreach ($attrs as $k) $out .= "  $k='{$opt[$k]}' ";
+  $out .= "  class='inputbox searchbox' size='{$opt['size']}' />";
+  if($opt['label']) 
+    $out .= "<input type='submit' class='inputbutton searchbutton' value='{$opt['label']}' />";
+  return '<form '.Keep($out).'</form>';
+}
+
+
+## FmtPageList combines options from markup, request form, and url,
+## calls the appropriate formatting function, and returns the string.
+function FmtPageList($outfmt, $pagename, $opt) {
+  global $GroupPattern, $FmtV, $PageListArgPattern, 
+    $FPLFormatOpt, $FPLFunctions;
+  # get any form or url-submitted request
+  $rq = PHSC(stripmagic(@$_REQUEST['q']), ENT_NOQUOTES);
+  # build the search string
+  $FmtV['$Needle'] = $opt['o'] . ' ' . $rq;
+  # Handle "group/" at the beginning of the form-submitted request
+  if (preg_match("!^($GroupPattern(\\|$GroupPattern)*)?/!i", $rq, $match)) {
+    $opt['group'] = @$match[1];
+    $rq = substr($rq, strlen(strval(@$match[1]))+1);
+  }
+  $opt = array_merge($opt, ParseArgs($opt['o'], $PageListArgPattern));
+  # merge markup options with form and url
+  if (@$opt['request'] && @$_REQUEST) {
+    $rkeys = preg_grep('/^=/', array_keys($_REQUEST), PREG_GREP_INVERT);
+    if ($opt['request'] != '1') {
+      list($incl, $excl) = GlobToPCRE($opt['request']);
+      if ($excl) $rkeys = array_diff($rkeys, preg_grep("/$excl/", $rkeys));
+      if ($incl) $rkeys = preg_grep("/$incl/", $rkeys);
+    }
+    $cleanrequest = array();
+    foreach($rkeys as $k) {
+      $cleanrequest[$k] = stripmagic($_REQUEST[$k]);
+      if(substr($k, 0, 4)=='ptv_') # defined separately in forms
+        $cleanrequest['$:'.substr($k, 4)] = stripmagic($_REQUEST[$k]);
+    }
+    $opt = array_merge($opt, ParseArgs($rq, $PageListArgPattern), $cleanrequest);
+  }
+
+  # non-posted blank search requests return nothing
+  if (@($opt['req'] && !$opt['-'] && !$opt[''] && !$opt['+'] && !$opt['q']))
+    return '';
+  # terms and group to be included and excluded
+  $GLOBALS['SearchIncl'] = array_merge((array)@$opt[''], (array)@$opt['+']);
+  $GLOBALS['SearchExcl'] = (array)@$opt['-'];
+  $GLOBALS['SearchGroup'] = @$opt['group'];
+  $fmt = @$opt['fmt']; if (!$fmt) $fmt = 'default';
+  $fmtopt = @$FPLFormatOpt[$fmt];
+  if (!is_array($fmtopt)) {
+    if ($fmtopt) $fmtopt = array('fn' => $fmtopt);
+    elseif (@$FPLFunctions[$fmt]) 
+      $fmtopt = array('fn' => $FPLFunctions[$fmt]);
+    else $fmtopt = $FPLFormatOpt['default'];
+  }
+  $fmtfn = @$fmtopt['fn'];
+  if (!is_callable($fmtfn)) $fmtfn = $FPLFormatOpt['default']['fn'];
+  $matches = array();
+  $opt = array_merge($fmtopt, $opt);
+  $out = $fmtfn($pagename, $matches, $opt);
+  $FmtV['$MatchCount'] = count($matches);
+  if ($outfmt != '$MatchList')
+    { $FmtV['$MatchList'] = $out; $out = FmtPageName($outfmt, $pagename); }
+  if (@$out[0] == '<') $out = Keep($out);
+  return PRR($out);
+}
+
+
+## MakePageList generates a list of pages using the specifications given
+## by $opt.
+function MakePageList($pagename, $opt, $retpages = 1) {
+  global $MakePageListOpt, $PageListFilters, $PCache;
+
+  StopWatch('MakePageList pre');
+  SDVA($MakePageListOpt, array('list' => 'default'));
+  $opt = array_merge((array)$MakePageListOpt, (array)$opt);
+  if (!@$opt['order'] && !@$opt['trail']) $opt['order'] = 'name';
+  $opt['order'] = preg_replace('/[^-\\w:$]+/', ',', strval(@$opt['order']));
+
+  ksort($opt); $opt['=key'] = md5(serialize($opt));
+
+  $itemfilters = array(); $postfilters = array();
+  asort($PageListFilters);
+  $opt['=phase'] = PAGELIST_PRE; $list=array(); $pn=NULL; $page=NULL;
+  foreach($PageListFilters as $fn => $v) {
+    if ($v<0) continue;
+    $ret = $fn($list, $opt, $pagename, $page);
+    if ($ret & PAGELIST_ITEM) $itemfilters[] = $fn;
+    if ($ret & PAGELIST_POST) $postfilters[] = $fn;
+  }
+
+  StopWatch("MakePageList items count=".count($list).", filters=".implode(',',$itemfilters));
+  $opt['=phase'] = PAGELIST_ITEM;
+  $matches = array(); $opt['=readc'] = 0;
+  foreach((array)$list as $pn) {
+    $page = array();
+    foreach((array)$itemfilters as $fn) 
+      if (!$fn($list, $opt, $pn, $page)) continue 2;
+    $page['pagename'] = $page['name'] = $pn;
+    PCache($pn, $page);
+    $matches[] = $pn;
+  }
+  $list = $matches;
+  StopWatch("MakePageList post count=".count($list).", readc={$opt['=readc']}");
+
+  $opt['=phase'] = PAGELIST_POST; $pn=NULL; $page=NULL;
+  foreach((array)$postfilters as $fn) 
+    $fn($list, $opt, $pagename, $page);
+  
+  if ($retpages) 
+    for($i=0; $i<count($list); $i++)
+      $list[$i] = &$PCache[@$list[$i]];
+  StopWatch('MakePageList end');
+  return $list;
+}
+
+
+function PageListProtect(&$list, &$opt, $pn, &$page) {
+  global $EnablePageListProtect;
+
+  switch ($opt['=phase']) {
+    case PAGELIST_PRE:
+      if (!IsEnabled($EnablePageListProtect, 1) && @$opt['readf'] < 1000)
+        return 0;
+      StopWatch("PageListProtect enabled");
+      $opt['=protectexclude'] = array();
+      $opt['=protectsafe'] = (array)@$opt['=protectsafe'];
+      return PAGELIST_ITEM|PAGELIST_POST;
+
+    case PAGELIST_ITEM:
+      if (@$opt['=protectsafe'][$pn]) return 1;
+      $page = RetrieveAuthPage($pn, 'ALWAYS', false, READPAGE_CURRENT);
+      $opt['=readc']++;
+      if (!$page['=auth']['read']) $opt['=protectexclude'][$pn] = 1;
+      if (!$page['=passwd']['read']) $opt['=protectsafe'][$pn] = 1; 
+      else NoCache();
+      return 1;
+
+    case PAGELIST_POST:
+      $excl = array_keys($opt['=protectexclude']);
+      $safe = array_keys($opt['=protectsafe']);
+      StopWatch("PageListProtect excluded=" .count($excl)
+                . ", safe=" . count($safe));
+      $list = array_diff($list, $excl);
+      return 1;
+  }
+}
+
+
+function PageListSources(&$list, &$opt, $pn, &$page) {
+  global $SearchPatterns;
+
+  StopWatch('PageListSources begin');
+  if ($opt['list'] == 'grouphomes') EnablePageListGroupHomes();
+  if (!isset($SearchPatterns[$opt['list']])) $opt['list'] = 'default';
+  ## add the list= option to our list of pagename filter patterns
+  $opt['=pnfilter'] = array_merge((array)@$opt['=pnfilter'], 
+                                  (array)@$SearchPatterns[$opt['list']]);
+
+  if (@$opt['group']) $opt['=pnfilter'][] = FixGlob($opt['group'], '$1$2.*');
+  if (@$opt['name']) $opt['=pnfilter'][] = FixGlob($opt['name'], '$1*.$2');
+
+  if (@$opt['trail']) {
+    $trail = ReadTrail($pn, $opt['trail']);
+    $tlist = array();
+    foreach($trail as $tstop) {
+      $n = $tstop['pagename'];
+      $tlist[] = $n;
+      $tstop['parentnames'] = array();
+      PCache($n, $tstop);
+    }
+    foreach($trail as $tstop) 
+      $PCache[$tstop['pagename']]['parentnames'][] = 
+        @$trail[$tstop['parent']]['pagename'];
+    if (!@$opt['=cached']) $list = MatchPageNames($tlist, $opt['=pnfilter']);
+  } else if (!@$opt['=cached']) $list = ListPages($opt['=pnfilter']);
+  StopWatch("PageListSources end count=".count($list));
+  return 0;
+}
+
+
+function PageListPasswords(&$list, &$opt, $pn, &$page) {
+  if ($opt['=phase'] == PAGELIST_PRE)
+    return (@$opt['passwd'] > '' && !@$opt['=cached']) ? PAGELIST_ITEM : 0;
+
+  if (!$page) { $page = ReadPage($pn, READPAGE_CURRENT); $opt['=readc']++; }
+  if (!$page) return 0;
+  return (boolean)preg_grep('/^passwd/', array_keys($page));
+}
+
+
+function PageListIf(&$list, &$opt, $pn, &$page) {
+  global $Conditions, $Cursor;
+
+  ##  See if we have any "if" processing to perform
+  if ($opt['=phase'] == PAGELIST_PRE) 
+    return (@$opt['if'] > '') ? PAGELIST_ITEM : 0;
+
+  $condspec = $opt['if'];
+  $Cursor['='] = $pn;
+  $varpat = '\\{([=*]|!?[-\\w.\\/\\x80-\\xff]*)(\\$:?\\w+)\\}';
+  while (preg_match("/$varpat/", $condspec, $match)) {
+    $cb = new cb_pl_expandvars($pn);
+    $condspec = preg_replace_callback("/$varpat/", 
+      array($cb, 'pl_expandvars'), $condspec);
+  }
+  if (!preg_match("/^\\s*(!?)\\s*(\\S*)\\s*(.*?)\\s*$/", $condspec, $match)) 
+    return 0;
+  list($x, $not, $condname, $condparm) = $match;
+  if (!isset($Conditions[$condname])) return 1;
+  $tf = (int)@eval("return ({$Conditions[$condname]});");
+  return (boolean)($tf xor $not);
+}
+
+function PageListTermsTargets(&$list, &$opt, $pn, &$page) {
+  global $PageIndexTermsFunction, $FmtV;
+  static $reindex = array();
+  $fold = $GLOBALS['StrFoldFunction'];
+
+  switch ($opt['=phase']) {
+    case PAGELIST_PRE:
+      $FmtV['$MatchSearched'] = count($list);
+      $incl = array(); $excl = array();
+      foreach((array)@$opt[''] as $i) { $incl[] = $fold($i); }
+      foreach((array)@$opt['+'] as $i) { $incl[] = $fold($i); }
+      foreach((array)@$opt['-'] as $i) { $excl[] = $fold($i); }
+
+      $indexterms = $PageIndexTermsFunction($incl);
+      foreach($incl as $i) {
+        $delim = (!preg_match('/[^\\w\\x80-\\xff]/', $i)) ? '$' : '/';
+        $opt['=inclp'][] = $delim . preg_quote($i,$delim) . $delim . 'i';
+      }
+      if ($excl) 
+        $opt['=exclp'][] = '$'.implode('|', array_map('preg_quote',$excl)).'$i';
+
+      $opt['=linka'] = array();
+      if (@$opt['links']) $opt['link'] = $opt['links'];
+      if (@$opt['link']) {
+        if (preg_match('/^\s*-|[,*?![\\]]/', $opt['link']))
+          $opt['=linka'] = PageListLinkPatterns($opt['link']);
+        else {
+          $link = MakePageName($pn, $opt['link']);
+          $opt['=linkp'] = "/(^|,)$link(,|$)/i";
+          $indexterms[] = " $link ";
+        }
+      }
+      if (@$opt['category']) {
+        $c = preg_replace('/(^,*-?|,+-?)/', '$1!', $opt['category']);
+        $opt['=linka'] = array_merge($opt['=linka'], PageListLinkPatterns($c));
+      }
+      
+      
+      if (@$opt['=cached']) return 0;
+      if ($indexterms||@$opt['=linka']) {
+        StopWatch("PageListTermsTargets begin count=".count($list));
+        $xlist = PageIndexGrep($indexterms, true, @$opt['=linka']);
+        $list = array_diff($list, $xlist);
+        StopWatch("PageListTermsTargets end count=".count($list));
+      }
+      if (@$opt['=inclp'] || @$opt['=exclp'] || @$opt['=linkp'] || @$opt['=linka']) 
+        return PAGELIST_ITEM|PAGELIST_POST; 
+      return 0;
+
+    case PAGELIST_ITEM:
+      if (!$page) { $page = ReadPage($pn, READPAGE_CURRENT); $opt['=readc']++; }
+      if (!$page) return 0;
+      $targets = strval(@$page['targets']);
+      if (@$opt['=linka']) {
+        if (! PageListMatchTargets($targets, $opt['=linka']))
+          { $reindex[] = $pn; return 0; }
+      }
+      if (@$opt['=linkp'] && !preg_match($opt['=linkp'], $targets)) 
+        { $reindex[] = $pn; return 0; }
+      if (@$opt['=inclp'] || @$opt['=exclp']) {
+        $text = $fold($pn."\n$targets\n".@$page['text']);
+        foreach((array)@$opt['=exclp'] as $i) 
+          if (preg_match($i, $text)) return 0;
+        foreach((array)@$opt['=inclp'] as $i) 
+          if (!preg_match($i, $text)) { 
+            if ($i[0] == '$') $reindex[] = $pn;
+            return 0; 
+          }
+      }
+      return 1;
+
+    case PAGELIST_POST:
+      if ($reindex) PageIndexQueueUpdate($reindex);
+      $reindex = array();
+      return 0;
+  }
+}
+
+
+function PageListMatchTargets($targets, $links) {
+  $targets = preg_split('/[, ]+/', trim($targets), -1, PREG_SPLIT_NO_EMPTY);
+  if (@$links['none'] && MatchNames($targets, $links['none'])) return false;
+  if (@$links['any'] && !MatchNames($targets, $links['any'])) return false;
+  if (@$links['req']) foreach($links['req'] as $pat)
+    if (!MatchNames($targets, $pat)) return false;
+  return true;
+}
+
+
+function PageListLinkPatterns($pat) {
+  # custom FixGlobToPCRE
+  $pat = str_replace('/', '.', $pat);
+  $pat = preg_replace('/([\\s,][-+]?)([^\\/.\\s,!]+)(?=[\\s,])/', '$1*.$2', ",$pat,");
+  $pat = preg_quote($pat, '/');
+  $pat = str_replace(array('\\*', '\\?', '\\[', '\\]', '\\^', '\\-', '\\+', ','),
+                     array('.*',  '.',   '[',   ']',   '^', '-', '+', ' '), $pat);
+  $req = array();
+  $patterns = array('req'=>array());
+  $args = ParseArgs($pat);
+  if (@$args['']) $patterns['any'] = '/^('.implode('|', $args['']).')$/i';
+  if (@$args['-']) $patterns['none'] = '/^('.implode('|', $args['-']).')$/i';
+  if (@$args['+']) foreach($args['+'] as $p) $patterns['req'][] = "/^$p$/i";
+  
+  return $patterns;
+}
+
+function PageListVariables(&$list, &$opt, $pn, &$page) {
+  global $PageListVarFoldFn, $StrFoldFunction;
+  $fold = empty($PageListVarFoldFn)
+    ? $StrFoldFunction : $PageListVarFoldFn;
+
+  switch ($opt['=phase']) {
+    case PAGELIST_PRE:
+      $varlist = preg_grep('/^\\$/', array_keys($opt));
+      if (!$varlist) return 0;
+      foreach($varlist as $v) {
+        list($inclp, $exclp) = GlobToPCRE($opt[$v]);
+        if ($inclp) $opt['=varinclp'][$v] = $fold("/$inclp/i");
+        if ($exclp) $opt['=varexclp'][$v] = $fold("/$exclp/i");
+      }
+      return PAGELIST_ITEM;
+
+    case PAGELIST_ITEM:
+      if (@$opt['=varinclp'])
+        foreach($opt['=varinclp'] as $v => $pat) 
+          if (!preg_match($pat, $fold(PageVar($pn, $v)))) return 0;
+      if (@$opt['=varexclp'])
+        foreach($opt['=varexclp'] as $v => $pat) 
+           if (preg_match($pat, $fold(PageVar($pn, $v)))) return 0;
+      return 1;
+  }
+}
+
+
+function PageListSort(&$list, &$opt, $pn, &$page) {
+  global $PageListSortCmp, $PCache, $PageListSortRead;
+  SDVA($PageListSortRead, array('name' => 0, 'group' => 0, 'random' => 0,
+    'title' => 0));
+
+  switch ($opt['=phase']) {
+    case PAGELIST_PRE:
+      $ret = 0;
+      foreach(preg_split('/[^-\\w:$]+/', @$opt['order'], -1, PREG_SPLIT_NO_EMPTY) 
+              as $o) {
+        $ret |= PAGELIST_POST;
+        $r = '+';
+        if ($o[0] == '-') { $r = '-'; $o = substr($o, 1); }
+        $opt['=order'][$o] = $r;
+        if ($o[0] != '$' &&
+            (!isset($PageListSortRead[$o]) || $PageListSortRead[$o]))
+          $ret |= PAGELIST_ITEM;
+      }
+      StopWatch(@"PageListSort pre ret=$ret order={$opt['order']}");
+      return $ret;
+
+    case PAGELIST_ITEM:
+      if (!$page) { $page = ReadPage($pn, READPAGE_CURRENT); $opt['=readc']++; }
+      return 1;
+  }
+
+  ## case PAGELIST_POST
+  StopWatch('PageListSort begin');
+  $order = $opt['=order'];
+  if (@$order['title'])
+    foreach($list as $pn) $PCache[$pn]['=title'] = PageVar($pn, '$Title');
+  if (@$order['group'])
+    foreach($list as $pn) $PCache[$pn]['group'] = PageVar($pn, '$Group');
+  if (@$order['random']) 
+    { NoCache(); foreach($list as $pn) $PCache[$pn]['random'] = rand(); }
+  foreach(preg_grep('/^\\$/', array_keys($order)) as $o) 
+    foreach($list as $pn) 
+      $PCache[$pn][$o] = PageVar($pn, $o);
+  foreach($PageListSortCmp as $o=>$f)
+    if(! is_callable($f)) # DEPRECATED
+      $PageListSortCmp[$o] = create_function( # called by old addon needing update, see pmwiki.org/CustomPagelistSortOrder
+        '$x,$y', "global \$PCache; return {$f};");
+
+  StopWatch('PageListSort sort');
+  if (count($opt['=order'])) {
+    $PCache['=pagelistoptorder'] = $opt['=order'];
+    uasort($list, 'PageListUASort');
+  }
+  StopWatch('PageListSort end');
+}
+function PageListUASort($x,$y) {
+  global $PCache, $PageListSortCmp, $PageListSortCmpFunction;
+  foreach($PCache['=pagelistoptorder'] as $o => $r) {
+    $sign = ($r == '-') ? -1 : 1;
+    if (@$PageListSortCmp[$o] && is_callable($PageListSortCmp[$o]))
+      $c = $PageListSortCmp[$o]($x, $y, $o);
+    else 
+      $c = @$PageListSortCmpFunction($PCache[$x][$o],$PCache[$y][$o]);
+    if ($c) return $sign*$c;
+  }
+  return 0;
+}
+
+function PageListCache(&$list, &$opt, $pn, &$page) {
+  global $PageListCacheDir, $LastModTime;
+
+  if (@!$PageListCacheDir) return 0;
+  if (isset($opt['cache']) && !$opt['cache']) return 0;
+ 
+  $key = $opt['=key'];
+  $cache = "$PageListCacheDir/$key,cache"; 
+  switch ($opt['=phase']) {
+    case PAGELIST_PRE:
+      if (!file_exists($cache) || filemtime($cache) <= $LastModTime)
+        return PAGELIST_POST;
+      StopWatch("PageListCache begin load key=$key");
+      @list($list, $opt['=protectsafe']) = 
+        unserialize(file_get_contents($cache));
+      $opt['=cached'] = 1;
+      if(!is_array($opt['=protectsafe'])) $opt['=protectsafe'] = array();
+      StopWatch("PageListCache end load");
+      return 0;
+
+    case PAGELIST_POST:
+      StopWatch("PageListCache begin save key=$key");
+      $fp = @fopen($cache, "w");
+      if ($fp) {
+        fputs($fp, serialize(array($list, (array)@$opt['=protectsafe'])));
+        fclose($fp);
+      }
+      StopWatch("PageListCache end save");
+      return 0;
+  }
+  return 0;
+}
+
+
+## HandleSearchA performs ?action=search.  It's basically the same
+## as ?action=browse, except it takes its contents from Site.Search.
+function HandleSearchA($pagename, $level = 'read') {
+  global $PageSearchForm, $FmtV, $HandleSearchFmt, 
+    $PageStartFmt, $PageEndFmt;
+  SDV($HandleSearchFmt,array(&$PageStartFmt, '$PageText', &$PageEndFmt));
+  SDV($PageSearchForm, '$[{$SiteGroup}/Search]');
+  $form = RetrieveAuthPage($pagename, $level, true, READPAGE_CURRENT);
+  if (!$form) Abort("?unable to read $pagename");
+  PCache($pagename, $form);
+  $text = preg_replace('/\\[([=@])(.*?)\\1\\]/s', ' ', @$form['text']);
+  if (!preg_match('/\\(:searchresults(\\s.*?)?:\\)/', $text))
+    foreach((array)$PageSearchForm as $formfmt) {
+      $form = ReadPage(FmtPageName($formfmt, $pagename), READPAGE_CURRENT);
+      if (@$form['text']) break;
+    }
+  $text = @$form['text'];
+  if (!$text) $text = '(:searchresults:)';
+  $FmtV['$PageText'] = MarkupToHTML($pagename,$text);
+  PrintFmt($pagename, $HandleSearchFmt);
+}
+
+
+########################################################################
+## The functions below provide different formatting options for
+## the output list, controlled by the fmt= parameter and the
+## $FPLFormatOpt hash.
+########################################################################
+
+## This helper function handles the count= parameter for extracting
+## a range of pagelist in the list.
+function CalcRange($range, $n) {
+  if ($n < 1) return array(0, 0);
+  if (strpos($range, '..') === false) {
+    $range = intval($range);
+    if ($range > 0) return array(1, min($range, $n));
+    if ($range < 0) return array(max($n + $range + 1, 1), $n);
+    return array(1, $n);
+  }
+  list($r0, $r1) = explode('..', $range);
+  $r0 = intval($r0); $r1 = intval($r1);
+  if ($r0 < 0) $r0 += $n + 1;
+  if ($r1 < 0) $r1 += $n + 1;
+  else if ($r1 == 0) $r1 = $n;
+  if ($r0 < 1 && $r1 < 1) return array($n+1, $n+1);
+  return array(max($r0, 1), max($r1, 1));
+}
+
+
+##  FPLCountA handles fmt=count
+function FPLCountA($pagename, &$matches, $opt) {
+  $matches = array_values(MakePageList($pagename, $opt, 0));
+  return count($matches);
+}
+
+SDVA($FPLTemplateFunctions, array(
+  'FPLTemplateLoad' => 100,
+  'FPLTemplateDefaults' => 200,
+  'FPLTemplatePageList' => 300,
+  'FPLTemplateSliceList' => 400,
+  'FPLTemplateFormat' => 500
+  ));
+
+function FPLTemplate($pagename, &$matches, $opt) {
+  global $FPLTemplateFunctions;
+  StopWatch("FPLTemplate: Chain begin");
+  asort($FPLTemplateFunctions, SORT_NUMERIC);
+  $fnlist = $FPLTemplateFunctions;
+  $output = '';
+  foreach($FPLTemplateFunctions as $fn=>$i) {
+    if ($i<0) continue;
+    StopWatch("FPLTemplate: $fn");
+    $fn($pagename, $matches, $opt, $tparts, $output);
+  }
+  StopWatch("FPLTemplate: Chain end");
+  return $output;
+}
+
+## Loads a template section
+function FPLTemplateLoad($pagename, $matches, $opt, &$tparts){
+  global $Cursor, $FPLTemplatePageFmt, $RASPageName, $PageListArgPattern, $IncludedPages;
+  SDV($FPLTemplatePageFmt, array('{$FullName}',
+    '{$SiteGroup}.LocalTemplates', '{$SiteGroup}.PageListTemplates'));
+
+  $template = @$opt['template'];
+  if (!$template) $template = @$opt['fmt'];
+  $ttext = RetrieveAuthSection($pagename, $template, $FPLTemplatePageFmt);
+  $ttext = PVSE(Qualify($RASPageName, $ttext));
+  if ($ttext) @$IncludedPages[$RASPageName]++;
+
+  
+  ##  save any escapes
+  $ttext = MarkupEscape($ttext);
+  ##  remove any anchor markups to avoid duplications
+  $ttext = preg_replace('/\\[\\[#[A-Za-z][-.:\\w]*\\]\\]/', '', $ttext);
+
+  ##  extract portions of template
+  $tparts = preg_split('/\\(:(template)\\s+([-!]?)\\s*(\\w+)\\s*(.*?):\\)/i',
+    $ttext, -1, PREG_SPLIT_DELIM_CAPTURE);
+}
+
+## Merge parameters from (:template default :) with those in the (:pagelist:)
+function FPLTemplateDefaults($pagename, $matches, &$opt, &$tparts){
+  global $PageListArgPattern;
+  $i = 0;
+  while ($i < count($tparts)) {
+    if ($tparts[$i] != 'template') { $i++; continue; }
+    if ($tparts[$i+2] != 'defaults' && $tparts[$i+2] != 'default') { $i+=5; continue; }
+    $pvars = $GLOBALS['MarkupTable']['{$var}']; # expand {$PVars}
+    $ttext = preg_replace_callback($pvars['pat'], $pvars['rep'], $tparts[$i+3]);
+    $opt = array_merge(ParseArgs($ttext, $PageListArgPattern), $opt);
+    array_splice($tparts, $i, 4);
+  }
+  SDVA($opt, array('class' => 'fpltemplate', 'wrap' => 'div'));
+}
+
+##  get the list of pages
+function FPLTemplatePageList($pagename, &$matches, &$opt){
+  $matches = array_unique(array_merge((array)$matches, MakePageList($pagename, $opt, 0)));
+  ## count matches before any slicing and save value as template var {$$PageListCount}
+  $opt['PageListCount'] = count($matches);
+}
+
+## extract page subset according to 'count=' parameter
+function FPLTemplateSliceList($pagename, &$matches, $opt){
+  if (@$opt['count']) {
+    list($r0, $r1) = CalcRange($opt['count'], count($matches));
+    if ($r1 < $r0) 
+      $matches = array_reverse(array_slice($matches, $r1-1, $r0-$r1+1));
+    else 
+      $matches = array_slice($matches, $r0-1, $r1-$r0+1);
+  }
+}
+
+
+function FPLTemplateFormat($pagename, $matches, $opt, $tparts, &$output){
+  global $Cursor, $FPLTemplateMarkupFunction, $PCache;
+  SDV($FPLTemplateMarkupFunction, 'MarkupToHTML');
+  $savecursor = $Cursor;
+  $pagecount = $groupcount = $grouppagecount = $traildepth = $eachcount = 0;
+  $pseudovars = array('{$$PageCount}' => &$pagecount, 
+                      '{$$EachCount}' => &$eachcount, 
+                      '{$$GroupCount}' => &$groupcount, 
+                      '{$$GroupPageCount}' => &$grouppagecount,
+                      '{$$PageTrailDepth}' => &$traildepth);
+
+  foreach(preg_grep('/^[\\w$]/', array_keys($opt)) as $k) 
+    if (!is_array($opt[$k]))
+      $pseudovars["{\$\$$k}"] = PHSC($opt[$k], ENT_NOQUOTES);
+
+  $vk = array_keys($pseudovars);
+  $vv = array_values($pseudovars);
+
+  $lgroup = $lcontrol = ''; $out = '';
+  if (count($matches)==0) {
+    $t = 0;
+    while($t < count($tparts)) {
+      if ($tparts[$t]=='template' && $tparts[$t+2]=='none') {
+         $out .= MarkupRestore(FPLExpandItemVars($tparts[$t+4], $matches, 0, $pseudovars));
+         $t+=4;
+      }
+      $t++;
+    }
+  } # else:
+  foreach($matches as $i => $pn) {
+    $traildepth = intval(@$PCache[$pn]['depth']);
+    $group = PageVar($pn, '$Group');
+    if ($group != $lgroup) { $groupcount++; $grouppagecount = 0; $lgroup = $group; }
+    $grouppagecount++; $pagecount++; $eachcount++;
+
+    $t = 0;
+    while ($t < count($tparts)) {
+      if ($tparts[$t] != 'template') { $item = $tparts[$t]; $t++; }
+      else {
+        list($neg, $when, $control, $item) = array_slice($tparts, $t+1, 4); $t+=5;
+        if ($when=='none') continue;
+        if (!$control) {
+          if ($when == 'first' && ($neg xor ($i != 0))) continue;
+          if ($when == 'last' && ($neg xor ($i != count($matches) - 1))) continue;
+        } else {
+          $currcontrol = FPLExpandItemVars($control, $matches, $i, $pseudovars);
+          if($currcontrol != $lcontrol)  { $eachcount=1; $lcontrol = $currcontrol; }
+          if ($when == 'first' || !isset($last[$t])) {
+            $curr = FPLExpandItemVars($control, $matches, $i, $pseudovars);
+            
+            if ($when == 'first' && ($neg xor (($i != 0) && ($last[$t] == $curr))))
+              { $last[$t] = $curr; continue; }
+            $last[$t] = $curr;
+          }
+          if ($when == 'last') {
+            $next = FPLExpandItemVars($control, $matches, $i+1, $pseudovars);
+            if ($neg xor ($next == $last[$t] && $i != count($matches) - 1)) continue;
+            $last[$t] = $next;
+          }
+        }
+      }
+      $item = FPLExpandItemVars($item, $matches, $i, $pseudovars);
+      $out .= MarkupRestore($item);
+    }
+  }
+
+  $class = preg_replace('/[^-a-zA-Z0-9\\x80-\\xff]/', ' ', @$opt['class']);
+  if ($class) $class = " class='$class'";
+  $wrap = @$opt['wrap'];
+  if ($wrap != 'inline') {
+    $out = $FPLTemplateMarkupFunction($pagename, $out, array('escape' => 0, 'redirect'=>1));
+    if ($wrap != 'none') $out = "<div$class>$out</div>";
+  }
+  $Cursor = $savecursor;
+  $output .= $out;
+}
+## This function moves repeated code blocks out of FPLTemplateFormat()
+function FPLExpandItemVars($item, $matches, $idx, $psvars) {
+  global $Cursor, $EnableUndefinedTemplateVars;
+  $Cursor['<'] = $Cursor['&lt;'] = (string)@$matches[$idx-1];
+  $Cursor['='] = $pn = (string)@$matches[$idx];
+  $Cursor['>'] = $Cursor['&gt;'] = (string)@$matches[$idx+1];
+  $item = str_replace(array_keys($psvars), array_values($psvars), $item);
+  $cb = new cb_pl_expandvars($pn);
+  $item = preg_replace_callback('/\\{(=|&[lg]t;)(\\$:?\\w[-\\w]*)\\}/',
+              array($cb, 'pl_expandvars'), $item);
+  if (! IsEnabled($EnableUndefinedTemplateVars, 0))
+    $item = preg_replace("/\\{\\$\\$\\w+\\}/", '', $item);
+  return $item;
+}
+
+########################################################################
+## The functions below optimize searches by maintaining a file of
+## words and link cross references (the "page index").
+########################################################################
+
+## PageIndexTerms($terms) takes an array of strings and returns a
+## normalized list of associated search terms.  This reduces the
+## size of the index and speeds up searches.
+function PageIndexTerms($terms) {
+  global $PageIndexFoldFunction;
+  $w = array();
+  foreach((array)$terms as $t) {
+    $w = array_merge($w, preg_split('/[^\\w\\x80-\\xff]+/', 
+           $PageIndexFoldFunction($t), -1, PREG_SPLIT_NO_EMPTY));
+  }
+ return $w;
+}
+
+## The PageIndexUpdate($pagelist) function updates the page index
+## file with terms and target links for the pages in $pagelist.
+## The optional $dir parameter allows this function to be called
+## via register_shutdown_function (which sometimes changes directories
+## on us).
+function PageIndexUpdate($pagelist = NULL, $dir = '') {
+  global $EnableReadOnly, $PageIndexUpdateList, $PageIndexFile, 
+    $PageIndexTermsFunction, $PageIndexTime, $Now;
+  if (IsEnabled($EnableReadOnly, 0)) return;
+  $abort = ignore_user_abort(true);
+  if ($dir) { flush(); chdir($dir); }
+  if (is_null($pagelist)) 
+    { $pagelist = (array)$PageIndexUpdateList; $PageIndexUpdateList = array(); }
+  if (!$pagelist || !$PageIndexFile) return;
+  SDV($PageIndexTime, 10);
+  $c = count($pagelist); $updatecount = 0;
+  StopWatch("PageIndexUpdate begin ($c pages to update)");
+  $pagelist = (array)$pagelist;
+  $timeout = time() + $PageIndexTime;
+  $cmpfn = 'PageIndexUpdateSort';
+  Lock(2);
+  $ofp = fopen("$PageIndexFile,new", 'w');
+  foreach($pagelist as $pn) {
+    if (@$updated[$pn]) continue;
+    @$updated[$pn]++;
+    if (time() > $timeout) continue;
+    $page = ReadPage($pn, READPAGE_CURRENT);
+    if ($page) {
+      $targets = str_replace(',', ' ', strval(@$page['targets']));
+      $terms = $PageIndexTermsFunction(array(@$page['text'], $targets, $pn));
+      usort($terms, $cmpfn);
+      $x = '';
+      foreach($terms as $t) { if (strpos($x, $t) === false) $x .= " $t"; }
+      fputs($ofp, "$pn:$Now: $targets :$x\n");
+    }
+    $updatecount++;
+  }
+  $ifp = @fopen($PageIndexFile, 'r');
+  if ($ifp) {
+    while (!feof($ifp)) {
+      $line = fgets($ifp, 4096);
+      while (substr($line, -1, 1) != "\n" && !feof($ifp)) 
+        $line .= fgets($ifp, 4096);
+      $i = strpos($line, ':');
+      if ($i === false) continue;
+      $n = substr($line, 0, $i);
+      if (@$updated[$n]) continue;
+      fputs($ofp, $line);
+    }
+    fclose($ifp);
+  }
+  fclose($ofp);
+  if (file_exists($PageIndexFile)) unlink($PageIndexFile); 
+  rename("$PageIndexFile,new", $PageIndexFile);
+  fixperms($PageIndexFile);
+  StopWatch("PageIndexUpdate end ($updatecount updated)");
+  ignore_user_abort($abort);
+}
+function PageIndexUpdateSort($a,$b) {return strlen($b)-strlen($a);}
+
+## PageIndexQueueUpdate specifies pages to be updated in
+## the index upon shutdown (via register_shutdown function).
+function PageIndexQueueUpdate($pagelist) {
+  global $PageIndexUpdateList;
+  if (!@$PageIndexUpdateList) 
+    register_shutdown_function('PageIndexUpdate', NULL, getcwd());
+  $PageIndexUpdateList = array_merge((array)@$PageIndexUpdateList,
+                                     (array)$pagelist);
+  $c1 = @count((array)$pagelist); $c2 = count($PageIndexUpdateList);
+  StopWatch("PageIndexQueueUpdate: queued $c1 pages ($c2 total)");
+}
+
+## PageIndexGrep returns a list of pages that match the strings
+## provided.  Note that some search terms may need to be normalized
+## in order to get the desired results (see PageIndexTerms above).
+## Also note that this just works for the index; if the index is
+## incomplete, then so are the results returned by this list.
+## (MakePageList above already knows how to deal with this.)
+function PageIndexGrep($terms, $invert = false, $links = false) {
+  global $PageIndexFile;
+  if (!$PageIndexFile) return array();
+  StopWatch('PageIndexGrep begin');
+  $pagelist = array();
+  $fp = @fopen($PageIndexFile, 'r');
+  if ($fp) {
+    $terms = (array)$terms;
+    while (!feof($fp)) {
+      $line = fgets($fp, 4096);
+      while (substr($line, -1, 1) != "\n" && !feof($fp))
+        $line .= fgets($fp, 4096);
+      $i = strpos($line, ':');
+      if (!$i) continue;
+      $add = true;
+      foreach($terms as $t) 
+        if (strpos($line, $t) === false) { $add = false; break; }
+      if ($add && $links) {
+        $parts = explode(':', $line);
+        if (! PageListMatchTargets($parts[2], $links)) $add = false;
+      }
+      if ($add xor $invert) $pagelist[] = substr($line, 0, $i);
+    }
+    fclose($fp);
+  }
+  StopWatch('PageIndexGrep end');
+  return $pagelist;
+}
+  
+## PostPageIndex is inserted into $EditFunctions to update
+## the linkindex whenever a page is saved.
+function PostPageIndex($pagename, &$page, &$new) {
+  global $IsPagePosted;
+  if ($IsPagePosted) PageIndexQueueUpdate($pagename);
+}
blob - /dev/null
blob + 42c2aa83644fe8bc61f2cf3105b3c233e506bafb (mode 644)
--- /dev/null
+++ scripts/pagerev.php
@@ -0,0 +1,288 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script defines routines for displaying page revisions.  It
+    is included by default from the stdconfig.php script.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+function LinkSuppress($pagename,$imap,$path,$title,$txt,$fmt=NULL) 
+  { return $txt; }
+
+SDV($DiffShow['minor'],(@$_REQUEST['minor']!='n')?'y':'n');
+SDV($DiffShow['source'],(@$_REQUEST['source']!='n')?'y':'n');
+SDV($DiffMinorFmt, ($DiffShow['minor']=='y') ?
+  "<a href='{\$PageUrl}?action=diff&amp;source=".$DiffShow['source']."&amp;minor=n'>$[Hide minor edits]</a>" :
+  "<a href='{\$PageUrl}?action=diff&amp;source=".$DiffShow['source']."&amp;minor=y'>$[Show minor edits]</a>" );
+SDV($DiffSourceFmt, ($DiffShow['source']=='y') ?
+  "<a href='{\$PageUrl}?action=diff&amp;source=n&amp;minor=".$DiffShow['minor']."'>$[Show changes to output]</a>" :
+  "<a href='{\$PageUrl}?action=diff&amp;source=y&amp;minor=".$DiffShow['minor']."'>$[Show changes to markup]</a>");
+SDV($PageDiffFmt,"<h2 class='wikiaction'>$[{\$FullName} History]</h2>
+  <p>$DiffMinorFmt - $DiffSourceFmt</p>
+  ");
+SDV($DiffStartFmt,"
+      <div class='diffbox \$DiffClass' data-delay='\$DiffDataDelay'><div class='difftime'><a name='diff\$DiffGMT' id='diff\$DiffGMT' href='#diff\$DiffGMT'>\$DiffTime</a>
+        \$[by] <span class='diffauthor' title='\$DiffHost'>\$DiffAuthor</span> - \$DiffChangeSum</div>");
+SDV($DiffDelFmt['a'],"
+        <div class='difftype'>\$[Deleted line \$DiffLines:]</div>
+        <div class='diffdel'>");
+SDV($DiffDelFmt['c'],"
+        <div class='difftype'>\$[Changed line \$DiffLines from:]</div>
+        <div class='diffdel'>");
+SDV($DiffAddFmt['d'],"
+        <div class='difftype'>\$[Added line \$DiffLines:]</div>
+        <div class='diffadd'>");
+SDV($DiffAddFmt['c'],"</div>
+        <div class='difftype'>$[to:]</div>
+        <div class='diffadd'>");
+SDV($DiffEndDelAddFmt,"</div>");
+SDV($DiffEndFmt,"</div>");
+SDV($DiffRestoreFmt,"
+      <div class='diffrestore'><a href='{\$PageUrl}?action=edit&amp;restore=\$DiffId&amp;preview=y'>$[Restore]</a></div>");
+
+SDV($HandleActions['diff'], 'HandleDiff');
+SDV($HandleAuth['diff'], 'read');
+SDV($ActionTitleFmt['diff'], '| $[History]');
+SDV($HTMLStylesFmt['diff'], "
+  .diffbox { width:570px; border-left:1px #999999 solid; margin-top:1.33em; }
+  .diffauthor { font-weight:bold; }
+  .diffchangesum { font-weight:bold; }
+  .difftime { font-family:verdana,sans-serif; font-size:66%; 
+    background-color:#dddddd; }
+  .difftype { clear:both; font-family:verdana,sans-serif; 
+    font-size:66%; font-weight:bold; }
+  .diffadd { border-left:5px #99ff99 solid; padding-left:5px; }
+  .diffdel { border-left:5px #ffff99 solid; padding-left:5px; }
+  .diffrestore { clear:both; font-family:verdana,sans-serif; 
+    font-size:66%; margin:1.5em 0px; }
+  .diffmarkup { font-family:monospace; } 
+  .diffmarkup del { background:#ffff99; text-decoration: none; }
+  .diffmarkup ins { background:#99ff99; text-decoration: none; }
+  .rcplus { cursor:pointer; opacity:.3; font-weight:bold; padding: 0 .3em; }
+  .rcplus:hover {color: white; background: blue; opacity: 1;}
+  .rcreload { opacity:0.2; font-size: .9rem; cursor: pointer; }
+  .rcnew {background-color: #ffa;}");
+
+function PrintDiff($pagename) {
+  global $Now, $DiffHTMLFunction,$DiffShow,$DiffStartFmt,$TimeFmt,
+    $DiffEndFmt,$DiffRestoreFmt,$FmtV, $EnableDiffHidden, $LinkFunctions;
+  $page = ReadPage($pagename);
+  if (!$page) return;
+  krsort($page); reset($page);
+  $lf = $LinkFunctions;
+  $LinkFunctions['http:'] = 'LinkSuppress';
+  $LinkFunctions['https:'] = 'LinkSuppress';
+  SDV($DiffHTMLFunction, 'DiffHTML');
+  $prevstamp = $Now;
+  foreach($page as $k=>$v) {
+    if (!preg_match("/^diff:(\d+):(\d+):?([^:]*)/",$k,$match)) continue;
+    $diffclass = $match[3];
+    if ($diffclass=='hidden' && !@$EnableDiffHidden) continue;
+    if ($diffclass=='minor' && $DiffShow['minor']!='y') continue;
+    $diffgmt = $FmtV['$DiffGMT'] = intval($match[1]);
+    $delaydays = ($prevstamp - $diffgmt) / 86400;
+    $compact = DiffTimeCompact($diffgmt, $prevstamp, 1);
+    $prevstamp = $diffgmt;
+    if ($delaydays < 1) $cname = '';
+    elseif ($delaydays < 7) $cname = 'diffday';
+    elseif ($delaydays < 31) $cname = 'diffweek';
+    elseif ($delaydays < 365) $cname = 'diffmonth';
+    else $cname = 'diffyear';
+    $FmtV['$DiffClass'] = trim("$cname $diffclass");
+    $FmtV['$DiffDataDelay'] = $compact;
+    $FmtV['$DiffTime'] = PSFT($TimeFmt,$diffgmt);
+    $diffauthor = @$page["author:$diffgmt"]; 
+    if (!$diffauthor) @$diffauthor=$page["host:$diffgmt"];
+    if (!$diffauthor) $diffauthor="unknown";
+    $FmtV['$DiffChangeSum'] = PHSC(@$page["csum:$diffgmt"]);
+    $FmtV['$DiffHost'] = @$page["host:$diffgmt"];
+    $FmtV['$DiffUserAgent'] = PHSC(@$page["agent:$diffgmt"], ENT_QUOTES);
+    $FmtV['$DiffAuthor'] = $diffauthor;
+    $FmtV['$DiffId'] = $k;
+    $html = $DiffHTMLFunction($pagename, $v);
+    if ($html===false) continue;
+    echo FmtPageName($DiffStartFmt,$pagename);
+    echo $html;
+    echo FmtPageName($DiffEndFmt,$pagename);
+    echo FmtPageName($DiffRestoreFmt,$pagename);
+  }
+  $LinkFunctions = $lf;
+}
+
+# This function converts a single diff entry from the wikipage file
+# into HTML, ready for display.
+function DiffHTML($pagename, $diff) {
+  if (@$_REQUEST['nodiff']>'') return '';
+  global $FmtV, $DiffShow, $DiffAddFmt, $DiffDelFmt, $DiffEndDelAddFmt,
+  $DiffRenderSourceFunction;
+  SDV($DiffRenderSourceFunction, 'DiffRenderSource');
+  $difflines = explode("\n",$diff."\n");
+  $in=array(); $out=array(); $dtype=''; $html = '';
+  foreach($difflines as $d) {
+    if ($d>'') {
+      if ($d[0]=='-' || $d[0]=='\\') continue;
+      if ($d[0]=='<') { $out[]=substr($d,2); continue; }
+      if ($d[0]=='>') { $in[]=substr($d,2); continue; }
+    }
+    if (preg_match("/^(\\d+)(,(\\d+))?([adc])(\\d+)(,(\\d+))?/",
+        $dtype,$match)) {
+      if (@$match[7]>'') {
+        $lines='lines';
+        $count=$match[1].'-'.($match[1]+$match[7]-$match[5]);
+      } elseif ($match[3]>'') {
+        $lines='lines'; $count=$match[1].'-'.$match[3];
+      } else { $lines='line'; $count=$match[1]; }
+      if ($match[4]=='a' || $match[4]=='c') {
+        $txt = str_replace('line',$lines,$DiffDelFmt[$match[4]]);
+        $FmtV['$DiffLines'] = $count;
+        $html .= FmtPageName($txt,$pagename);
+        if ($DiffShow['source']=='y') 
+          $html .= "<div class='diffmarkup'>"
+            .$DiffRenderSourceFunction($in, $out, 0)
+            ."</div>";
+        else $html .= MarkupToHTML($pagename,
+          preg_replace_callback('/\\(:.*?:\\)/',"cb_diffhtml", join("\n",$in)));
+      }
+      if ($match[4]=='d' || $match[4]=='c') {
+        $txt = str_replace('line',$lines,$DiffAddFmt[$match[4]]);
+        $FmtV['$DiffLines'] = $count;
+        $html .= FmtPageName($txt,$pagename);
+        if ($DiffShow['source']=='y') 
+          $html .= "<div class='diffmarkup'>"
+            .$DiffRenderSourceFunction($in, $out, 1)
+            ."</div>";
+        else $html .= MarkupToHTML($pagename,
+          preg_replace_callback('/\\(:.*?:\\)/',"cb_diffhtml",join("\n",$out)));
+      }
+      $html .= FmtPageName($DiffEndDelAddFmt,$pagename);
+    }
+    $in=array(); $out=array(); $dtype=$d;
+  }
+  return $html;
+}
+function cb_diffhtml($m) { return Keep(PHSC($m[0])); }
+
+function HandleDiff($pagename, $auth='read') {
+  if (@$_GET['fmt'] == 'rclist') return HandleDiffList($pagename, $auth);
+  global $HandleDiffFmt, $PageStartFmt, $PageDiffFmt, $PageEndFmt;
+  $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
+  if (!$page) { Abort("?cannot diff $pagename"); }
+  PCache($pagename, $page);
+  SDV($HandleDiffFmt,array(&$PageStartFmt,
+    &$PageDiffFmt,"<div id='wikidiff'>", 'function:PrintDiff', '</div>',
+    &$PageEndFmt));
+  PrintFmt($pagename,$HandleDiffFmt);
+}
+
+function HandleDiffList($pagename, $auth='read') {
+  global $EnableDiffHidden, $Now, $Charset, $EnableLocalTimes;
+  $days = floor($EnableLocalTimes/10);
+  if(!$days) $days = 3;
+  $since = $Now - $days*24*3600;
+  header("Content-Type: text/plain; charset=$Charset");
+  $page = RetrieveAuthPage($pagename, $auth, false);
+  if (!$page) {
+    print("$Now:[No permissions to diff page]");
+    exit;
+  }
+  krsort($page); reset($page);
+  $out = "";
+  $hide = IsEnabled($EnableDiffHidden, 0)? '' : '(?!hidden)';
+  $list = preg_grep("/^diff:(\\d+):\\d+:$hide\\w*$/", array_keys($page));
+  foreach($list as $v) {
+    list($key, $stamp) = explode(':', $v);
+    if ($stamp == $page['time']) continue;
+    $author = @$page["author:$stamp"] ? $page["author:$stamp"] : '?';
+    $csum = strval(@$page["csum:$stamp"]);
+    $out .= "$stamp:".PHSC("$author: $csum")."\n";
+    if ($stamp<$since) break; # at least one after the 72 hours
+  }
+  print(trim($out));
+  exit;
+}
+
+## Functions for simple word-diff (written by Petko Yotov)
+function DiffRenderSource($in, $out, $which) {
+  global $WordDiffFunction, $EnableDiffInline, $DiffPrepareInlineFunction;
+  SDV($DiffPrepareInlineFunction, 'DiffPrepareInline');
+  if (!IsEnabled($EnableDiffInline, 1)) {
+    $a = $which? $out : $in;
+    return str_replace("\n","<br />",PHSC(join("\n",$a)));  
+  }
+  $countdifflines = abs(count($in)-count($out));
+  $lines = $cnt = $x2 = $y2 = array();
+  foreach($in as $line) {
+    $tmp = $countdifflines>20 ? array($line) : $DiffPrepareInlineFunction($line);
+    if (!$which) $cnt[] = array(count($x2), count($tmp));
+    $x2 = array_merge($x2, $tmp);
+  }
+  foreach($out as $line) {
+    $tmp = $countdifflines>20 ? array($line) : $DiffPrepareInlineFunction($line);
+    if ($which) $cnt[] = array(count($y2), count($tmp));
+    $y2 = array_merge($y2, $tmp);
+  }
+  $z = $WordDiffFunction(implode("\n", $x2), implode("\n", $y2));
+
+  $z2 = array_map('PHSC', ($which? $y2 : $x2));
+  array_unshift($z2, '');
+  foreach (explode("\n", $z) as $zz) {
+    if (preg_match('/^(\\d+)(,(\\d+))?([adc])(\\d+)(,(\\d+))?/',$zz,$m)) {
+      $a1 = $a2 = $m[1];
+      if (@$m[3]) $a2=$m[3];
+      $b1 = $b2 = $m[5];
+      if (@$m[7]) $b2=$m[7];
+
+      if (!$which && ($m[4]=='c'||$m[4]=='d')) {
+        $z2[$a1] = '<del>'. $z2[$a1];
+        $z2[$a2] .= '</del>';
+      }
+      if ($which && ($m[4]=='c'||$m[4]=='a')) {
+        $z2[$b1] = '<ins>'.$z2[$b1];
+        $z2[$b2] .= '</ins>';
+      }
+    }
+  }
+  $line = array_shift($z2);
+  $z2[0] = $line.$z2[0];
+  foreach ($cnt as $a) $lines[] = implode('', array_slice($z2, $a[0], $a[1]));
+  $ret = implode("\n", $lines);
+  $ret = str_replace(array('</del> <del>', '</ins> <ins>'), ' ', $ret);
+  $ret = preg_replace('/(<(ins|del)>|^) /', '$1&nbsp;', $ret);
+  return str_replace(array("  ", "\n ", "\n"),array("&nbsp; ", "<br />&nbsp;", "<br />"),$ret);
+}
+## Split a line into pieces before passing it through `diff`
+function DiffPrepareInline($x) {
+  global $DiffSplitInlineDelims;
+  SDV($DiffSplitInlineDelims, "-@!?#$%^&*()=+[]{}.'\"\\:|,<>_/;~");
+  return preg_split("/([".preg_quote($DiffSplitInlineDelims, '/')."\\s])/", 
+    $x, -1, PREG_SPLIT_DELIM_CAPTURE);
+}
+
+SDV($WordDiffFunction, 'PHPDiff'); # faster than sysdiff for many calls
+if (IsEnabled($EnableDiffInline, 1) && $DiffShow['source'] == 'y' 
+  && $WordDiffFunction == 'PHPDiff' && !function_exists('PHPDiff'))
+  include_once("$FarmD/scripts/phpdiff.php");
+
+## Show diff before the preview Cookbook:PreviewChanges
+function PreviewDiff($pagename,&$page,&$new) {
+  global $FmtV, $DiffFunction, $DiffHTMLFunction, $EnableDiffInline, $DiffShow;
+  if (@$_REQUEST['preview']>'' && @$page['text']>'' && $page['text']!=$new['text']) {
+    $d = IsEnabled($DiffShow['source'], 'y');
+    $e = IsEnabled($EnableDiffInline, 1);
+    $DiffShow['source'] = 'y';
+    $EnableDiffInline = 1;
+    SDV($DiffHTMLFunction, 'DiffHTML');
+    $diff = $DiffFunction($new['text'], $page['text']);# reverse the diff
+    $FmtV['$PreviewText'] = $DiffHTMLFunction($pagename, $diff).'<hr/>'.@$FmtV['$PreviewText'];
+    $DiffShow['source'] = $d;
+    $EnableDiffInline = $e;
+  }
+}
+if (IsEnabled($EnablePreviewChanges, 0) && @$_REQUEST['preview']>'') {
+  $EditFunctions[] = 'PreviewDiff';
+}
blob - /dev/null
blob + dab53bf5af536edfc07cfe952be350d4462c5553 (mode 644)
--- /dev/null
+++ scripts/pgcust.php
@@ -0,0 +1,45 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2002-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script enables per-page and per-group customizations in the
+    local/ subdirectory (or whatever directory is given by $LocalDir).  
+    For example, to create customizations for the 'Demo' group, place 
+    them in a file called local/Demo.php.  To customize a single page, 
+    use the full page name (e.g., local/Demo.MyPage.php).  
+    Per-page/per-group customizations can be handled at any time by adding
+	include_once("scripts/pgcust.php");
+    to config.php.  It is automatically included by scripts/stdconfig.php
+    unless $EnablePGCust is set to zero in config.php.
+
+    A page's customization is loaded first, followed by any group
+    customization.  If no page or group customizations are loaded,
+    then 'local/default.php' is loaded.  
+
+    A per-page configuration file can prevent its group's config from 
+    loading by setting $EnablePGCust=0;.  A per-page configuration file 
+    can force group customizations to be loaded first by using include_once
+    on the group customization file.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+$f = 1;
+for($p=$pagename;$p;$p=preg_replace('/\\.*[^.]*$/','',$p)) {
+  if (!IsEnabled($EnablePGCust,1)) return;
+  if (file_exists("$LocalDir/$p.php")) 
+    { include_once("$LocalDir/$p.php"); $f=0; }
+}
+if (IsEnabled($EnableBaseNameConfig, 0)) {
+  $p = MakeBaseName($pagename);
+  if (file_exists("$LocalDir/$p.php")) 
+    { include_once("$LocalDir/$p.php"); $f=0; }
+}
+
+if ($f && IsEnabled($EnablePGCust,1) && file_exists("$LocalDir/default.php"))
+  include_once("$LocalDir/default.php");
+
+
blob - /dev/null
blob + 0b486cb217b0f26f13d9410b97d5345234008ce8 (mode 644)
--- /dev/null
+++ scripts/phpdiff.php
@@ -0,0 +1,118 @@
+<?php  if (!defined('PmWiki')) exit();
+/*  
+    Copyright 2003,2004 Nils Knappmeier (nk@knappi.org)
+    Copyright 2004-2021 Patrick R. Michaud (pmichaud@pobox.com)
+
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file implements a diff function in native PHP.  It is based
+    upon the PHPDiffEngine code written by Nils Knappmeier, who in turn
+    had used Daniel Unterberger's diff 
+    (http://www.holomind.de/phpnet/diff.php) as the basis for his code.
+
+    Pm's revision of Nils' code simply attempts to streamline it 
+    for speed (eliminate function calls and unnecessary string ops)
+    and place everything into a single file.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+## PHPDiff returns the differences between $old and $new, formatted
+## in the standard diff(1) output format.
+function PHPDiff($old, $new) 
+{
+   StopWatch("PHPDiff: begin");
+   # split the source text into arrays of lines
+   $t1 = explode("\n", $old);
+   $x = array_pop($t1); 
+   if ($x > '') $t1[] = "$x\n\\ No newline at end of file";
+   $t2 = explode("\n", strval($new));
+   $x = array_pop($t2); 
+   if ($x > '') $t2[] = "$x\n\\ No newline at end of file";
+
+   $t1_start = 0; $t1_end = count($t1);
+   $t2_start = 0; $t2_end = count($t2);
+
+   # stop with a common ending
+   while ($t1_start < $t1_end && $t2_start < $t2_end 
+          && $t1[$t1_end-1] == $t2[$t2_end-1]) { $t1_end--; $t2_end--; }
+
+   # skip over any common beginning
+   while ($t1_start < $t1_end && $t2_start < $t2_end 
+          && $t1[$t1_start] == $t2[$t2_start]) { $t1_start++; $t2_start++; }
+
+   # build a reverse-index array using the line as key and line number as value
+   # don't store blank lines, so they won't be targets of the shortest distance
+   # search
+   for($i = $t1_start; $i < $t1_end; $i++) if ($t1[$i]>'') $r1[$t1[$i]][] = $i;
+   for($i = $t2_start; $i < $t2_end; $i++) if ($t2[$i]>'') $r2[$t2[$i]][] = $i;
+
+   $a1 = $t1_start; $a2 = $t2_start;   # start at beginning of each list
+   $actions = array();
+
+   # walk this loop until we reach the end of one of the lists
+   while ($a1 < $t1_end && $a2 < $t2_end) {
+     # if we have a common element, save it and go to the next
+     if ($t1[$a1] == $t2[$a2]) { $actions[] = 4; $a1++; $a2++; continue; } 
+
+     # otherwise, find the shortest move (Manhattan-distance) from the
+     # current location
+     $best1 = $t1_end; $best2 = $t2_end;
+     $s1 = $a1; $s2 = $a2;
+     while(($s1 + $s2 - $a1 - $a2) < ($best1 + $best2 - $a1 - $a2)) {
+       $d = -1;
+       foreach((array)@$r1[$t2[$s2]] as $n) 
+         if ($n >= $s1) { $d = $n; break; }
+       if ($d >= $s1 && ($d + $s2 - $a1 - $a2) < ($best1 + $best2 - $a1 - $a2))
+         { $best1 = $d; $best2 = $s2; }
+       $d = -1;
+       foreach((array)@$r2[$t1[$s1]] as $n) 
+         if ($n >= $s2) { $d = $n; break; }
+       if ($d >= $s2 && ($s1 + $d - $a1 - $a2) < ($best1 + $best2 - $a1 - $a2))
+         { $best1 = $s1; $best2 = $d; }
+       $s1++; $s2++;
+     }
+     while ($a1 < $best1) { $actions[] = 1; $a1++; }  # deleted elements
+     while ($a2 < $best2) { $actions[] = 2; $a2++; }  # added elements
+  }
+
+  # we've reached the end of one list, now walk to the end of the other
+  while($a1 < $t1_end) { $actions[] = 1; $a1++; }  # deleted elements
+  while($a2 < $t2_end) { $actions[] = 2; $a2++; }  # added elements
+
+  # and this marks our ending point
+  $actions[] = 8;
+
+  # now, let's follow the path we just took and report the added/deleted
+  # elements into $out.
+  $op = 0;
+  $x0 = $x1 = $t1_start; $y0 = $y1 = $t2_start;
+  $out = array();
+  foreach($actions as $act) {
+    if ($act == 1) { $op |= $act; $x1++; continue; }
+    if ($act == 2) { $op |= $act; $y1++; continue; }
+    if ($op > 0) {
+      $xstr = ($x1 == ($x0+1)) ? $x1 : ($x0+1) . ",$x1";
+      $ystr = ($y1 == ($y0+1)) ? $y1 : ($y0+1) . ",$y1";
+      if ($op == 1) $out[] = "{$xstr}d{$y1}";
+      elseif ($op == 3) $out[] = "{$xstr}c{$ystr}";
+      while ($x0 < $x1) { $out[] = '< ' . $t1[$x0]; $x0++; }   # deleted elems
+      if ($op == 2) $out[] = "{$x1}a{$ystr}";
+      elseif ($op == 3) $out[] = '---';
+      while ($y0 < $y1) { $out[] = '> '.$t2[$y0]; $y0++; }   # added elems
+    }
+    $x1++; $x0 = $x1;
+    $y1++; $y0 = $y1;
+    $op = 0;
+  }
+  $out[] = '';
+  StopWatch("PHPDiff: end");
+  return join("\n",$out);
+}
+
+if (!@$DiffFunction || !function_exists($DiffFunction))
+  $DiffFunction = 'PHPDiff';
+
blob - /dev/null
blob + 375d841e649a3ee348e9d6eee342266815977657 (mode 644)
--- /dev/null
+++ scripts/prefs.php
@@ -0,0 +1,59 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2005-2019 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script handles per-browser preferences.  Preference settings
+    are stored in wiki pages as XLPage translations, and a cookie on
+    the browser tells PmWiki where to find the browser's preferred
+    settings.
+
+    This script looks for a ?setprefs= request parameter (e.g., in
+    a url); when it finds one it sets a 'setprefs' cookie on the browser 
+    identifying the page to be used to load browser preferences,
+    and loads the associated preferences.
+
+    If there is no ?setprefs= request, then the script uses the
+    'setprefs' cookie from the browser to load the preference settings.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($PrefsCookie, $CookiePrefix.'setprefs');
+SDV($PrefsCookieExpires, $Now + 60 * 60 * 24 * 365);
+$LogoutCookies[] = $PrefsCookie;
+
+$sp = '';
+if (@$_COOKIE[$PrefsCookie]) $sp = $_COOKIE[$PrefsCookie];
+if (isset($_GET['setprefs'])) {
+  $sp = MakePageName($pagename, $_GET['setprefs']);
+  pmsetcookie($PrefsCookie, $sp, $PrefsCookieExpires, '/');
+}
+if ($sp && PageExists($sp)) XLPage('prefs', $sp, true);
+
+if(@is_array($XL['prefs'])) {
+  foreach($XL['prefs'] as $k=>$v) {
+    if(! preg_match('/^(e_rows|e_cols|TimeFmt|Locale|Site\\.EditForm)$|^ak_/', $k))
+      unset($XL['prefs'][$k]);
+  }
+}
+
+XLSDV('en', array(
+  'ak_view' => '',
+  'ak_edit' => 'e',
+  'ak_history' => 'h',
+  'ak_attach'  => '',
+  'ak_backlinks' => '',
+  'ak_logout' => '',
+  'ak_print' => '',
+  'ak_recentchanges' => 'c',
+  'ak_save' => 's',
+  'ak_saveedit' => 'u',
+  'ak_savedraft' => 'd',
+  'ak_preview' => 'p',
+  'ak_em' => '',
+  'ak_strong' => '',
+  ));
+
blob - /dev/null
blob + bf78bc6962ee0b424455daf7be6b4743963802b8 (mode 644)
--- /dev/null
+++ scripts/refcount.php
@@ -0,0 +1,123 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file does simple reference counting on pages in a PmWiki site.
+    Simply activate this script using
+        include_once('scripts/refcount.php');
+    in the config.php file and then use ?action=refcount to bring up
+    the reference count form.  The output is a table where each row
+    of the table contains a page name or link reference, the number
+    of (non-RecentChanges) pages that contain links to the page,
+    the number of RecentChanges pages with links to the page, and the
+    total number of references in all pages.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($PageRefCountFmt,"<h2 class='wikiaction'>Reference Count Results</h2>");
+SDV($RefCountTimeFmt," <small>%Y-%b-%d %H:%M</small>");
+SDV($HandleActions['refcount'], 'HandleRefCount');
+
+function PrintRefCount($pagename) {
+  global $GroupPattern,$NamePattern,$PageRefCountFmt,$RefCountTimeFmt, $ScriptUrl;
+  $pagelist = ListPages();
+  $grouplist = array();
+  foreach($pagelist as $pname) {
+    if (!preg_match("/^($GroupPattern)[\\/.]($NamePattern)$/",$pname,$m))
+      continue;
+    $grouplist[$m[1]]=$m[1];
+  }
+  asort($grouplist);
+  $grouplist = array_merge(array('all' => 'all groups'),$grouplist);
+
+  $wlist = array('all','missing','existing','orphaned');
+  $tlist = isset($_REQUEST['tlist']) ? $_REQUEST['tlist'] : array('all');
+  $flist = isset($_REQUEST['flist']) ? $_REQUEST['flist'] : array('all');
+  $whichrefs = @$_REQUEST['whichrefs'];
+  $showrefs = (@$_REQUEST['showrefs']=='checked')? "checked='checked'" : '';
+  $submit = @$_REQUEST['submit'];
+
+  echo FmtPageName($PageRefCountFmt,$pagename);
+  echo FmtPageName("<form method='post' action='{\$PageUrl}'><input type='hidden' name='action' value='refcount'/>
+    <table cellspacing='10'><tr><td valign='top'>Show
+    <br/><select name='whichrefs'>",$pagename);
+  foreach($wlist as $w)
+    echo "<option ",($whichrefs==$w) ? 'selected="selected"' : ''," value='$w'>$w</option>\n";
+  echo "</select></td><td valign='top'> page names in group<br/>
+    <select name='tlist[]' multiple='multiple' size='4'>";
+  foreach($grouplist as $g=>$t)
+    echo "<option ",in_array($g,$tlist) ? 'selected="selected"' : ''," value='$g'>$t</option>\n";
+  echo "</select></td><td valign='top'> referenced from pages in<br/>
+    <select name='flist[]' multiple='multiple' size='4'>";
+  foreach($grouplist as $g=>$t)
+    echo "<option ",in_array($g,$flist) ? 'selected="selected"' : ''," value='$g'>$t</option>\n";
+  echo "</select></td></tr></table>
+    <p><input type='checkbox' name='showrefs' id='chk_showrefs' value='checked' $showrefs/>
+      <label for='chk_showrefs'>Display referencing pages</label>
+    </p><p><input type='submit' name='submit' value='Search'/></p></form><hr/>";
+
+  if ($submit) {
+    foreach($pagelist as $pname) {
+      $ref = array();
+      $page = ReadPage($pname, READPAGE_CURRENT); 
+      if (!$page) continue;
+      $tref[$pname]['time'] = $page['time'];
+      if (!in_array('all',$flist) &&
+          !in_array(FmtPageName('$Group',$pname),$flist)) continue;
+      $rc = preg_match('/RecentChanges$/',$pname);
+      foreach(explode(',',strval(@$page['targets'])) as $r) {
+        if ($r=='') continue;
+        if ($rc) @$tref[$r]['rc']++;
+        else { @$tref[$r]['page']++; @$pref[$r][$pname]++; }
+      }
+    }
+    uasort($tref,'RefCountCmp');
+    echo "<table class='refcount'>
+      <tr><th></th><th colspan='2'>Referring pages</th></tr>
+      <tr><th>Name / Time</th><th>All</th><th>R.C.</th></tr>";
+    reset($tref);
+    foreach($tref as $p=>$c) {
+      if (!in_array('all',$tlist) &&
+          !in_array(FmtPageName('$Group',$p),$tlist)) continue;
+      if ($whichrefs=='missing' && PageExists($p)) continue;
+      elseif ($whichrefs=='existing' && !PageExists($p)) continue;
+      elseif ($whichrefs=='orphaned' &&
+        (@$tref[$p]['page']>0 || !PageExists($p))) continue;
+      echo "<tr><td valign='top'>",LinkPage($pagename, '', $p, '', $p);
+      if (@$tref[$p]['time']) echo PSFT($RefCountTimeFmt,$tref[$p]['time']);
+      if ($showrefs && is_array(@$pref[$p])) {
+        foreach($pref[$p] as $pr=>$pc) 
+          echo "<dd>", LinkPage($pagename, '', $pr, '', $pr);
+      }
+      echo "</td>";
+      echo "<td align='center' valign='top'>",@$tref[$p]['page']+0,"</td>";
+      echo "<td align='center' valign='top'>",@$tref[$p]['rc']+0,"</td>";
+      echo "</tr>";
+    }
+    echo "</table>";
+  }
+}
+
+
+function RefCountCmp($ua,$ub) {
+  if (@($ua['page']!=$ub['page'])) return @($ub['page']-$ua['page']);
+  if (@($ua['rc']!=$ub['rc'])) return @($ub['rc']-$ua['rc']);
+  return @($ub['time']-$ua['time']);
+}
+
+
+
+function HandleRefCount($pagename, $auth='read') {
+  global $HandleRefCountFmt,$PageStartFmt,$PageEndFmt;
+  $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
+  if (!$page) Abort('?unauthorized');
+  PCache($pagename, $page);
+  SDV($HandleRefCountFmt,array(&$PageStartFmt,
+    'function:PrintRefCount',&$PageEndFmt));
+  PrintFmt($pagename,$HandleRefCountFmt);
+}
+
blob - /dev/null
blob + 40bc603703d0eadc14f7f440fdeac8672998caae (mode 644)
--- /dev/null
+++ scripts/robots.php
@@ -0,0 +1,81 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2005-2017 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file provides various features to allow PmWiki to control
+    what web crawlers (robots) see when they visit the site.  Of course
+    it's still possible to control robots at the webserver level 
+    and via robots.txt, but this page provides some finer level
+    of control.
+
+    The $MetaRobots variable controls generation of the 
+    <meta name='robots' ... /> tag in the head of the HTML document.
+    By default $MetaRobots is set so that robots do not index pages in
+    the Site, SiteAdmin, and PmWiki groups.
+
+    The $RobotPattern variable is used to determine if the user agent
+    accessing the site is a robot, and $IsRobotAgent is set accordingly.  
+    By default this pattern identifies Googlebot, Yahoo! Slurp, msnbot, 
+    BecomeBot, and HTTrack as robots.
+
+    If the agent is deemed a robot, then the $RobotActions array is
+    checked to see if robots are allowed to perform the given action,
+    and if not the robot is immediately sent an HTTP 403 Forbidden
+    response.
+
+    If $EnableRobotCloakActions is set, then a pattern is added to
+    $FmtP to hide any "?action=" url parameters in page urls
+    generated by PmWiki for actions that robots aren't allowed to
+    access.  This can greatly reduce the load on the server by 
+    not providing the robot with links to pages that it will be 
+    forbidden to index anyway.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+## $MetaRobots provides the value for the <meta name='robots' ...> tag.
+SDV($MetaRobots,
+      ($action!='browse' || !PageExists($pagename)
+        || preg_match('#^PmWiki[./](?!PmWiki$)|^Site(Admin)?[./]#', $pagename))
+      ? 'noindex,nofollow' : 'index,follow');
+if ($MetaRobots)
+  $HTMLHeaderFmt['robots'] =
+    "  <meta name='robots' content='\$MetaRobots' />\n";
+
+## $RobotPattern is used to identify robots.
+SDV($RobotPattern,'\\w+[-_ ]?(bot|spider|crawler)'
+  .'|Slurp|Teoma|ia_archiver|HTTrack|XML Sitemaps|Jabse|Yandex|PageAnalyzer|Yeti|Riddler|Aboundex|ADmantX|WikiDo'
+  .'|Pinterest|Qwantify|worldwebheritage|coccoc|HostWallker|Add Catalog|idmarch|MegaIndex|heritrix|SEOdiver');
+SDV($IsRobotAgent, 
+  $RobotPattern && preg_match("!$RobotPattern!i", @$_SERVER['HTTP_USER_AGENT']));
+if (!$IsRobotAgent) return;
+
+## $RobotActions indicates which actions a robot is allowed to perform.
+SDVA($RobotActions, array('browse' => 1, 'rss' => 1, 'dc' => 1));
+if (!@$RobotActions[$action]) {
+  $pagename = ResolvePageName($pagename);
+  if (!PageExists($pagename)) {
+    header("HTTP/1.1 404 Not Found");
+    print("<h1>Not Found</h1>");
+    exit();
+  }
+  header("HTTP/1.1 403 Forbidden");
+  print("<h1>Forbidden</h1>");
+  exit();
+}
+
+## The following removes any ?action= parameters that robots aren't
+## allowed to access.
+function cb_bool($a) { return (boolean)$a; }
+if (IsEnabled($EnableRobotCloakActions, 0)) {
+  $p = join('|', array_keys(array_filter($RobotActions, 'cb_bool')));
+  $FmtPV['$PageUrl'] = 
+    'PUE(($EnablePathInfo)
+         ? "\\$ScriptUrl/$group/$name"
+         : "\\$ScriptUrl?n=$group.$name")';
+  $FmtP["/(\\\$ScriptUrl[^#\"'\\s<>]+)\\?action=(?!$p)\\w+/"] = '$1';
+}
+
blob - /dev/null
blob + c5fda5ea25b53173b4d80730d05393da0c2c0e49 (mode 644)
--- /dev/null
+++ scripts/simuledit.php
@@ -0,0 +1,76 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2015 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file enables merging of concurrent edits, using the "diff3"
+    program available on most Unix systems to merge the edits.  If 
+    diff3 is not available or you'd like to use a different command, 
+    then set $SysMergeCmd accordingly.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+array_unshift($EditFunctions,'MergeSimulEdits');
+$HTMLStylesFmt['simuledit'] = ".editconflict { color:green; 
+  font-style:italic; margin-top:1.33em; margin-bottom:1.33em; }\n";
+
+function Merge($newtext,$oldtext,$pagetext) {
+  global $WorkDir,$SysMergeCmd, $SysMergePassthru;
+  SDV($SysMergeCmd,"/usr/bin/diff3 -L '' -L '' -L '' -m -E");
+  if (substr($newtext,-1,1)!="\n") $newtext.="\n";
+  if (substr($oldtext,-1,1)!="\n") $oldtext.="\n";
+  if (substr($pagetext,-1,1)!="\n") $pagetext.="\n";
+  $tempnew = tempnam($WorkDir,"new");
+  $tempold = tempnam($WorkDir,"old");
+  $temppag = tempnam($WorkDir,"page");
+  if ($newfp=fopen($tempnew,'w')) { fputs($newfp,$newtext); fclose($newfp); }
+  if ($oldfp=fopen($tempold,'w')) { fputs($oldfp,$oldtext); fclose($oldfp); }
+  if ($pagfp=fopen($temppag,'w')) { fputs($pagfp,$pagetext); fclose($pagfp); }
+  $mergetext = '';
+  if (IsEnabled($SysMergePassthru, 0)) {
+    ob_start();
+    passthru("$SysMergeCmd $tempnew $tempold $temppag");
+    $mergetext = ob_get_clean();
+  }
+  else {
+    $merge_handle = popen("$SysMergeCmd $tempnew $tempold $temppag",'r');
+    if ($merge_handle) {
+      while (!feof($merge_handle)) $mergetext .= fread($merge_handle,4096);
+      pclose($merge_handle);
+    }
+  }
+  @unlink($tempnew); @unlink($tempold); @unlink($temppag);
+  return $mergetext;
+}
+
+function MergeSimulEdits($pagename,&$page,&$new) {
+  global $Now, $EnablePost, $MessagesFmt, $WorkDir;
+  if (@!$_POST['basetime'] || !PageExists($pagename) 
+      || $page['time'] >= $Now
+      || $_POST['basetime']>=$page['time']
+      || $page['text'] == $new['text']) return;
+  $EnablePost = 0;
+  $old = array();
+  RestorePage($pagename,$page,$old,"diff:{$_POST['basetime']}");
+  $text = Merge($new['text'],$old['text'],$page['text']);
+  if ($text > '') { $new['text'] = $text; $ec = '$[EditConflict]'; }
+  else $ec = '$[EditWarning]';
+  XLSDV('en', array(
+    'EditConflict' => "The page you are
+      editing has been modified since you started editing it.
+      The modifications have been merged into the text below, 
+      you may want to verify the results of the merge before
+      pressing save.  Conflicts the system couldn't resolve are
+      bracketed by &lt;&lt;&lt;&lt;&lt;&lt;&lt; and
+      &gt;&gt;&gt;&gt;&gt;&gt;&gt;.",
+    'EditWarning' => "The page you are editing has been modified
+      since you started editing it.  If you continue, your
+      changes will overwrite any changes that others have made."));
+  $MessagesFmt[] = "<p class='editconflict'>$ec
+    (<a target='_blank' href='\$PageUrl?action=diff'>$[View changes]</a>)
+    </p>\n";
+}
+
blob - /dev/null
blob + d5ea8fab3829fef669a037ffa7ff47d6a1dabc72 (mode 644)
--- /dev/null
+++ scripts/skins.php
@@ -0,0 +1,244 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2023 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file implements the skin selection code for PmWiki.  Skin 
+    selection is controlled by the $Skin variable, which can also
+    be an array (in which case the first skin found is loaded).
+
+    In addition, $ActionSkin[$action] specifies other skins to be
+    searched based on the current action.
+
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($Skin, 'pmwiki');
+SDV($ActionSkin['print'], 'print');
+SDV($FarmPubDirUrl, $PubDirUrl);
+SDV($PageLogoUrl, "$FarmPubDirUrl/skins/pmwiki/pmwiki-32.gif");
+SDVA($TmplDisplay, array('PageEditFmt' => 0));
+SDV($LocalCSSDir, 'pub/css');
+SDV($LocalCSSDirUrl, '$PubDirUrl/css');
+
+## from skinchange.php
+if (IsEnabled($EnableAutoSkinList, 0) || isset($PageSkinList)) {
+  SDV($SkinCookie, $CookiePrefix.'setskin');
+  SDV($SkinCookieExpires, $Now+60*60*24*365);
+
+  if (isset($_COOKIE[$SkinCookie])) $sk = $_COOKIE[$SkinCookie];
+  if (isset($_GET['setskin'])) {
+    $sk = $_GET['setskin'];
+    pmsetcookie($SkinCookie, $sk, $SkinCookieExpires, '/');
+    if(@$EnableIMSCaching) {
+      SDV($IMSCookie, $CookiePrefix.'imstime');
+      pmsetcookie($IMSCookie, '', $Now -3600, '/');
+      $EnableIMSCaching = 0;
+    }
+  }
+  if (isset($_GET['skin'])) $sk = $_GET['skin'];
+
+  ##  If $EnableAutoSkinList is set, then we accept any skin that
+  ##  exists in pub/skins/ or $FarmD/pub/skins/ .
+  if (IsEnabled($EnableAutoSkinList, 0) 
+      && @$sk && preg_match('/^[-\\w]+$/', $sk)
+      && (is_dir("pub/skins/$sk") || is_dir("$FarmD/pub/skins/$sk")))
+    $Skin = $sk;
+
+  ##  If there's a specific mapping in $PageSkinList, we use it no
+  ##  matter what.
+  if (@$PageSkinList[$sk]) $Skin = $PageSkinList[$sk];
+}
+
+# $PageTemplateFmt is deprecated
+if (isset($PageTemplateFmt)) LoadPageTemplate($pagename,$PageTemplateFmt);
+else {
+  $x = array_merge((array)@$ActionSkin[$action], (array)$Skin);
+  SetSkin($pagename, $x);
+}
+
+SDV($PageCSSListFmt,array(
+  "$LocalCSSDir/local.css" => "$LocalCSSDirUrl/local.css",
+  "$LocalCSSDir/{\$Group}.css" => "$LocalCSSDirUrl/{\$Group}.css",
+  "$LocalCSSDir/{\$FullName}.css" => "$LocalCSSDirUrl/{\$FullName}.css"));
+
+foreach((array)$PageCSSListFmt as $k=>$v) 
+  if (file_exists(FmtPageName($k,$pagename))) 
+    $HTMLHeaderFmt[] = "<link rel='stylesheet' type='text/css' href='$v' />\n";
+
+if(IsEnabled($WikiPageCSSFmt, false))
+  InsertWikiPageCSS($pagename, $WikiPageCSSFmt);
+
+# SetSkin changes the current skin to the first available skin from 
+# the $skin array.
+function SetSkin($pagename, $skin) {
+  global $Skin, $SkinLibDirs, $SkinDir, $SkinDirUrl, 
+    $IsTemplateLoaded, $PubDirUrl, $FarmPubDirUrl, $FarmD, $GCount;
+  SDV($SkinLibDirs, array(
+    "./pub/skins/\$Skin"      => "$PubDirUrl/skins/\$Skin",
+    "$FarmD/pub/skins/\$Skin" => "$FarmPubDirUrl/skins/\$Skin"));
+  foreach((array)$skin as $sfmt) {
+    $Skin = FmtPageName($sfmt, $pagename); $GCount = 0;
+    foreach($SkinLibDirs as $dirfmt => $urlfmt) {
+      $SkinDir = FmtPageName($dirfmt, $pagename);
+      if (is_dir($SkinDir)) 
+        { $SkinDirUrl = FmtPageName($urlfmt, $pagename); break 2; }
+    }
+  }
+  if (!is_dir($SkinDir)) {
+    unset($Skin);
+    Abort("?unable to find skin from list ".implode(' ',(array)$skin));
+  }
+  $IsTemplateLoaded = 0;
+  if (file_exists("$SkinDir/$Skin.php"))
+    include_once("$SkinDir/$Skin.php");
+  else if (file_exists("$SkinDir/skin.php"))
+    include_once("$SkinDir/skin.php");
+  if ($IsTemplateLoaded) return;
+  if (file_exists("$SkinDir/$Skin.tmpl")) 
+    LoadPageTemplate($pagename, "$SkinDir/$Skin.tmpl");
+  else if (file_exists("$SkinDir/skin.tmpl"))
+    LoadPageTemplate($pagename, "$SkinDir/skin.tmpl");
+  else if (($dh = opendir($SkinDir))) {
+    while (($fname = readdir($dh)) !== false) {
+      if ($fname[0] == '.') continue;
+      if (substr($fname, -5) != '.tmpl') continue;
+      if ($IsTemplateLoaded) 
+        Abort("?unable to find unique template in $SkinDir");
+      LoadPageTemplate($pagename, "$SkinDir/$fname");
+    }
+    closedir($dh);
+  }
+  if (!$IsTemplateLoaded) Abort("Unable to load $Skin template", 'skin');
+}
+
+function cb_includeskintemplate($m) {
+  global $SkinDir, $pagename;
+  $x = preg_split('/\\s+/', $m[1], -1, PREG_SPLIT_NO_EMPTY);
+  for ($i=0; $i<count($x); $i++) {
+    $f = FmtPageName("$SkinDir/{$x[$i]}", $pagename);
+    if (strpos($f, '..')!==false || preg_match('/%2e/i', $f)) continue;
+    if (file_exists($f)) return implode('', file($f));
+  }
+}
+
+# Helper function for recipes
+function DisableSkinParts($x) {
+  $x = preg_split('/\\W+/', ucwords(strtolower($x)), -1, PREG_SPLIT_NO_EMPTY);
+  foreach($x as $y) {
+    SetTmplDisplay("Page{$y}Fmt",0);
+  }
+}
+
+# LoadPageTemplate loads a template into $TmplFmt
+function LoadPageTemplate($pagename,$tfilefmt) {
+  global $PageStartFmt, $PageEndFmt, $SkinTemplateIncludeLevel,
+    $EnableSkinDiag, $HTMLHeaderFmt, $HTMLFooterFmt,
+    $IsTemplateLoaded, $TmplFmt, $TmplDisplay,
+    $PageTextStartFmt, $PageTextEndFmt, $SkinDirectivesPattern;
+
+  SDV($PageTextStartFmt, "\n<div id='wikitext'>\n");
+  SDV($PageTextEndFmt, "</div>\n");
+  SDV($SkinDirectivesPattern, 
+      "[[<]!--((?:wiki|file|function|markup):.*?)--[]>]");
+
+  $sddef = array('PageEditFmt' => 0);
+  $k = implode('', file(FmtPageName($tfilefmt, $pagename)));
+  
+  for ($i=0; $i<IsEnabled($SkinTemplateIncludeLevel, 0) && $i<10; $i++) {
+    if (stripos($k, '<!--IncludeTemplate')===false) break;
+    $k = preg_replace_callback('/[<]!--IncludeTemplate: *(\\S.*?) *--[>]/i',
+      'cb_includeskintemplate', $k);
+  }
+
+  if (IsEnabled($EnableSkinDiag, 0)) {
+    if (!preg_match('/<!--((No)?(HT|X)MLHeader|HeaderText)-->/i', $k))
+      Abort("Skin template missing &lt;!--HTMLHeader--&gt;", 'htmlheader');
+    if (!preg_match('/<!--(No)?(HT|X)MLFooter-->/i', $k))
+      Abort("Skin template missing &lt;!--HTMLFooter--&gt;", 'htmlheader');
+  }
+
+  $sect = preg_split(
+    '#[[<]!--(/?(?:Page[A-Za-z]+Fmt|(?:HT|X)ML(?:Head|Foot)er|HeaderText|PageText).*?)--[]>]#',
+    $k, 0, PREG_SPLIT_DELIM_CAPTURE);
+  $TmplFmt['Start'] = array_merge(array('headers:'),
+    preg_split("/$SkinDirectivesPattern/s",
+      array_shift($sect),0,PREG_SPLIT_DELIM_CAPTURE));
+  $TmplFmt['End'] = array($PageTextEndFmt);
+  $ps = 'Start';
+  while (count($sect)>0) {
+    $k = array_shift($sect);
+    $v = preg_split("/$SkinDirectivesPattern/s",
+      array_shift($sect),0,PREG_SPLIT_DELIM_CAPTURE);
+    $TmplFmt[$ps][] = "<!--$k-->";
+    if ($k[0] == '/')
+      { $TmplFmt[$ps][] = (count($v) > 1) ? $v : $v[0]; continue; }
+    @list($var, $sd) = explode(' ', $k, 2);
+    $GLOBALS[$var] = (count($v) > 1) ? $v : $v[0];
+    if ($sd > '') $sddef[$var] = $sd;
+    if ($var == 'PageText') { $ps = 'End'; }
+    if ($var == 'HTMLHeader' || $var == 'XMLHeader') 
+      $TmplFmt[$ps][] = &$HTMLHeaderFmt; 
+    if ($var == 'HTMLFooter' || $var == 'XMLFooter') 
+      $TmplFmt[$ps][] = &$HTMLFooterFmt; 
+    ##   <!--HeaderText--> deprecated, 2.1.16
+    if ($var == 'HeaderText') { $TmplFmt[$ps][] = &$HTMLHeaderFmt; }
+    $TmplFmt[$ps][$var] =& $GLOBALS[$var];
+  }
+  array_push($TmplFmt['Start'], $PageTextStartFmt);
+  $PageStartFmt = 'function:PrintSkin Start';
+  $PageEndFmt = 'function:PrintSkin End';
+  $IsTemplateLoaded = 1;
+  SDVA($TmplDisplay, $sddef);
+}
+
+# This function is called to print a portion of the skin template
+# according to the settings in $TmplDisplay.
+function PrintSkin($pagename, $arg) {
+  global $TmplFmt, $TmplDisplay;
+  foreach ($TmplFmt[$arg] as $k => $v) 
+    if (!isset($TmplDisplay[$k]) || $TmplDisplay[$k])
+      PrintFmt($pagename, $v);
+}
+
+# This function parses a wiki page like Site.LocalCSS
+# and inserts CSS rules specific to the current page.
+# Based on Cookbook:LocalCSS by Petko Yotov
+function InsertWikiPageCSS($pagename, $fmt) {
+  global $HTMLStylesFmt, $EnableSelfWikiPageCSS, $WikiPageCSSVars;
+  SDV($WikiPageCSSVars,array('FarmPubDirUrl','PubDirUrl','Skin','action','SkinDirUrl'));
+
+  $stylepagename = FmtPageName($fmt, $pagename);
+  if ($stylepagename == $pagename &&
+    !IsEnabled($EnableSelfWikiPageCSS, 0)) return;
+
+  if ($stylepagename == $pagename && @$_POST['text'])
+    $text = stripmagic($_POST['text']);
+  else {
+    $p = ReadPage($stylepagename, READPAGE_CURRENT);
+    $text =  @$p['text'];
+  }
+  if (!$text) return;
+
+  $text = str_replace(array("\r",'$','<','&#036;='),array('','&#036;','&lt;','$='), $text);
+  $varray = array();
+
+  # global PHP variables as @variables
+  foreach($WikiPageCSSVars as $var) $varray["@$var"] = $GLOBALS[$var];
+
+  # get @variables from page
+  if (preg_match_all("/^\\s*(@\\w+):\\s*(.*?)\\s*$/m", $text, $vars) )
+    foreach($vars[1] as $k=>$varname) $varray[$varname] = trim($vars[2][$k]);
+
+  # expand nested @variables
+  for ($i=0; $i<10; $i++) $text = strtr($text, $varray);
+
+  # process snippets
+  if (preg_match_all("/\\[@\\s*([^\\/!\\s]+)\n(.*?)\\s*@\\]/s", $text, $matches, PREG_SET_ORDER) )
+    foreach($matches as $a)
+      if (count(MatchPageNames($pagename, trim($a[1]))))
+        @$HTMLStylesFmt['WikiPageCSS'] .= trim($a[2]);
+}
+
blob - /dev/null
blob + 0314a9bd6a6cc985a99765cc7a4f99c573abfd35 (mode 644)
--- /dev/null
+++ scripts/stdconfig.php
@@ -0,0 +1,106 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2002-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file allows features to be easily enabled/disabled in config.php.
+    Simply set variables for the features to be enabled/disabled in config.php
+    before including this file.  For example:
+        $EnableQAMarkup=0;                      #disable Q: and A: tags
+        $EnableWikiStyles=1;                    #include default wikistyles
+    Each feature has a default setting, if the corresponding $Enable
+    variable is not set then you get the default.
+
+    To avoid processing any of the features of this file, set 
+        $EnableStdConfig = 0;
+    in config.php.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+$pagename = ResolvePageName($pagename);
+
+if (!IsEnabled($EnableStdConfig,1)) return;
+
+
+if (!function_exists('session_start') && IsEnabled($EnableRequireSession, 1))
+  Abort('PHP is lacking session support', 'session');
+
+if (IsEnabled($EnablePGCust,1))
+  include_once("$FarmD/scripts/pgcust.php");
+
+if (isset($PostConfig) && is_array($PostConfig)) {
+  asort($PostConfig, SORT_NUMERIC);
+  foreach ($PostConfig as $k=>$v) {
+    if (!$k || !$v || $v<0 || $v>=50) continue;
+    if (function_exists($k)) $k($pagename);
+    elseif (file_exists($k)) include_once($k);
+  }
+}
+
+if (IsEnabled($EnableRobotControl,1))
+  include_once("$FarmD/scripts/robots.php");
+
+if (IsEnabled($EnableCaches, 1))
+  include_once("$FarmD/scripts/caches.php");
+
+## Scripts that are part of a standard PmWiki distribution.
+if (IsEnabled($EnableAuthorTracking,1)) {
+  include_once("$FarmD/scripts/author.php");
+  EnableSignatures();
+}
+if (IsEnabled($EnablePrefs, 1))
+  include_once("$FarmD/scripts/prefs.php");
+if (IsEnabled($EnableSimulEdit, 1))
+  include_once("$FarmD/scripts/simuledit.php");
+if (IsEnabled($EnableDrafts, 0))
+  include_once("$FarmD/scripts/draft.php");        # after simuledit + prefs
+if (IsEnabled($EnableSkinLayout,1))
+  include_once("$FarmD/scripts/skins.php");        # must come after prefs
+if (@$Transition || IsEnabled($EnableTransitions, 0))
+  include_once("$FarmD/scripts/transition.php");   # must come after skins
+if (@$LinkWikiWords || IsEnabled($EnableWikiWords, 0))
+  include_once("$FarmD/scripts/wikiwords.php");    # must come before stdmarkup
+if (IsEnabled($EnableStdMarkup,1))
+  include_once("$FarmD/scripts/stdmarkup.php");    # must come after transition
+if (($action=='diff' && @!$HandleActions['diff'])
+  || (IsEnabled($EnablePreviewChanges, 0) && @$_REQUEST['preview']>''))
+  include_once("$FarmD/scripts/pagerev.php");
+if (IsEnabled($EnableWikiTrails,1))
+  include_once("$FarmD/scripts/trails.php");
+if (IsEnabled($EnableWikiStyles,1))
+  include_once("$FarmD/scripts/wikistyles.php");
+if (IsEnabled($EnableMarkupExpressions, 1) 
+    && !function_exists('MarkupExpression'))
+  include_once("$FarmD/scripts/markupexpr.php");
+if (IsEnabled($EnablePageList,1))
+  include_once("$FarmD/scripts/pagelist.php");
+if (IsEnabled($EnableVarMarkup,1))
+  include_once("$FarmD/scripts/vardoc.php");
+if (!@$DiffFunction || !function_exists($DiffFunction)) 
+  include_once("$FarmD/scripts/phpdiff.php");
+if ($action=='crypt')
+  include_once("$FarmD/scripts/crypt.php");
+if ($action=='edit')
+  include_once("$FarmD/scripts/guiedit.php");
+if (IsEnabled($EnableForms,1))
+  include_once("$FarmD/scripts/forms.php");       # must come after prefs
+if (IsEnabled($EnableUpload,0))
+  include_once("$FarmD/scripts/upload.php");      # must come after forms
+if (IsEnabled($EnableBlocklist, 0))
+  include_once("$FarmD/scripts/blocklist.php");
+if (IsEnabled($EnableNotify,0))
+  include_once("$FarmD/scripts/notify.php");
+if (IsEnabled($EnableDiag,0) || $action == 'recipecheck') 
+  include_once("$FarmD/scripts/diag.php");
+if (IsEnabled($EnablePmUtils,1))
+  include_once("$FarmD/scripts/utils.php");
+
+if (IsEnabled($EnableUpgradeCheck,1) && !IsEnabled($EnableReadOnly, 0)) {
+  SDV($StatusPageName, "$SiteAdminGroup.Status");
+  $page = ReadPage($StatusPageName, READPAGE_CURRENT);
+  if (@$page['updatedto'] != $VersionNum) 
+    { $action = 'upgrade'; include_once("$FarmD/scripts/upgrades.php"); }
+}
blob - /dev/null
blob + 5b4c49201ce7e9574f83c293e75dcb798f5ffe8b (mode 644)
--- /dev/null
+++ scripts/stdmarkup.php
@@ -0,0 +1,721 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script defines PmWiki's standard markup.  It is automatically
+    included from stdconfig.php unless $EnableStdMarkup==0.
+
+    Each call to Markup() below adds a new rule to PmWiki's translation
+    engine (unless a rule with the same name has already been defined).  
+    The form of the call is Markup($id,$where,$pat,$rep); 
+    $id is a unique name for the rule, $where is the position of the rule
+    relative to another rule, $pat is the pattern to look for, and
+    $rep is the string to replace it with.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+## first we preserve text in [=...=] and [@...@]
+function PreserveText($sigil, $text, $lead) {
+  if ($sigil=='=') return $lead.Keep($text);
+  if (strpos($text, "\n")===false) 
+    return "$lead<code class='escaped'>".Keep($text)."</code>";
+  $text = preg_replace("/\n[^\\S\n]+$/", "\n", $text);
+  if ($lead == "" || $lead == "\n") 
+    return "$lead<pre class='escaped'>".Keep($text)."</pre>";
+  return "$lead<:pre,1>".Keep($text);
+}
+
+Markup('[=','_begin',"/(\n[^\\S\n]*)?\\[([=@])(.*?)\\2\\]/s",
+    "MarkupPreserveText");
+function MarkupPreserveText($m) {return PreserveText($m[2], $m[3], $m[1]);}
+
+Markup('restore','<_end',"/$KeepToken(\\d.*?)$KeepToken/", 'cb_expandkpv');
+Markup('<:', '>restore', '/<:[^>]*>/', '');
+Markup('<vspace>', '<restore', 
+  '/<vspace>/', 
+  "<div class='vspace'></div>");
+Markup('<vspace><p>', '<<vspace>',
+  "/<vspace><p\\b(([^>]*)(\\s)class=(['\"])([^>]*?)\\4)?/",
+  "<p$2 class='vspace$3$5'");
+
+## remove carriage returns before preserving text
+Markup('\\r','<[=','/\\r/','');
+
+# $[phrase] substitutions
+Markup('$[phrase]', '>[=',
+  '/\\$\\[(?>([^\\]]+))\\]/', "cb_expandxlang");
+
+# {$var} substitutions
+Markup('{$var}', '>$[phrase]',
+  '/\\{(\\*|!?[-\\w.\\/\\x80-\\xff]*)(\\$:?\\w[-\\w]*)\\}/',
+  "MarkupPageVar");
+function MarkupPageVar($m){
+  global $IncludedPages, $Cursor;
+  extract($GLOBALS["MarkupToHTML"]);
+  if($m[1] && strpos($m[2], '$:')===0) {
+    $pn = isset($Cursor[$m[1]]) ? $Cursor[$m[1]] : MakePageName($pagename, $m[1]);
+    @$IncludedPages[$pn]++;
+  }
+  return PRR(PVSE(PageVar($pagename, $m[2], $m[1])));
+}
+
+# invisible (:textvar:...:) definition
+Markup('textvar:', '<split',
+   '/\\(: *\\w[-\\w]* *:(?!\\)).*?:\\)/s', '');
+
+## handle relative text vars in includes
+if (IsEnabled($EnableRelativePageVars, 1)) 
+  SDV($QualifyPatterns["/\\{([-\\w\\x80-\\xfe]*)(\\$:?\\w+\\})/"],
+    'cb_qualifypat');
+
+function cb_qualifypat($m) {
+  extract($GLOBALS["tmp_qualify"]); 
+  return '{' . ($m[1] ? MakePageName($pagename, $m[1]) : $pagename) . $m[2];
+}
+
+## character entities
+Markup('&','<if','/&amp;(?>([A-Za-z0-9]+|#\\d+|#[xX][A-Fa-f0-9]+));/',
+  '&$1;');
+Markup('&amp;amp;', '<&', '/&amp;amp;/', Keep('&amp;'));
+
+
+## (:if:)/(:elseif:)/(:else:)
+SDV($CondTextPattern, 
+  "/ \\(:if (\d*) (?:end)? \\b[^\n]*?:\\)
+     .*?
+     (?: \\(: (?:if\\1|if\\1end) \\s* :\\)
+     |   (?=\\(:(?:if\\1|if\\1end)\\b[^\n]*?:\\) | $)
+     )
+   /six");
+// SDV($CondTextReplacement, "CondText2(\$pagename, \$m[0], \$m[1])");
+SDV($CondTextReplacement, "MarkupCondText2");
+Markup('if', 'fulltext', $CondTextPattern, $CondTextReplacement);
+
+function MarkupCondText2($m) {
+  extract($GLOBALS["MarkupToHTML"]);
+  return CondText2($pagename, $m[0], $m[1]);
+}
+function CondText2($pagename, $text, $code = '') {
+  global $Conditions, $CondTextPattern, $CondTextReplacement;
+  $if = "if$code";
+  $repl = str_replace('$pagename', "'$pagename'", $CondTextReplacement);
+  
+  $parts = preg_split("/\\(:(?:{$if}end|$if|else *$if|else$code)\\b\\s*(.*?)\\s*:\\)/", 
+                      $text, -1, PREG_SPLIT_DELIM_CAPTURE);
+  $x = array_shift($parts);
+  while ($parts) {
+    list($condspec, $condtext) = array_splice($parts, 0, 2);
+    if (!preg_match("/^\\s*(!?)\\s*(\\S*)\\s*(.*?)\\s*$/", $condspec, $match)) continue;
+    list($x, $not, $condname, $condparm) = $match;
+
+    if (!isset($Conditions[$condname])) 
+      return preg_replace_callback($CondTextPattern, $repl, $condtext);
+    $tf = @eval("return ({$Conditions[$condname]});");
+    if ($tf xor $not)
+      return preg_replace_callback($CondTextPattern, $repl, $condtext);
+  }
+  return '';
+}
+
+
+## (:include:)
+Markup('include', '>if',
+  '/\\(:include\\s+(\\S.*?):\\)/i',
+  "MarkupRedirectInclude");
+
+## (:redirect:)
+Markup('redirect', '<include',
+  '/\\(:redirect\\s+(\\S.*?):\\)/i',
+  "MarkupRedirectInclude");
+
+function MarkupRedirectInclude($m) {
+  extract($GLOBALS["MarkupToHTML"]);
+  switch ($markupid) {
+    case 'include': return PRR(IncludeText($pagename, $m[1]));
+    case 'redirect': return RedirectMarkup($pagename, $m[1]);
+  }
+}
+$SaveAttrPatterns['/\\(:(if\\d*|include|redirect)(\\s.*?)?:\\)/i'] = ' ';
+
+## GroupHeader/GroupFooter handling
+Markup('nogroupheader', '>include',
+  '/\\(:nogroupheader:\\)/i',
+  "MarkupGroupHeaderFooter");
+Markup('nogroupfooter', '>include',
+  '/\\(:nogroupfooter:\\)/i',
+  "MarkupGroupHeaderFooter");
+Markup('groupheader', '>nogroupheader',
+  '/\\(:groupheader:\\)/i',
+  "MarkupGroupHeaderFooter");
+Markup('groupfooter','>nogroupfooter',
+  '/\\(:groupfooter:\\)/i',
+  "MarkupGroupHeaderFooter");
+
+function MarkupGroupHeaderFooter($m) {
+  extract($GLOBALS["MarkupToHTML"]);
+  global $GroupHeaderFmt, $GroupFooterFmt;
+  switch ($markupid) {
+    case 'nogroupheader': return PZZ($GroupHeaderFmt='');
+    case 'nogroupfooter': return PZZ($GroupFooterFmt='');
+    case 'groupheader': return PRR(FmtPageName($GroupHeaderFmt,$pagename));
+    case 'groupfooter': return PRR(FmtPageName($GroupFooterFmt,$pagename));
+  }
+}
+## (:nl:)
+Markup('nl0','<split',"/([^\n])(?>(?:\\(:nl:\\))+)([^\n])/i","$1\n$2");
+Markup('nl1','>nl0',"/\\(:nl:\\)/i",'');
+
+## \\$  (end of line joins)
+Markup('\\$','>nl1',"/\\\\(?>(\\\\*))\n/", "MarkupEndLineJoin");
+function MarkupEndLineJoin($m) { return str_repeat('<br />',strlen($m[1])); }
+
+## Remove one <:vspace> after !headings
+Markup('!vspace', '>\\$', "/^(!(?>[^\n]+)\n)<:vspace>/m", '$1');
+
+## (:noheader:),(:nofooter:),(:notitle:)...
+Markup('noheader', 'directives', '/\\(:noheader:\\)/i', "MarkupTmplDisplay");
+Markup('nofooter', 'directives', '/\\(:nofooter:\\)/i', "MarkupTmplDisplay");
+Markup('notitle',  'directives', '/\\(:notitle:\\)/i',  "MarkupTmplDisplay");
+Markup('noleft',   'directives', '/\\(:noleft:\\)/i',   "MarkupTmplDisplay");
+Markup('noright',  'directives', '/\\(:noright:\\)/i',  "MarkupTmplDisplay");
+Markup('noaction', 'directives', '/\\(:noaction:\\)/i', "MarkupTmplDisplay");
+
+function MarkupTmplDisplay($m) {
+  extract($GLOBALS["MarkupToHTML"]);
+  switch ($markupid) {
+    case 'noheader': return SetTmplDisplay('PageHeaderFmt',0);
+    case 'nofooter': return SetTmplDisplay('PageFooterFmt',0);
+    case 'notitle':  return SetTmplDisplay('PageTitleFmt',0);
+    case 'noleft':   return SetTmplDisplay('PageLeftFmt',0);
+    case 'noright':  return SetTmplDisplay('PageRightFmt',0);
+    case 'noaction': return SetTmplDisplay('PageActionFmt',0);
+  }
+}
+
+## (:spacewikiwords:)
+Markup('spacewikiwords', 'directives',
+  '/\\(:(no)?spacewikiwords:\\)/i',
+  "MarkupDirectives");
+
+## (:linkwikiwords:)
+Markup('linkwikiwords', 'directives',
+  '/\\(:(no)?linkwikiwords:\\)/i',
+  "MarkupDirectives");
+
+## (:linebreaks:)
+Markup('linebreaks', 'directives',
+  '/\\(:(no)?linebreaks:\\)/i',
+  "MarkupDirectives");
+
+## (:messages:)
+Markup('messages', 'directives',
+  '/^\\(:messages:\\)/i',
+  "MarkupDirectives");
+
+function MarkupDirectives($m) {
+  extract($GLOBALS["MarkupToHTML"]);
+  switch ($markupid) {
+    case 'linkwikiwords':  return PZZ($GLOBALS['LinkWikiWords']=(@$m[1]!='no'));
+    case 'spacewikiwords': return PZZ($GLOBALS['SpaceWikiWords']=(@$m[1]!='no'));
+    case 'linebreaks': 
+      return PZZ($GLOBALS['HTMLPNewline'] = (@$m[1]!='no') ? '<br  />' : '');
+    case 'messages': 
+      return '<:block>'.Keep(FmtPageName(
+        implode('',(array)$GLOBALS['MessagesFmt']), $pagename));
+  }
+}
+
+
+## (:comment:)
+Markup('comment', 'directives', '/\\(:comment .*?:\\)/i', '');
+
+## (:title:) +fix for PITS:00266, 00779
+$tmpwhen = IsEnabled($EnablePageTitlePriority, 0) ? '<include' : 'directives';
+Markup('title', $tmpwhen,
+  '/\\(:title\\s(.*?):\\)/i',
+  "MarkupSetProperty");
+unset($tmpwhen);
+
+function MarkupSetProperty($m){ # title, description, keywords
+  extract($GLOBALS["MarkupToHTML"]);
+  switch ($markupid) {
+    case 'title': 
+      global $EnablePageTitlePriority;
+      return PZZ(PCache($pagename, $zz=array('title' => 
+        SetProperty($pagename, 'title', $m[1], NULL, $EnablePageTitlePriority))));
+    case 'keywords': 
+      return PZZ(SetProperty($pagename, 'keywords', $m[1], ', '));
+    case 'description': 
+      return PZZ(SetProperty($pagename, 'description', $m[1], '\n'));
+  }
+}
+
+## (:keywords:), (:description:)
+Markup('keywords',    'directives', "/\\(:keywords?\\s+(.+?):\\)/i",   "MarkupSetProperty");
+Markup('description', 'directives', "/\\(:description\\s+(.+?):\\)/i", "MarkupSetProperty");
+$HTMLHeaderFmt['meta'] = 'function:PrintMetaTags';
+function PrintMetaTags($pagename, $args) {
+  global $PCache;
+  foreach(array('keywords', 'description') as $n) {
+    foreach((array)@$PCache[$pagename]["=p_$n"] as $v) {
+      $v = str_replace("'", '&#039;', $v);
+      print "<meta name='$n' content='$v' />\n";
+    }
+  }
+}
+
+#### inline markups ####
+## ''emphasis''
+Markup("''",'inline',"/''(.*?)''/",'<em>$1</em>');
+
+## '''strong'''
+Markup("'''","<''","/'''(.*?)'''/",'<strong>$1</strong>');
+
+## '''''strong emphasis'''''
+Markup("'''''","<'''","/'''''(.*?)'''''/",'<strong><em>$1</em></strong>');
+
+## @@code@@
+Markup('@@','inline','/@@(.*?)@@/','<code>$1</code>');
+
+## '+big+', '-small-'
+Markup("'+","<'''''","/'\\+(.*?)\\+'/",'<big>$1</big>');
+Markup("'-","<'''''","/'\\-(.*?)\\-'/",'<small>$1</small>');
+
+## '^superscript^', '_subscript_'
+Markup("'^","<'''''","/'\\^(.*?)\\^'/",'<sup>$1</sup>');
+Markup("'_","<'''''","/'_(.*?)_'/",'<sub>$1</sub>');
+
+## [+big+], [-small-]
+Markup('[+','inline','/\\[(([-+])+)(.*?)\\1\\]/',
+  "MarkupBigSmall");
+
+function MarkupBigSmall($m) {
+  $size = round(pow(6/5,($m[2]=='-'? -1:1)*strlen($m[1]))*100,0);
+  return "<span style='font-size: $size%;'>{$m[3]}</span>";
+}
+
+## {+ins+}, {-del-}
+Markup('{+','inline','/\\{\\+(.*?)\\+\\}/','<ins>$1</ins>');
+Markup('{-','inline','/\\{-(.*?)-\\}/','<del>$1</del>');
+
+## [[<<]] (break)
+Markup('[[<<]]','inline','/\\[\\[&lt;&lt;\\]\\]/',"<br clear='all' />");
+
+###### Links ######
+function MarkupLinks($m){
+  extract($GLOBALS["MarkupToHTML"]);
+  switch ($markupid) {
+    case '[[': 
+      return Keep(MakeLink($pagename,$m[1],NULL,$m[2]),'L');
+    case '[[|': 
+      return Keep(MakeLink($pagename,$m[1],$m[2],$m[3]),'L');
+    case '[[->': 
+      return Keep(MakeLink($pagename,$m[2],$m[1],$m[3]),'L');
+    case '[[|#': 
+      return Keep(MakeLink($pagename,$m[1],
+        '['.++$GLOBALS['MarkupFrame'][0]['ref'].']'),'L');
+    case '[[#': 
+      return Keep(TrackAnchors($m[1]) ? '' : "<a name='{$m[1]}' id='{$m[1]}'></a>", 'L');
+    case 'urllink': 
+      return Keep(MakeLink($pagename,$m[0],$m[0]),'L');
+    case 'mailto': 
+      return Keep(MakeLink($pagename,$m[0],$m[1]),'L');
+    case 'img': 
+      global $LinkFunctions, $ImgTagFmt;
+      return Keep($LinkFunctions[$m[1]]($pagename,$m[1],$m[2],@$m[4],$m[1].$m[2],
+             $ImgTagFmt),'L');
+  }
+}
+
+
+## [[free links]]
+Markup('[[','links',"/(?>\\[\\[\\s*(.*?)\\]\\])($SuffixPattern)/", "MarkupLinks");
+
+## [[!Category]]
+## Markup '[[!' now processed and indexed in LinkPage() 
+## with other link formats (PITS:01095, PITS:00447)
+SDV($CategoryGroup,'Category');
+SDV($LinkCategoryFmt,"<a class='categorylink' href='\$LinkUrl'>\$LinkText</a>");
+
+# This is a temporary workaround for blank category pages.
+# It may be removed in a future release (Pm, 2006-01-24)
+if (preg_match("/^$CategoryGroup\\./", $pagename)) {
+  SDV($DefaultPageTextFmt, '');
+  SDV($PageNotFoundHeaderFmt, 'HTTP/1.1 200 Ok');
+}
+
+## [[target | text]]
+Markup('[[|','<[[',
+  "/(?>\\[\\[([^|\\]]*)\\|\\s*)(.*?)\\s*\\]\\]($SuffixPattern)/",
+  "MarkupLinks");
+
+## [[text -> target ]]
+Markup('[[->','>[[|',
+  "/(?>\\[\\[([^\\]]+?)\\s*-+&gt;\\s*)(.*?)\\]\\]($SuffixPattern)/",
+  "MarkupLinks");
+
+## [[#anchor]]
+Markup('[[#','<[[','/(?>\\[\\[#([A-Za-z][-.:\\w]*))\\]\\]/', "MarkupLinks");
+function TrackAnchors($x) { global $SeenAnchor; return @$SeenAnchor[$x]++; }
+
+## [[target |#]] reference links
+Markup('[[|#', '<[[|',
+  "/(?>\\[\\[([^|\\]]+))\\|\\s*#\\s*\\]\\]/",
+  "MarkupLinks");
+
+## [[target |+]] title links moved inside LinkPage()
+
+## bare urllinks 
+Markup('urllink','>[[',
+  "/\\b(?>(\\L))[^\\s$UrlExcludeChars]*[^\\s.,?!$UrlExcludeChars]/",
+  "MarkupLinks");
+
+## mailto: links 
+Markup('mailto','<urllink',
+  "/\\bmailto:([^\\s$UrlExcludeChars]*[^\\s.,?!$UrlExcludeChars])/",
+  "MarkupLinks");
+
+## inline images
+Markup('img','<urllink',
+  "/\\b(?>(\\L))([^\\s$UrlExcludeChars]+$ImgExtPattern)(\"([^\"]*)\")?/",
+  "MarkupLinks");
+
+if (IsEnabled($EnableRelativePageLinks, 1))
+  SDV($QualifyPatterns['/(\\[\\[(?>[^\\]]+?->)?\\s*)([-\\w\\x80-\\xfe\\s\'()]+([|#?].*?)?\\]\\])/'],
+    'cb_qualifylinks');
+
+function cb_qualifylinks($m) { 
+  extract($GLOBALS['tmp_qualify']);
+  return "{$m[1]}$group/{$m[2]}";
+}  
+
+## bare wikilinks
+##    v2.2: markup rule moved to scripts/wikiwords.php)
+Markup('wikilink', '>urllink');
+
+## escaped `WikiWords 
+##    v2.2: rule kept here for markup compatibility with 2.1 and earlier
+Markup('`wikiword', '<wikilink',
+  "/`(($GroupPattern([\\/.]))?($WikiWordPattern))/",
+  "MarkupNoWikiWord");
+function MarkupNoWikiWord($m) { return Keep($m[1]); }
+
+#### Block markups ####
+## Completely blank lines don't do anything.
+Markup('blank', '<block', '/^\\s+$/', '');
+
+## process any <:...> markup (after all other block markups)
+Markup('^<:','>block','/^(?=\\s*\\S)(<:([^>]+)>)?/',"MarkupBlock");
+function MarkupBlock($m) {return Block(@$m[2]);}
+
+## unblocked lines w/block markup become anonymous <:block>
+Markup('^!<:', '<^<:',
+  "/^(?!<:)(?=.*(<\\/?($BlockPattern)\\b)|$KeepToken\\d+B$KeepToken)/",
+  '<:block>');
+
+## Lines that begin with displayed images receive their own block.  A
+## pipe following the image indicates a "caption" (generates a linebreak).
+Markup('^img', 'block',
+  "/^((?>(\\s+|%%|%[A-Za-z][-,=:#\\w\\s'\".]*%)*)$KeepToken(\\d+L)$KeepToken)(\\s*\\|\\s?)?(.*)$/",
+  "ImgCaptionDiv");
+function ImgCaptionDiv($m) {
+  global $KPV;
+  if (strpos($KPV[$m[3]], '<img')===false) return $m[0];
+  $dclass = 'img';
+  $ret = $m[1];
+  if ($m[4]) {
+    $dclass .= " imgcaption";
+    $ret .= "<br /><span class='caption'>$m[5]</span>";
+  }
+  elseif (! $m[5]) $dclass .= " imgonly";
+  else $ret .= $m[5];
+  return "<:block,1><div class='$dclass'>$ret</div>";
+}
+
+## Whitespace at the beginning of lines can be used to maintain the
+## indent level of a previous list item, or a preformatted text block.
+Markup('^ws', '<^img', '/^\\s+ #1/x', "WSIndent");
+function WSIndent($i) {
+  if(is_array($i)) $i = $i[0];
+  global $MarkupFrame;
+  $icol = strlen($i);
+  for($depth = count(@$MarkupFrame[0]['cs']); $depth > 0; $depth--)
+    if (@$MarkupFrame[0]['is'][$depth] == $icol) {
+      $MarkupFrame[0]['idep'] = $depth;
+      $MarkupFrame[0]['icol'] = $icol;
+      return '';
+    }
+  return $i;
+}
+
+## The $EnableWSPre setting uses leading spaces on markup lines to indicate
+## blocks of preformatted text.
+SDV($EnableWSPre, 1);
+Markup('^ ', 'block',
+  '/^\\s+ #2/x',
+  "MarkupWSPre");
+function MarkupWSPre($m) {
+  global $EnableWSPre;
+  return ($EnableWSPre > 0 && strlen($m[0]) >= $EnableWSPre)
+     ? '<:pre,1>'.$m[0] : $m[0];
+}
+## bullet lists
+Markup('^*','block','/^(\\*+)\\s?(\\s*)/','<:ul,$1,$0>$2');
+
+## numbered lists
+Markup('^#','block','/^(#+)\\s?(\\s*)/','<:ol,$1,$0>$2');
+
+## indented (->) /hanging indent (-<) text
+Markup('^->','block','/^(?>(-+))&gt;\\s?(\\s*)/','<:indent,$1,$1  $2>$2');
+Markup('^-<','block','/^(?>(-+))&lt;\\s?(\\s*)/','<:outdent,$1,$1  $2>$2');
+
+## definition lists
+Markup('^::','block','/^(:+)(\s*)([^:]+):/','<:dl,$1,$1$2><dt>$2$3</dt><dd>');
+
+## Q: and A:
+Markup('^Q:', 'block', '/^Q:(.*)$/', "<:block,1><p class='question'>$1</p>");
+Markup('^A:', 'block', '/^A:/', Keep(''));
+
+## tables
+function MarkupTables($m) {
+  extract($GLOBALS["MarkupToHTML"]);
+  switch ($markupid) {
+    case 'table': return Cells(@$m[1],@$m[2]);
+    case '^||||': return FormatTableRow($m[0]);
+    case '^||':
+      $GLOBALS['BlockMarkups']['table'][0] = '<table '.SimpleTableAttr($m[1]).'>';
+      return '<:block,1>';
+  }
+}
+
+## ||cell||, ||!header cell||, ||!caption!||
+Markup('^||||', 'block',
+  '/^\\|\\|.*\\|\\|.*$/',
+  "MarkupTables");
+## ||table attributes
+Markup('^||','>^||||','/^\\|\\|(.*)$/',
+  "MarkupTables");
+
+#### (:table:) markup (AdvancedTables)
+Markup('table', '<block',
+  '/^\\(:(table|cell|cellnr|head|headnr|tableend|(?:div\\d*|section\\d*|details\\d*|article\\d*|header|footer|nav|address|aside)(?:end)?)(\\s.*?)?:\\)/i',
+  "MarkupTables");
+Markup('^>>', '<table',
+  '/^&gt;&gt;(.+?)&lt;&lt;(.*)$/',
+  '(:div:)%div $1 apply=div%$2 ');
+Markup('^>><<', '<^>>',
+  '/^&gt;&gt;&lt;&lt;/',
+  '(:divend:)');
+
+Markup('det-summ', '<table', '/(\\(:details[ ].*?)summary=(?:([\'"])(.*?)\\2
+  |(\\S+))(.*?:\\))/xi', '$1$5<summary>$3$4</summary>'); # PITS:01465 
+
+function SimpleTableAttr($attr) {
+  global $SimpleTableDefaultClassName;
+  $qattr = PQA($attr, true, true);
+  if(IsEnabled($SimpleTableDefaultClassName) && !preg_match("/(^| )class='.*?' /", $qattr))
+    $qattr .= "class='$SimpleTableDefaultClassName'";
+  return $qattr;
+}
+
+#### (:table:) markup (AdvancedTables)
+function Cells($name,$attr) {
+  global $MarkupFrame, $EnableTableAutoValignTop;
+  $attr = PQA($attr, true, true);
+  $tattr = @$MarkupFrame[0]['tattr'];
+  $name = strtolower($name);
+  $key = preg_replace('/end$/', '', $name);
+  if (preg_match("/^(?:head|cell)(nr)?$/", $name)) $key = 'cell';
+  $out = '<:block>'.MarkupClose($key);
+  if (substr($name, -3) == 'end') return $out;
+  $cf = & $MarkupFrame[0]['closeall'];
+  if ($name == 'table') $MarkupFrame[0]['tattr'] = $attr; 
+  else if ($key == 'cell') {
+    if (IsEnabled($EnableTableAutoValignTop, 1) && strpos($attr, "valign=")===false)
+      $attr .= " valign='top'";
+    $t = (strpos($name, 'head')===0 ) ? 'th' : 'td';
+    if (!@$cf['table']) {
+       $tattr = @$MarkupFrame[0]['tattr'];
+       $out .= "<table $tattr><tr><$t $attr>";
+       $cf['table'] = '</tr></table>';
+    } else if ( preg_match("/nr$/", $name)) $out .= "</tr><tr><$t $attr>";
+    else $out .= "<$t $attr>";
+    $cf['cell'] = "</$t>";
+  } else {
+    $tag = preg_replace('/\\d+$/', '', $key);
+    $tmp = "<$tag $attr>";
+    if ($tag == 'details') { 
+      $tmp = preg_replace("#(<details.*) summary='(.*?)'(.*)$#", '$1$3<summary>$2</summary>', $tmp);
+    }
+    $out .= $tmp;
+    $cf[$key] = "</$tag>";
+  }
+  return $out;
+}
+
+## headings
+Markup('^!', 'block', '/^(!{1,6})\\s?(.*)$/', "MarkupHeadings");
+function MarkupHeadings($m) {
+  $len = strlen($m[1]);
+  return "<:block,1><h$len>$m[2]</h$len>";
+}
+
+## horiz rule
+Markup('^----','>^->','/^----+/','<:block,1><hr />');
+
+## @2022-01-08T10:07:08Z -> <time datetime=""></time>
+Markup('<time>', '<@@', '/@\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12]\\d|3[01])'
+  .'T([01]\\d|2[0-3]):([0-5]\\d)(:([0-5]\\d))?Z?/i', 'FmtDateTimeZ');
+
+#### special stuff ####
+## (:markup:) for displaying markup examples
+function MarkupMarkup($pagename, $text, $opt = '') {
+  global $MarkupWordwrapFunction, $MarkupWrapTag;
+  SDV($MarkupWordwrapFunction, 'IsEnabled');
+  SDV($MarkupWrapTag, 'pre');
+  $tag = $MarkupWrapTag;
+  $MarkupMarkupOpt = array('class' => 'vert');
+  $opt = array_merge($MarkupMarkupOpt, ParseArgs($opt));
+  if (@$opt['caption']) 
+    $caption = str_replace("'", '&#039;', 
+                           "<caption>{$opt['caption']}</caption>");
+  $class = preg_replace('/[^-\\s\\w]+/', ' ', @$opt['class']);
+  $sep = '';
+  if (strpos($class, 'norender') !== false) $markup2 = '';
+  else {
+    if (strpos($class, 'horiz') === false) $sep = '</tr><tr>';
+    $html = MarkupToHTML($pagename, $text, array('escape' => 0));
+    $markup2 = "<td class='markup2' valign='top'>$html</td>";
+  }
+  $pretext = $MarkupWordwrapFunction($text, ($markup2 xor $sep)? 40:75);
+  $markup1 = @"<td class='markup1' valign='top'><$tag>$pretext</$tag></td>";
+  return Keep(@"<table class='markup $class' align='center'>$caption
+      <tr>$markup1$sep$markup2</tr></table>");
+}
+
+Markup('markup', '<[=',
+  "/\\(:markup(\\s+([^\n]*?))?:\\)[^\\S\n]*\\[([=@])(.*?)\\3\\]/si",
+  "MarkupMarkupMarkup");
+Markup('markupend', '>markup', # $1 only shifts the other matches
+  "/\\(:(markup)(\\s+([^\n]*?))?:\\)[^\\S\n]*\n(.*?)\\(:markupend:\\)/si",
+  "MarkupMarkupMarkup");
+function MarkupMarkupMarkup($m) { # cannot be joined, $markupid resets
+  extract($GLOBALS["MarkupToHTML"]); global $MarkupMarkupLevel;
+  @$MarkupMarkupLevel++;
+  $x = MarkupMarkup($pagename, $m[4], $m[2]);
+  $MarkupMarkupLevel--;
+  return $x;
+}
+
+SDV($HTMLStylesFmt['markup'], "
+  table.markup { border:2px dotted #ccf; width:90%; }
+  td.markup1, td.markup2 { padding-left:10px; padding-right:10px; }
+  table.vert td.markup1 { border-bottom:1px solid #ccf; }
+  table.horiz td.markup1 { width:23em; border-right:1px solid #ccf; }
+  table.markup caption { text-align:left; }
+  div.faq p, div.faq pre { margin-left:2em; }
+  div.faq p.question { margin:1em 0 0.75em 0; font-weight:bold; }
+  div.faqtoc div.faq * { display:none; }
+  div.faqtoc div.faq p.question 
+    { display:block; font-weight:normal; margin:0.5em 0 0.5em 20px; line-height:normal; }
+  div.faqtoc div.faq p.question * { display:inline; }
+  td.markup1 pre { white-space: pre-wrap; }
+  ");
+
+#### Special conditions ####
+## The code below adds (:if date:) conditions to the markup.
+$Conditions['date'] = "CondDate(\$condparm)";
+
+function CondDate($condparm) {
+  global $Now;
+  if (!preg_match('/^(\\S*?)(\\.\\.(\\S*))?(\\s+\\S.*)?$/',
+                  trim($condparm), $match))
+    return false;
+  if ($match[4] == '') { $x0 = $Now; NoCache(); }
+  else { list($x0, $x1) = DRange($match[4]); }
+  if ($match[1] > '') {
+    list($t0, $t1) = DRange($match[1]);
+    if ($x0 < $t0) return false;
+    if ($match[2] == '' && $x0 >= $t1) return false;
+  }
+  if ($match[3] > '') {
+    list($t0, $t1) = DRange($match[3]);
+    if ($x0 >= $t1) return false;
+  }
+  return true;
+}
+
+# This pattern enables the (:encrypt <phrase>:) markup/replace-on-save
+# pattern.
+SDV($ROSPatterns['/\\(:encrypt\\s+([^\\s:=]+).*?:\\)/'], 'cb_encrypt');
+function cb_encrypt($m) { return pmcrypt($m[1]);}
+
+# Table of contents, based on Cookbook:AutoTOC by Petko Yotov
+SDVA($PmTOC, array(
+  'Enable' => 0,
+  'MaxLevel' => 6,
+  'MinNumber' => 3,
+  'ParentElement'=>'',
+  'NumberedHeadings'=>'',
+  'EnableBacklinks'=>0,
+  'EnableQMarkup' => 0,
+  'contents' => XL('Contents'),
+  'hide' => XL('hide'),
+  'show' => XL('show'),
+));
+
+if ($action!='browse') $PmTOC['Enable'] = 0;
+
+Markup("PmTOC", 'directives', '/^\\(:[#*]?(?:toc|tdm).*?:\\)\\s*$/im', 'FmtPmTOC');
+Markup("noPmTOC", 'directives', '/\\(:(no)(?:toc|tdm).*?:\\)/im', 'FmtPmTOC');
+function FmtPmTOC($m) {
+  if (@$m[1]) return Keep('<span class="noPmTOC"></span>');
+  return "<:block,1>".Keep("<div class='PmTOCdiv'></div>");
+}
+SDV($HTMLStylesFmt['PmTOC'], '.noPmTOC, .PmTOCdiv:empty {display:none;}
+.PmTOCdiv { display: inline-block; font-size: 13px; overflow: auto; max-height: 500px;}
+.PmTOCdiv a { text-decoration: none; display: block; line-height: 1;}
+.PmTOCdiv a.pmtoc-indent1 { margin-left: 1em; }
+.PmTOCdiv a.pmtoc-indent2 { margin-left: 2em; }
+.PmTOCdiv a.pmtoc-indent3 { margin-left: 3em; }
+.PmTOCdiv a.pmtoc-indent4 { margin-left: 4em; }
+.PmTOCdiv a.pmtoc-indent5 { margin-left: 5em; }
+.PmTOCdiv a.pmtoc-indent6 { margin-left: 6em; }
+.back-arrow {font-size: .8rem; text-decoration: none; vertical-align: text-top;}
+#PmTOCchk + label {cursor: pointer;}
+#PmTOCchk {display: none;}
+#PmTOCchk:not(:checked) + label > .pmtoc-show {display: none;}
+#PmTOCchk:checked + label > .pmtoc-hide {display: none;}
+#PmTOCchk:checked + label + div {display: none;}');
+
+SDV($HTMLStylesFmt['PmSortable'], 'table.sortable th { cursor: pointer; }
+table.sortable th::after { color: transparent; content: "\00A0\025B8"; }
+table.sortable th:hover::after { color: inherit; content: "\00A0\025B8"; }
+table.sortable th.dir-u::after { color: inherit; content: "\00A0\025BE"; }
+table.sortable th.dir-d::after { color: inherit; content: "\00A0\025B4"; }');
+
+
+# Helper function for recipes
+# Generic Markup directive (:abc params:)...(:abcend:)?
+function AutoMarkupDirective($m) { # all, directive, params?, content?
+  global $MarkupToHTML, $MarkupDirectiveFunctions;
+  extract($MarkupToHTML); # get $pagename
+  @list($all, $directive, $params, $content) = $m;
+  if(!isset($MarkupDirectiveFunctions[$directive])) return Keep($all);
+  
+  $args = ParseArgs(strval(@$params));
+  $content = trim(strval(@$content));
+  
+  return $MarkupDirectiveFunctions[$directive]($pagename, $directive, $args, $content);
+}
+
+if(isset($MarkupDirectiveFunctions)) {
+  $keys = implode('|', array_keys($MarkupDirectiveFunctions));
+  Markup('anydir', 'directives', "/\\(:($keys)(\\s+.*?)?:\\)/s", 'AutoMarkupDirective');
+  Markup('anydir2', '<anydir', "/\\(:($keys)(\\s+.*?)?:\\).*?\\(:\\1end:\\)/s", 'AutoMarkupDirective');
+}
+
blob - /dev/null
blob + 710688f73a24ff6b6d5a490ac4ecb9b2dacd2535 (mode 644)
--- /dev/null
+++ scripts/trails.php
@@ -0,0 +1,140 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2002-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script enables markup of the form <<|TrailPage|>> to be 
+    used to build "trails" through wiki documents.
+
+    This feature is automatically included from stdconfig.php unless
+    disabled by $EnableWikiTrails = 0; .  To explicitly include this feature,
+    execute
+   	include_once("scripts/trails.php");
+    from config.php somewhere.
+
+    Once enabled, the <<|TrailPage|>> markup is replaced with
+    << PrevPage | TrailPage | NextPage >> on output.  TrailPage should
+    contain either a bullet or number list defining the sequence of pages
+    in the "trail".
+
+    The ^|TrailPage|^ markup uses the depth of the bullets to display
+    the ancestry of the TrailPage to the current one.  The <|TrailPage|> 
+    markup is like <<|TrailPage|>> except that "< PrevPage |" and 
+    "| NextPage >" are omitted if at the beginning or end of the 
+    trail respectively.  Thanks to John Rankin for contributing these
+    markups and the original suggestion for WikiTrails.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+Markup('<<|','<links','/&lt;&lt;\\|([^|]+|\\[\\[(.+?)\\]\\])\\|&gt;&gt;/',
+  "MarkupMakeTrail");
+Markup('<|','><<|','/&lt;\\|([^|]+|\\[\\[(.+?)\\]\\])\\|&gt;/',
+  "MarkupMakeTrail");
+Markup('^|','<links','/\\^\\|([^|]+|\\[\\[(.+?)\\]\\])\\|\\^/',
+  "MarkupMakeTrail");
+
+function MarkupMakeTrail($m) {
+  extract($GLOBALS["MarkupToHTML"]); # get $pagename, $markupid
+  switch ($markupid) {
+    case '<<|': 
+      return PRR(MakeTrailStop($pagename,$m[1]));
+    case '<|': 
+      return PRR(MakeTrailStopB($pagename,$m[1]));
+    case '^|': 
+      return PRR(MakeTrailPath($pagename,$m[1]));
+  }
+}
+
+SDVA($SaveAttrPatterns, array(
+   '/<<\\|([^|]+|\\[\\[(.+?)\\]\\])\\|>>/' => '$1',
+   '/<\\|([^|]+|\\[\\[(.+?)\\]\\])\\|>/' => '$1',
+   '/\\^\\|([^|]+|\\[\\[(.+?)\\]\\])\\|\\^/' => '$1'));
+
+$Conditions['ontrail'] = 'CondOnTrail($pagename, $condparm)';
+
+function CondOnTrail($pagename, $condparm) {
+  @list($trailname, $pn) = preg_split('/\\s+/', $condparm, 2);
+  $trail = ReadTrail($pagename, $trailname);
+  if (!$trail) return false;
+  $pn = ($pn > '') ? MakePageName($pagename, $pn) : $pagename;
+  foreach($trail as $t)
+    if ($t['pagename'] == $pn) return true;
+  return false;
+}
+
+function ReadTrail($pagename, $trailname) {
+  global $RASPageName, $SuffixPattern, $GroupPattern, $WikiWordPattern,
+    $LinkWikiWords;
+  if (preg_match('/^\\[\\[(.+?)(-&gt;|\\|)(.+?)\\]\\]$/', $trailname, $m)) 
+    $trailname = ($m[2] == '|') ? $m[1] : $m[3];
+  $trailtext = RetrieveAuthSection($pagename, $trailname);
+  $trailname = $RASPageName;
+  $trailtext = Qualify($trailname, $trailtext);
+  $t = array();
+  $n = 0;
+  foreach(explode("\n", PHSC(@$trailtext, ENT_NOQUOTES)) 
+          as $x) {
+    $x = preg_replace("/\\[\\[([^\\]]*)-&gt;([^\\]]*)\\]\\]/",'[[$2|$1]]',$x);
+    if (!preg_match("/^([#*:]+) \\s* 
+          (\\[\\[([^:#!|][^|:]*?)(?:\".*?\")?(\\|.*?)?\\]\\]($SuffixPattern)
+          | (($GroupPattern([\\/.]))?$WikiWordPattern)) (.*)/x",$x,$match))
+       continue;
+    if (@$match[6]) {
+       if (!$LinkWikiWords) continue;
+       $tgt = MakePageName($trailname, $match[6]);
+    } else $tgt = MakePageName($trailname, $match[3]);
+    $t[$n]['depth'] = $depth = strlen($match[1]);
+    $t[$n]['pagename'] = $tgt;
+    $t[$n]['markup'] = $match[2];
+    $t[$n]['detail'] = $match[9];
+    for($i=$depth;$i<10;$i++) $d[$i]=$n;
+    if ($depth>1) $t[$n]['parent']=@$d[$depth-1];
+    $n++;
+  }
+  return $t;
+}
+
+function MakeTrailStop($pagename,$trailname) {
+  $t = ReadTrail($pagename,$trailname);
+  $prev=''; $next='';
+  for($i=0;$i<count($t);$i++) {
+    if ($t[$i]['pagename']==$pagename) {
+      if ($i>0) $prev = $t[$i-1]['markup'];
+      if ($i+1<count($t)) $next = $t[$i+1]['markup'];
+    }
+  }
+  return "<span class='wikitrail'>&lt;&lt; $prev | $trailname | $next &gt;&gt;</span>";
+}
+
+function MakeTrailStopB($pagename,$trailname) {
+  $t = ReadTrail($pagename,$trailname);
+  $prev = ''; $next = '';
+  for($i=0;$i<count($t);$i++) {
+    if ($t[$i]['pagename']==$pagename) {
+      if ($i>0) $prev = '&lt; '.$t[$i-1]['markup'].' | ';
+      if ($i+1<count($t)) $next = ' | '.$t[$i+1]['markup'].' &gt;';
+    }
+  }
+  return "<span class='wikitrail'>$prev$trailname$next</span>";
+} 
+
+function MakeTrailPath($pagename,$trailname) {
+  global $TrailPathSep;
+  SDV($TrailPathSep,' | ');
+  $t = ReadTrail($pagename,$trailname);
+  $crumbs = '';
+  for($i=0;$i<count($t);$i++) {
+    if ($t[$i]['pagename']==$pagename) {
+      while (@$t[$i]['depth']>0) {
+        $crumbs = $TrailPathSep.$t[$i]['markup'].$crumbs;
+        $i = @$t[$i]['parent'];
+      }
+      return "<span class='wikitrail'>$trailname$crumbs</span>";
+    }
+  }
+  return "<span class='wikitrail'>$trailname</span>";
+}
+
blob - /dev/null
blob + 763d2b74075efbe8047eb2cfcbdfefd414c2c3c7 (mode 644)
--- /dev/null
+++ scripts/transition.php
@@ -0,0 +1,279 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2005-2017 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script handles various "fixup transitions" that might need to 
+    occur to help existing sites smoothly upgrade to newer releases of 
+    PmWiki.  Rather than put the workarounds in the main code files, we 
+    try to centralize them here so we can see what's deprecated and a
+    simple switch (?trans=0 in the url) can tell the admin if his site 
+    is relying on an outdated feature or way of doing things.
+
+    Transitions defined in this script:
+
+      $Transition['nosessionencode']    - turn off session encoding
+
+      $Transition['version'] < 2001967  - all transitions listed above
+
+      $Transition['wspre']              - leading spaces are pre text
+
+      $Transition['version'] < 2001941  - all transitions listed above
+
+      $Transition['wikiwords']          - 2.1-style WikiWord processing
+
+      $Transition['version'] < 2001924  - all transitions listed above
+
+      $Transition['abslinks']           - absolute links/page vars
+
+      $Transition['version'] < 2001901  - all transitions listed above
+
+      $Transition['vspace']             - restore <p class='vspace'></p>
+
+      $Transition['version'] < 2001006  - all transitions listed above
+
+      $Transition['fplbygroup']         - restore FPLByGroup function
+
+      $Transition['version'] < 2000915  - all transitions listed above
+    
+      $Transition['mainrc']             - keep using Main.AllRecentChanges
+      $Transition['mainapprovedurls']   - keep using Main.ApprovedUrls
+      $Transition['pageeditfmt']        - default $PageEditFmt value
+      $Transition['mainpages']          - other default pages in Main
+
+      $Transition['version'] < 1999944  - all transitions listed above
+
+    To get all of the transitions for compatibility with a previous
+    version of PmWiki, simply set $Transition['version'] in a local
+    configuration file to the version number you want compatibility
+    with.  All of the transitions associated with that version will
+    then be enabled. Example:
+
+            # Keep compatibility with PmWiki version 2.0.13
+            $Transition['version'] = 2000013;
+
+    To explicitly enable or disable specific transitions, set
+    the corresponding $Transition[] element to 1 or 0.  This will 
+    override the $Transition['version'] item listed above.  For 
+    example, to enable just the 'pageeditfmt' transition, use
+
+            $Transition['pageeditfmt'] = 1;
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+## if ?trans=0 is specified, then we don't do any fixups.
+if (@$_REQUEST['trans']==='0') return;
+
+## set a default Transition version if we don't have one
+SDV($Transition['version'], $VersionNum);
+
+## Transitions from 2.2.0-beta67
+if (@$Transition['version'] < 2001967)
+  SDVA($Transition, array('nosessionencode' => 1));
+
+if (@$Transition['nosessionencode']) {
+  $SessionEncode = NULL;
+  $SessionDecode = NULL;
+}
+
+## Transitions from 2.2.0-beta41
+if (@$Transition['version'] < 2001941)
+  SDVA($Transition, array('wspre' => 1));
+
+if (@$Transition['wspre']) SDV($EnableWSPre, 1);
+
+## Transitions from 2.2.0-beta24
+if (@$Transition['version'] < 2001924)
+  SDVA($Transition, array('wikiwords' => 1));
+
+## wikiwords:
+##   This restores the PmWiki 2.1 behavior for WikiWord processing.
+##   WikiWords aren't linked by default, but appear with
+##   <span class='wikiword'>...</span> tags around them.
+if (@$Transition['wikiwords']) {
+  SDV($EnableWikiWords, 1);
+  SDV($LinkWikiWords, 0);
+}
+
+## Transitions from 2.2.0-beta1
+if (@$Transition['version'] < 2001901) 
+  SDVA($Transition, array('abslinks' => 1));
+
+## abslinks:
+##   This restores settings so that PmWiki treats all links
+##   as absolute (following the 2.1.x and earlier interpretation).
+if (@$Transition['abslinks']) {
+  SDV($EnableRelativePageLinks, 0);
+  SDV($EnableRelativePageVars, 0);
+}
+
+## Transitions from 2.1.12
+
+if (@$Transition['version'] < 2001012) 
+  SDVA($Transition, array('nodivnest' => 1));
+
+## nodivnest:
+##   This restores the PmWiki 2.1.11 behavior that doesn't
+##   allow nesting of divs and tables.
+if (@$Transition['nodivnest']) {
+  function TCells($m) {
+    list($x, $name, $attr) = $m;
+    global $MarkupFrame;
+    $attr = preg_replace('/([a-zA-Z]=)([^\'"]\\S*)/',"\$1'\$2'",$attr);
+    $tattr = @$MarkupFrame[0]['tattr'];
+    $name = strtolower($name);
+    $out = '<:block>';
+    if (strncmp($name, 'cell', 4) != 0 || @$MarkupFrame[0]['closeall']['div']) {
+      $out .= @$MarkupFrame[0]['closeall']['div'];
+      unset($MarkupFrame[0]['closeall']['div']);
+      $out .= @$MarkupFrame[0]['closeall']['table'];
+      unset($MarkupFrame[0]['closeall']['table']);
+    }
+    if ($name == 'div') {
+      $MarkupFrame[0]['closeall']['div'] = "</div>";
+      $out .= "<div $attr>";
+    }
+    if ($name == 'table') $MarkupFrame[0]['tattr'] = $attr;
+    if (strncmp($name, 'cell', 4) == 0) {
+      if (strpos($attr, "valign=")===false) $attr .= " valign='top'";
+      if (!@$MarkupFrame[0]['closeall']['table']) {
+        $MarkupFrame[0]['closeall']['table'] = "</td></tr></table>";
+        $out .= "<table $tattr><tr><td $attr>";
+      } else if ($name == 'cellnr') $out .= "</td></tr><tr><td $attr>";
+      else $out .= "</td><td $attr>";
+    }
+    return $out;
+  }
+
+  Markup('table', '<block',
+    '/^\\(:(table|cell|cellnr|tableend|div|divend)(\\s.*?)?:\\)/i',
+    "TCells");
+}
+
+
+## Transitions from 2.1.7
+
+if (@$Transition['version'] < 2001007)
+  SDVA($Transition, array('vspace' => 1));
+
+## vspace:
+##   This restores PmWiki's use of <p class='vspace'></p> to mark
+##   vertical space in the output.
+if (@$Transition['vspace']) $HTMLVSpace = "<p class='vspace'></p>";
+
+
+## Transitions from 2.1.beta15
+
+if (@$Transition['version'] < 2000915) 
+  SDVA($Transition, array('fplbygroup' => 1));
+
+## fplbygroup:
+##   The FPLByGroup function was removed in 2.1.beta15, this restores it.
+if (@$Transition['fplbygroup'] && !function_exists('FPLByGroup')) {
+  SDV($FPLFormatOpt['bygroup'], array('fn' => 'FPLByGroup'));
+  function FPLByGroup($pagename, &$matches, $opt) {
+    global $FPLByGroupStartFmt, $FPLByGroupEndFmt, $FPLByGroupGFmt,
+      $FPLByGroupIFmt, $FPLByGroupOpt;
+    SDV($FPLByGroupStartFmt,"<dl class='fplbygroup'>");
+    SDV($FPLByGroupEndFmt,'</dl>');
+    SDV($FPLByGroupGFmt,"<dt><a href='\$ScriptUrl/\$Group'>\$Group</a> /</dt>\n");
+    SDV($FPLByGroupIFmt,"<dd><a href='\$PageUrl'>\$Name</a></dd>\n");
+    SDVA($FPLByGroupOpt, array('readf' => 0, 'order' => 'name'));
+    $matches = MakePageList($pagename, 
+                            array_merge((array)$FPLByGroupOpt, $opt), 0);
+    if (@$opt['count']) array_splice($matches, $opt['count']);
+    if (count($matches)<1) return '';
+    $out = '';
+    foreach($matches as $pn) {
+      $pgroup = FmtPageName($FPLByGroupGFmt, $pn);
+      if ($pgroup != @$lgroup) { $out .= $pgroup; $lgroup = $pgroup; }
+      $out .= FmtPageName($FPLByGroupIFmt, $pn);
+    }
+    return FmtPageName($FPLByGroupStartFmt, $pagename) . $out .
+           FmtPageName($FPLByGroupEndFmt, $pagename);
+  }
+}
+
+## Transitions from 2.0.beta44
+
+if (@$Transition['version'] < 1999944) 
+  SDVA($Transition, array('mainrc' => 1, 'mainapprovedurls' => 1,
+    'pageeditfmt' => 1, 'mainpages' => 1));
+
+## mainrc:
+##   2.0.beta44 switched Main.AllRecentChanges to be 
+##   $SiteGroup.AllRecentChanges.  This setting keeps Main.AllRecentChanges
+##   if it exists.
+if (@$Transition['mainrc'] && PageExists('Main.AllRecentChanges')) {
+  SDV($RecentChangesFmt['Main.AllRecentChanges'],
+    '* [[$Group.$Name]]  . . . $CurrentTime $[by] $AuthorLink');
+}
+
+## siteapprovedurls:
+##   2.0.beta44 switched Main.ApprovedUrls to be $SiteGroup.ApprovedUrls .
+##   This setting keeps using Main.ApprovedUrls if it exists.
+if (@$Transition['mainapprovedurls'] && PageExists('Main.ApprovedUrls')) {
+  $ApprovedUrlPagesFmt = (array)$ApprovedUrlPagesFmt;
+  if (PageExists(FmtPageName($ApprovedUrlPagesFmt[0], $pagename))) 
+    $ApprovedUrlPagesFmt[] = 'Main.ApprovedUrls';
+  else array_unshift($ApprovedUrlPagesFmt, 'Main.ApprovedUrls');
+}
+
+## pageeditfmt:
+##   2.0.beta44 switched to using wiki markup forms for page editing.
+##   However, some sites and skins have customized values of $PageEdit.
+##   This setting restores the default values.
+if (@$Transition['pageeditfmt']) {
+  SDV($PageEditFmt, "<div id='wikiedit'>
+    <a id='top' name='top'></a>
+    <h1 class='wikiaction'>$[Editing \$FullName]</h1>
+    <form method='post' action='\$PageUrl?action=edit'>
+    <input type='hidden' name='action' value='edit' />
+    <input type='hidden' name='n' value='\$FullName' />
+    <input type='hidden' name='basetime' value='\$EditBaseTime' />
+    \$EditMessageFmt
+    <textarea id='text' name='text' rows='25' cols='60'
+      onkeydown='if (event.keyCode==27) event.returnValue=false;'
+      >\$EditText</textarea><br />
+    $[Author]: <input type='text' name='author' value='\$Author' />
+    <input type='checkbox' name='diffclass' value='minor' \$DiffClassMinor />
+      $[This is a minor edit]<br />
+    <input type='submit' name='post' value=' $[Save] ' />
+    <input type='submit' name='preview' value=' $[Preview] ' />
+    <input type='reset' value=' $[Reset] ' /></form></div>");
+  if (@$_POST['preview']) 
+    SDV($PagePreviewFmt, "<div id='wikipreview'>
+      <h2 class='wikiaction'>$[Preview \$FullName]</h2>
+      <p><b>$[Page is unsaved]</b></p>
+      \$PreviewText
+      <hr /><p><b>$[End of preview -- remember to save]</b><br />
+      <a href='#top'>$[Top]</a></p></div>");
+  SDV($HandleEditFmt, array(&$PageStartFmt,
+    &$PageEditFmt, 'wiki:$[PmWiki.EditQuickReference]', &$PagePreviewFmt,
+    &$PageEndFmt));
+  $EditMessageFmt = implode('', $MessagesFmt) . $EditMessageFmt;
+  if ($action=='edit' && IsEnabled($EnableGUIButtons, 0)) 
+    array_push($EditFunctions, 'GUIEdit');
+} else $MessagesFmt[] = @$EditMessageFmt;
+
+    
+function GUIEdit($pagename, &$page, &$new) {
+  global $EditMessageFmt;
+  $EditMessageFmt .= GUIButtonCode($pagename);
+}
+
+## mainpages:
+##   In 2.0.beta44 several utility pages change location to the new Site
+##   group.  These settings cause some skins (that use translations)
+##   to know to link to the new locations.
+if (@$Transition['mainpages']) {
+  XLSDV('en', array(
+    'Main/SearchWiki' => XL('Site/Search'),
+    'PmWiki.EditQuickReference' => XL('Site/EditQuickReference'),
+    'PmWiki.UploadQuickReference' => XL('Site/UploadQuickReference'),
+    ));
+}
+
blob - /dev/null
blob + 18db1156c49cf9dd205d194ff7bc6bddb3120aa8 (mode 644)
--- /dev/null
+++ scripts/upgrades.php
@@ -0,0 +1,100 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2007-2015 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+global $HandleActions, $HandleAuth;
+
+$HandleActions['upgrade'] = 'HandleUpgrade';
+$HandleAuth['upgrade'] = 'read';
+
+function HandleUpgrade($pagename, $auth = 'ALWAYS') {
+  global $SiteGroup, $SiteAdminGroup, $StatusPageName, $ScriptUrl,
+    $AuthUserPageFmt, $VersionNum, $Version;
+  StopWatch('HandleUpgrade: begin');
+
+  $message = '';
+  $done = '';
+  ##  check for Site.* --> SiteAdmin.*
+  foreach(array('AuthUser', 'NotifyList', 'Blocklist', 'ApprovedUrls') as $n) {
+    $n0 = "$SiteGroup.$n"; $n1 = "$SiteAdminGroup.$n";
+    StopWatch("HandleUpgrade: checking $n0 -> $n1");
+    ## checking AuthUser is special, because Site.AuthUser comes with the
+    ## distribution.
+    if ($n == 'AuthUser') {
+      ##  if we already have a user-modified SiteAdmin.AuthUser, we can skip
+      SDV($AuthUserPageFmt, '$SiteAdminGroup.AuthUser');
+      $n1 = FmtPageName($AuthUserPageFmt, $pagename);
+      $page = ReadPage($n1, READPAGE_CURRENT);
+      if (@$page['time'] > 1000000000) continue;
+      ##  if there's not a user-modified Site.AuthUser, we can skip
+      $page = ReadPage($n0, READPAGE_CURRENT);
+      if (@$page['time'] == 1000000000) continue;
+    } else if (!PageExists($n0) || PageExists($n1)) continue;
+
+    if (@$_REQUEST['migrate'] == 'yes') {
+      ##  if the admin wants PmWiki to migrate, do it.
+      $page = RetrieveAuthPage($n0, 'admin', true);
+      StopWatch("HandleUpgrade: copying $n0 -> $n1");
+      if ($page) { 
+        WritePage($n1, $page); 
+        $done .= "<li>Copied $n0 to $n1</li>";
+        continue; 
+      }
+    }
+    $message .= "<li>$n0 -&gt; $n1</li>";
+  }
+
+  if ($message) {
+    $migrateurl = "$ScriptUrl?action=upgrade&amp;migrate=yes";
+    $infourl = 'http://www.pmwiki.org/wiki/PmWiki/UpgradeToSiteAdmin';
+    $message = 
+      "<h2>Upgrade notice -- SiteAdmin group</h2>
+      <p>This version of PmWiki expects several administrative pages 
+      from the <em>Site</em> group to be found in a new <em>SiteAdmin</em> group.  
+      On this site, the following pages appear to need to be relocated:</p>
+      <ul>$message</ul>
+
+      <p>For more information about this change, including the various
+      options for proceeding, see</p>
+      <blockquote><a target='_blank' href='$infourl'>$infourl</a></blockquote>
+
+      <form action='$ScriptUrl' method='post'>
+      <p>If you would like PmWiki to attempt to automatically copy 
+      these pages into their new <br /> locations for you, try 
+        <input type='hidden' name='action' value='upgrade' />
+        <input type='hidden' name='migrate' value='yes' />
+        <input type='submit' value='Relocate pages listed above' /> 
+        (admin password required) </p>
+      </form>
+
+      <p>If you want to configure PmWiki so that it continues to
+      look for the above pages in <em>$SiteGroup</em>, add the
+      following line near the top of <em>local/config.php</em>:</p>
+
+      <blockquote><pre>\$SiteAdminGroup = \$SiteGroup;</pre></blockquote>
+
+      $Version
+      ";
+    print $message;
+    exit;
+  }
+
+  StopWatch("UpgradeCheck: writing $StatusPageName");
+  Lock(2);
+  SDV($StatusPageName, "$SiteAdminGroup.Status");
+  $page = ReadPage($StatusPageName);
+  $page['updatedto'] = $VersionNum;
+  WritePage($StatusPageName, $page);
+
+  if ($done) {
+    $done .= "<li>Updated $StatusPageName</li>";
+    echo "<h2>Upgrade to $Version ... ok</h2><ul>$done</ul>";
+    $GLOBALS['EnableRedirect'] = 0;
+  }
+  Redirect($pagename);
+}
blob - /dev/null
blob + be0d979e46599be6112b741139f871e12e3da0ce (mode 644)
--- /dev/null
+++ scripts/upload.php
@@ -0,0 +1,476 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script adds upload capabilities to PmWiki.  Uploads can be
+    enabled by setting
+        $EnableUpload = 1;
+    in config.php.  In addition, an upload password must be set, as
+    the default is to lock uploads.  In some configurations it may also
+    be necessary to set values for $UploadDir and $UploadUrlFmt,
+    especially if any form of URL rewriting is being performed.
+    See the PmWiki.UploadsAdmin page for more information.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+## $EnableUploadOverwrite determines if we allow previously uploaded
+## files to be overwritten.
+SDV($EnableUploadOverwrite,1);
+
+## $UploadExts contains the list of file extensions we're willing to
+## accept, along with the Content-Type: value appropriate for each.
+SDVA($UploadExts,array(
+  'gif' => 'image/gif', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg',
+  'png' => 'image/png', 'apng' => 'image/apng', 'bmp' => 'image/bmp', 'ico' => 'image/x-icon',
+  'wbmp'=> 'image/vnd.wap.wbmp', 'xcf' => 'image/x-xcf', 'webp' => 'image/webp',
+  'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml',
+  'mp3' => 'audio/mpeg', 'au' => 'audio/basic', 'wav' => 'audio/x-wav',
+  'ogg' => 'audio/ogg', 'flac' => 'audio/x-flac', 'opus' => 'audio/opus', 
+  'ogv' => 'video/ogg', 'mp4' => 'video/mp4', 'webm' => 'video/webm',
+  'mpg' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'mkv' => 'video/x-matroska',
+  'm4v' => 'video/x-m4v', '3gp' => 'video/3gpp',
+  'mov' => 'video/quicktime', 'qt' => 'video/quicktime',
+  'wmf' => 'text/plain', 'avi' => 'video/x-msvideo',
+  'zip' => 'application/zip', '7z' => 'application/x-7z-compressed',
+  'gz'  => 'application/x-gzip', 'tgz' => 'application/x-gzip',
+  'rpm' => 'application/x-rpm', 
+  'hqx' => 'application/mac-binhex40', 'sit' => 'application/x-stuffit',
+  'doc' => 'application/msword', 'ppt' => 'application/vnd.ms-powerpoint',
+  'xls' => 'application/vnd.ms-excel', 'mdb' => 'text/plain',
+  'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+  'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
+  'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+  'exe' => 'application/octet-stream',
+  'pdf' => 'application/pdf', 'psd' => 'text/plain', 
+  'ps'  => 'application/postscript', 'ai' => 'application/postscript',
+  'eps' => 'application/postscript',
+  'htm' => 'text/html', 'html' => 'text/html', 'css' => 'text/css', 
+  'fla' => 'application/x-shockwave-flash', 
+  'swf' => 'application/x-shockwave-flash',
+  'txt' => 'text/plain', 'rtf' => 'application/rtf', 
+  'tex' => 'application/x-tex', 'dvi' => 'application/x-dvi',
+  'odt' => 'application/vnd.oasis.opendocument.text',
+  'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
+  'odp' => 'application/vnd.oasis.opendocument.presentation',
+  'odg' => 'application/vnd.oasis.opendocument.graphics',
+  'epub'=> 'application/epub+zip',
+  'kml' => 'application/vnd.google-earth.kml+xml',
+  'kmz' => 'application/vnd.google-earth.kmz',
+  'vtt' => 'text/vtt',
+  '' => 'text/plain'));
+
+# Array containing forbidden strings in a filename, array('.php', '.cgi')
+SDV($UploadBlacklist, array());
+
+SDV($UploadMaxSize,50000);
+SDV($UploadPrefixQuota,0);
+SDV($UploadDirQuota,0);
+foreach($UploadExts as $k=>$v) 
+  if (!isset($UploadExtSize[$k])) $UploadExtSize[$k]=$UploadMaxSize;
+
+SDV($UploadDir,'uploads');
+SDV($UploadPermAdd,0444);
+SDV($UploadPermSet,0);
+SDV($UploadPrefixFmt,'/$Group');
+SDV($UploadFileFmt,"$UploadDir$UploadPrefixFmt");
+$v = preg_replace('#^/(.*/)#', '', $UploadDir);
+SDV($UploadUrlFmt,preg_replace('#/[^/]*$#', "/$v", $PubDirUrl, 1));
+SDV($LinkUploadCreateFmt, "<a rel='nofollow' class='createlinktext' href='\$LinkUpload'>\$LinkText</a><a rel='nofollow' class='createlink' href='\$LinkUpload'>&nbsp;&Delta;</a>");
+SDVA($ActionTitleFmt, array('upload' => '| $[Attach]'));
+
+
+if ($EnablePostAuthorRequired)
+  SDV($EnableUploadAuthorRequired, $EnablePostAuthorRequired);
+
+SDV($PageUploadFmt,array("
+  <div id='wikiupload'>
+  <h2 class='wikiaction'>$[Attachments for] {\$FullName}</h2>
+  <h3>\$UploadResult</h3>
+  <form enctype='multipart/form-data' action='{\$PageUrl}?action=postupload' method='post'>
+  <input type='hidden' name='n' value='{\$FullName}' />
+  <input type='hidden' name='action' value='postupload' />
+  <input type='hidden' name='\$TokenName' value='\$TokenValue' />
+  <table border='0'>
+    <tr><td align='right'>$[File to upload:]</td><td><input
+      name='uploadfile' type='file' required='required' /></td></tr>
+    <tr><td align='right'>$[Name attachment as:]</td>
+      <td><input type='text' name='upname' value='\$UploadName' />
+        </td></tr>
+    <tr><td align='right'>$[Uploader]:</td>
+      <td><input type='text' name='author' value='\$UploadAuthor' \$UploadAuthorRequired />
+        <input type='submit' value=' $[Upload] ' />
+        </td></tr></table></form></div>",
+  'wiki:$[{$SiteGroup}/UploadQuickReference]'));
+XLSDV('en',array(
+  'ULby' => 'uploaded by',
+  'ULsuccess' => 'successfully uploaded',
+  'ULinvalidtoken' => 'Token invalid or missing.',
+  'ULauthorrequired' => 'An author name is required.',
+  'ULbadname' => 'invalid attachment name',
+  'ULbadtype' => '\'$upext\' is not an allowed file extension',
+  'ULtoobig' => 'file is larger than maximum allowed by webserver',
+  'ULtoobigext' => 'file is larger than allowed maximum of $upmax
+     bytes for \'$upext\' files',
+  'ULpartial' => 'incomplete file received',
+  'ULnofile' => 'no file uploaded',
+  'ULexists' => 'file with that name already exists',
+  'ULpquota' => 'group quota exceeded',
+  'ULtquota' => 'upload quota exceeded'));
+SDV($PageAttributes['passwdupload'],'$[Set new upload password:]');
+SDV($DefaultPasswords['upload'],'@lock');
+SDV($AuthCascade['upload'], 'read');
+SDV($FmtPV['$PasswdUpload'], 'PasswdVar($pn, "upload")');
+
+Markup('attachlist', 'directives',
+  '/\\(:attachlist\\s*(.*?):\\)/i',
+  "MarkupFmtUploadList");
+function MarkupFmtUploadList($m) {
+  extract($GLOBALS["MarkupToHTML"]); # get $pagename
+  return Keep('<ul>'.FmtUploadList($pagename,$m[1]).'</ul>');
+}
+SDV($GUIButtons['attach'], array(220, 'Attach:', '', '$[file.ext]',
+  '$GUIButtonDirUrlFmt/attach.gif"$[Attach file]"'));
+SDV($LinkFunctions['Attach:'], 'LinkUpload');
+SDV($IMap['Attach:'], '$1');
+SDVA($HandleActions, array('upload' => 'HandleUpload',
+  'postupload' => 'HandlePostUpload',
+  'download' => 'HandleDownload'));
+SDVA($HandleAuth, array('upload' => 'upload',
+  'download' => 'read'));
+SDV($HandleAuth['postupload'], $HandleAuth['upload']);
+SDV($UploadVerifyFunction, 'UploadVerifyBasic');
+
+function MakeUploadName($pagename,$x) {
+  global $UploadNameChars, $MakeUploadNamePatterns;
+  SDV($UploadNameChars, "-\\w. ");
+  SDV($MakeUploadNamePatterns, array(
+    "/[^$UploadNameChars]/" => '',
+    '/(\\.[^.]*)$/' => 'cb_tolower',
+    '/^[^[:alnum:]_]+/' => '',
+    '/[^[:alnum:]_]+$/' => ''));
+   return PPRA($MakeUploadNamePatterns, $x);
+}
+
+##  This helper function returns the public URL for an attached file
+function DownloadUrl($pagename, $path) {
+  global $FmtV, $UploadFileFmt,
+    $UploadUrlFmt, $UploadPrefixFmt, $EnableDirectDownload;
+  if (preg_match('!^(.*)/([^/]+)$!', $path, $match)) {
+    $pagename = MakePageName($pagename, $match[1]);
+    $path = $match[2];
+  }
+  $upname = MakeUploadName($pagename, $path);
+  $encname = rawurlencode($upname);
+  $filepath = FmtPageName("$UploadFileFmt/$upname", $pagename);
+  $FmtV['$LinkUpload'] =
+    FmtPageName("\$PageUrl?action=upload&amp;upname=$encname", $pagename);
+  $FmtV['$LinkDownload'] = PUE(FmtPageName(IsEnabled($EnableDirectDownload, 1) 
+      ? "$UploadUrlFmt$UploadPrefixFmt/$encname"
+      : "{\$PageUrl}?action=download&amp;upname=$encname",
+    $pagename));
+  if (!file_exists($filepath)) return false;
+  return $FmtV['$LinkDownload'];
+}
+
+function LinkUpload($pagename, $imap, $path, $alt, $txt, $fmt=NULL) {
+  global $FmtV, $LinkUploadCreateFmt;
+  $FmtV['$LinkText'] = $txt;
+  $path = DownloadUrl($pagename, $path);
+  if(!$path) return FmtPageName($LinkUploadCreateFmt, $pagename);
+  return LinkIMap($pagename, $imap, $path, $alt, $txt, $fmt);
+}
+
+# Authenticate group downloads with the group password
+function UploadAuth($pagename, $auth, $cache=0){
+  global $GroupAttributesFmt, $EnableUploadGroupAuth;
+  if (IsEnabled($EnableUploadGroupAuth,0)){
+    SDV($GroupAttributesFmt,'$Group/GroupAttributes');
+    $pn_upload = FmtPageName($GroupAttributesFmt, $pagename);
+  } else $pn_upload = $pagename;
+  $page = RetrieveAuthPage($pn_upload, $auth, true, READPAGE_CURRENT);
+  if (!$page) Abort("?No '$auth' permissions for $pagename");
+  if ($cache) PCache($pn_upload,$page);
+  return true;
+}
+
+function UploadSetVars($pagename) {
+  global $Author, $FmtV, $UploadExtMax, $EnableReadOnly,
+    $EnablePostAuthorRequired, $EnableUploadAuthorRequired;
+  $FmtV['$UploadName'] = MakeUploadName($pagename,@$_REQUEST['upname']);
+  $FmtV['$UploadAuthor'] = PHSC($Author,  ENT_QUOTES);
+  $upresult = PHSC(@$_REQUEST['upresult']);
+  $uprname = PHSC(@$_REQUEST['uprname']);
+  $FmtV['$upext'] = PHSC(@$_REQUEST['upext']);
+  $FmtV['$upmax'] = PHSC(@$_REQUEST['upmax']);
+  $FmtV['$TokenValue'] = pmtoken();
+  $FmtV['$UploadResult'] = ($upresult) ?
+    FmtPageName("<i>$uprname</i>: $[UL$upresult]",$pagename) : 
+      (@$EnableReadOnly ? XL('Cannot modify site -- $EnableReadOnly is set'): '');
+  $FmtV['$UploadAuthorRequired'] = @$EnableUploadAuthorRequired ?
+    'required="required"' : '';
+}
+
+function HandleUpload($pagename, $auth = 'upload') {
+  global $HandleUploadFmt,$PageStartFmt,$PageEndFmt,$PageUploadFmt;
+  UploadAuth($pagename, $auth, 1);
+  UploadSetVars($pagename);
+  SDV($HandleUploadFmt,array(&$PageStartFmt,&$PageUploadFmt,&$PageEndFmt));
+  PrintFmt($pagename,$HandleUploadFmt);
+}
+
+function HandleDownload($pagename, $auth = 'read') {
+  global $UploadFileFmt, $UploadExts, $DownloadDisposition, $EnableIMSCaching;
+  SDV($DownloadDisposition, "inline");
+  UploadAuth($pagename, $auth);
+  $upname = MakeUploadName($pagename, @$_REQUEST['upname']);
+  $filepath = FmtPageName("$UploadFileFmt/$upname", $pagename);
+  if (!$upname || !file_exists($filepath)) {
+    header("HTTP/1.0 404 Not Found");
+    Abort("?requested file not found");
+    exit();
+  }
+  if (IsEnabled($EnableIMSCaching, 0)) {
+    header('Cache-Control: private');
+    header('Expires: ');
+    $filelastmod = gmdate('D, d M Y H:i:s \G\M\T', filemtime($filepath));
+    if (@$_SERVER['HTTP_IF_MODIFIED_SINCE'] == $filelastmod)
+      { header("HTTP/1.0 304 Not Modified"); exit(); }
+    header("Last-Modified: $filelastmod");
+  }
+  preg_match('/\\.([^.]+)$/',$filepath,$match); 
+  if ($UploadExts[@$match[1]]) 
+    header("Content-Type: {$UploadExts[@$match[1]]}");
+  $fsize = $length = filesize($filepath);
+  $end = $fsize-1;
+  header("Accept-Ranges: bytes");
+  if (@$_SERVER['HTTP_RANGE']) {
+    if(! preg_match('/^\\s*bytes\\s*=\\s*(\\d*)\\s*-\\s*(\\d*)\\s*$/i', $_SERVER['HTTP_RANGE'], $r)
+      || intval($r[1])>$end
+      || intval($r[2])>$end
+      || ($r[2] && intval($r[1])>intval($r[2]))
+    ) {
+      header('HTTP/1.1 416 Requested Range Not Satisfiable');
+      header("Content-Range: bytes 0-$end/$fsize");
+      exit;
+    }
+    if ($r[2]=='') $r[2] = $end;
+    if ($r[1]=='') $r[1] = $end - $r[2];
+    $length = $r[2] - $r[1] + 1;
+    header('HTTP/1.1 206 Partial Content');
+    header("Content-Range: bytes $r[1]-$r[2]/$fsize");
+  }
+  else {
+    $r = array( null, 0, $end);
+  }
+  header("Content-Length: $length");
+  header("Content-Disposition: $DownloadDisposition; filename=\"$upname\"");
+  $fp = fopen($filepath, "rb");
+  if ($fp) {
+    $bf = 8192;
+    fseek($fp, $r[1]);
+    while (!feof($fp) && ($pos = ftell($fp)) <= $r[2]) {
+      $bf = max($bf, $r[2] - $pos + 1);
+      echo fread($fp, $bf);
+      flush();
+    }
+    fclose($fp);
+  }
+  exit();
+}
+
+function HandlePostUpload($pagename, $auth = 'upload') {
+  global $UploadVerifyFunction, $UploadFileFmt, $LastModFile, $Now, 
+    $EnableUploadVersions, $EnableRecentUploads, $RecentUploadsFmt,
+    $FmtV, $NotifyItemUploadFmt, $NotifyItemFmt, $IsUploadPosted,
+    $UploadRedirectFunction, $UploadPermAdd, $UploadPermSet,
+    $EnableReadOnly;
+    
+  if (IsEnabled($EnableReadOnly, 0))
+    Abort('Cannot modify site -- $EnableReadOnly is set', 'readonly');
+
+  UploadAuth($pagename, $auth);
+  $uploadfile = @$_FILES['uploadfile'];
+  $upname = @$_REQUEST['upname'];
+  if ($upname=='') $upname=strval(@$uploadfile['name']);
+  $upname = MakeUploadName($pagename,$upname);
+  if (!function_exists($UploadVerifyFunction))
+    Abort('?no UploadVerifyFunction available');
+  $filepath = FmtPageName("$UploadFileFmt/$upname",$pagename);
+  $result = $UploadVerifyFunction($pagename,$uploadfile,$filepath,$upname);
+  if ($result=='') {
+    $filedir = preg_replace('#/[^/]*$#','',$filepath);
+    mkdirp($filedir);
+    if (IsEnabled($EnableUploadVersions, 0))
+      @rename($filepath, "$filepath,$Now");
+    if (!move_uploaded_file($uploadfile['tmp_name'],$filepath))
+      { Abort("?cannot move uploaded file to $filepath"); return; }
+    fixperms($filepath, $UploadPermAdd, $UploadPermSet);
+    if ($LastModFile) { touch($LastModFile); fixperms($LastModFile); }
+    $result = "upresult=success";
+    $FmtV['$filepath'] = $filepath;
+    $FmtV['$upname'] = $upname;
+    $FmtV['$upsize'] = $uploadfile['size'];
+    $FmtV['$upurl'] = DownloadUrl($pagename, $upname);
+    if (IsEnabled($EnableRecentUploads, 0)) {
+      SDV($RecentUploadsFmt, array( # not SDVA
+        '$SiteGroup.AllRecentChanges' => 
+          '* [[(Attach:){$FullName}/$upname]]  . . . $CurrentLocalTime'
+          . ' $[ULby] $AuthorLink ($upsize $[bytes])'
+      ));
+    }
+    if (IsEnabled($RecentUploadsFmt, 0)) {
+      PostRecentChanges($pagename, '', '', $RecentUploadsFmt);
+    }
+    if (IsEnabled($NotifyItemUploadFmt, 0) && function_exists('NotifyUpdate')) {
+      $NotifyItemFmt = $NotifyItemUploadFmt;
+      $IsUploadPosted = 1;
+      register_shutdown_function('NotifyUpdate', $pagename, getcwd());
+    }
+  }
+  $FmtV['$upresult'] = $result;
+  SDV($UploadRedirectFunction, 'Redirect');
+  $UploadRedirectFunction($pagename,"{\$PageUrl}?action=upload&uprname=$upname&$result");
+}
+
+function UploadVerifyBasic($pagename,$uploadfile,&$filepath,&$upname=null) {
+  global $EnableUploadOverwrite, $UploadExtSize, $UploadPrefixQuota,
+    $EnableUploadVersions, $UploadDirQuota, $UploadDir, $UploadBlacklist,
+    $Author, $EnablePostAuthorRequired, $EnableUploadAuthorRequired;
+
+  if(! AutoCheckToken()) {
+    return 'upresult=invalidtoken';
+  }
+  
+  if (IsEnabled($EnableUploadAuthorRequired,0) && !$Author)
+    return 'upresult=authorrequired';
+
+  if (count($UploadBlacklist)) {
+    if (is_null($upname)) { # call from old recipe
+      $tmp = explode("/", $filepath);
+      $upname = strtolower(end($tmp));
+    }
+    foreach($UploadBlacklist as $needle) {
+      if (stripos($upname, $needle)!==false) return 'upresult=badname';
+    }
+  }
+  if (IsEnabled($EnableUploadVersions, 0)>=10 && file_exists($filepath)) {
+    preg_match('!^(.*/)(.+?)(-\\d+)?(\\.[a-z0-9]+)$!i', $filepath, $m);
+    array_shift($m);
+    $m[2] = intval(@$m[2]);
+    for($i=1; $i<=$EnableUploadVersions; $i++) {
+      $m[2]--;
+      $nextpath = implode('', $m);
+      if (file_exists($nextpath)) continue;
+      $upname = substr($nextpath, strlen($m[0]));
+      $filepath = $nextpath;
+      break;
+    }
+  }
+  if (!$EnableUploadOverwrite && file_exists($filepath)) 
+    return 'upresult=exists';
+  preg_match('/\\.([^.\\/]+)$/',$filepath,$match); $ext=@$match[1];
+  $maxsize = $UploadExtSize[$ext];
+  if ($maxsize<=0) return "upresult=badtype&upext=$ext";
+  if (intval(@$uploadfile['size'])>$maxsize) 
+    return "upresult=toobigext&upext=$ext&upmax=$maxsize";
+  switch (@$uploadfile['error']) {
+    case 1: return 'upresult=toobig';
+    case 2: return 'upresult=toobig';
+    case 3: return 'upresult=partial';
+    case 4: return 'upresult=nofile';
+  }
+  if (!is_uploaded_file(strval(@$uploadfile['tmp_name']))) return 'upresult=nofile';
+  $filedir = preg_replace('#/[^/]*$#','',$filepath);
+  if ($UploadPrefixQuota && 
+      (dirsize($filedir)-@filesize($filepath)+$uploadfile['size']) >
+        $UploadPrefixQuota) return 'upresult=pquota';
+  if ($UploadDirQuota && 
+      (dirsize($UploadDir)-@filesize($filepath)+$uploadfile['size']) >
+        $UploadDirQuota) return 'upresult=tquota';
+  return '';
+}
+
+function dirsize($dir) {
+  $size = 0;
+  $dirp = @opendir($dir);
+  if (!$dirp) return 0;
+  while (($file=readdir($dirp)) !== false) {
+    if ($file[0]=='.') continue;
+    if (is_dir("$dir/$file")) $size+=dirsize("$dir/$file");
+    else $size+=filesize("$dir/$file");
+  }
+  closedir($dirp);
+  return $size;
+}
+
+function FmtUploadList($pagename, $args) {
+  global $UploadDir, $UploadPrefixFmt, $UploadUrlFmt, $EnableUploadOverwrite,
+    $TimeFmt, $EnableDirectDownload, $IMapLinkFmt, $UrlLinkFmt, $FmtV;
+
+  $opt = ParseArgs($args);
+  if (@$opt[''][0]) $pagename = MakePageName($pagename, $opt[''][0]);
+
+  $matchfnames = '';
+  if (@$opt['names'] ) $matchfnames = $opt['names'];
+  if (@$opt['ext'])
+    $matchfnames .= FixGlob($opt['ext'], '$1*.$2');
+
+  $uploaddir = FmtPageName("$UploadDir$UploadPrefixFmt", $pagename);
+  $uploadurl = FmtPageName(IsEnabled($EnableDirectDownload, 1) 
+                          ? "$UploadUrlFmt$UploadPrefixFmt/"
+                          : "\$PageUrl?action=download&amp;upname=",
+                      $pagename);
+
+  $dirp = @opendir($uploaddir);
+  if (!$dirp) return '';
+  $filelist = array();
+  while (($file=readdir($dirp)) !== false) {
+    if ($file[0] == '.') continue;
+    if ($matchfnames && ! MatchNames($file, $matchfnames)) continue;
+    $filelist[$file] = rawurlencode($file);
+  }
+  closedir($dirp);
+  $out = array();
+  natcasesort($filelist);
+  $overwrite = '';
+  $fmt = IsEnabled($IMapLinkFmt['Attach:'], $UrlLinkFmt);
+  foreach($filelist as $file=>$encfile) {
+    $FmtV['$LinkUrl'] = PUE("$uploadurl$encfile");
+    $FmtV['$LinkText'] = $file;
+    $FmtV['$LinkUpload'] =
+      FmtPageName("\$PageUrl?action=upload&amp;upname=$encfile", $pagename);
+    $stat = stat("$uploaddir/$file");
+    if ($EnableUploadOverwrite) 
+      $overwrite = FmtPageName("<a rel='nofollow' class='createlink'
+        href='\$LinkUpload'>&nbsp;&Delta;</a>",
+        $pagename);
+    $lnk = FmtPageName($fmt, $pagename);
+    $out[] = "<li> $lnk$overwrite ... ".
+      number_format($stat['size']) . " bytes ... " . 
+      PSFT($TimeFmt, $stat['mtime']) . "</li>";
+  }
+  return implode("\n",$out);
+}
+
+# this adds (:if [!]attachments filepattern pagename:) to the markup
+$Conditions['attachments'] = "AttachExist(\$pagename, \$condparm)";
+function AttachExist($pagename, $condparm='*') {
+  global $UploadFileFmt;
+  @list($fpat, $pn) = explode(' ', $condparm, 2);
+  $pn = ($pn > '') ? MakePageName($pagename, $pn) : $pagename;
+    
+  $uploaddir = FmtPageName($UploadFileFmt, $pn);
+  $flist = array();
+  $dirp = @opendir($uploaddir);
+  if ($dirp) {
+    while (($file = readdir($dirp)) !== false)
+      if ($file[0] != '.') $flist[] = $file;
+    closedir($dirp);
+    $flist = MatchNames($flist, $fpat);
+  }
+  return count($flist);
+}
blob - /dev/null
blob + 4b815b90678e36db486be7e811be3f364f38c2f5 (mode 644)
--- /dev/null
+++ scripts/urlapprove.php
@@ -0,0 +1,135 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2021 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script provides a URL-approval capability.  To enable this
+    script, add the following line to a configuration file:
+
+        include_once('scripts/urlapprove.php');
+
+    The URL prefixes to be allowed are stored as patterns in 
+    $WhiteUrlPatterns.  This array can be loaded from config.php, or 
+    from the wiki pages given by the $ApprovedUrlPagesFmt[] array.  
+    Any http: or https: URL that isn't in $WhiteUrlPatterns is rendered 
+    using $UnapprovedLinkFmt.
+
+    The script also provides ?action=approveurls and ?action=approvesites, 
+    which scan the current page for any new URLs to be automatically added
+    the first page of $UrlApprovalPagesFmt.
+
+    Finally, the script will block any post containing more than
+    $UnapprovedLinkCountMax unapproved urls in it.  By default this
+    is set to a very large number, leaving the posting of unapproved
+    urls wide open, but by setting $UnapprovedLinkCountMax to a smaller
+    number you can limit the number of unapproved urls that make it into
+    a page.  (Wikispammers seem to like to post long lists of urls, while
+    more "normal" authors tend to only post a few.)
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+$LinkFunctions['http:'] = 'LinkHTTP';
+$LinkFunctions['https:'] = 'LinkHTTP';
+SDV($ApprovedUrlPagesFmt, array('$SiteAdminGroup.ApprovedUrls'));
+SDV($UnapprovedLinkFmt,
+  "\$LinkText<a class='apprlink' href='{\$PageUrl}?action=approvesites&amp;\$TokenName=\$TokenValue'>$[(approve sites)]</a>");
+SDVA($HTMLStylesFmt, array('urlapprove' => '.apprlink { font-size:smaller; }'));
+SDV($ApproveUrlPattern,
+  "\\bhttps?:[^\\s$UrlExcludeChars]*[^\\s.,?!$UrlExcludeChars]");
+$WhiteUrlPatterns = (array)@$WhiteUrlPatterns;
+SDV($HandleActions['approveurls'], 'HandleApprove');
+SDV($HandleAuth['approveurls'], 'edit');
+SDV($HandleActions['approvesites'], 'HandleApprove');
+SDV($HandleAuth['approvesites'], 'edit');
+SDV($UnapprovedLinkCountMax, 1000000);
+array_splice($EditFunctions, array_search('PostPage', $EditFunctions),
+  0, 'BlockUnapprovedPosts');
+
+function LinkHTTP($pagename,$imap,$path,$alt,$txt,$fmt=NULL) {
+  global $EnableUrlApprovalRequired, $IMap, $WhiteUrlPatterns, $FmtV,
+    $UnapprovedLink, $UnapprovedLinkCount, $UnapprovedLinkFmt;
+  if (!IsEnabled($EnableUrlApprovalRequired,1))
+    return LinkIMap($pagename,$imap,$path,$alt,$txt,$fmt);
+  static $havereadpages;
+  if (!$havereadpages) { ReadApprovedUrls($pagename); $havereadpages=true; }
+  static $token;
+  if (!$token) $token = pmtoken();
+  $FmtV['$TokenValue'] = urlencode($token);
+  
+  $p = str_replace(' ','%20',$path);
+  $url = str_replace('$1',$p,$IMap[$imap]);
+  if (!isset($UnapprovedLink)) $UnapprovedLink = array();
+  foreach((array)$WhiteUrlPatterns as $pat) {
+    if (preg_match("!^$pat(/|$)!i",$url))
+      return LinkIMap($pagename,$imap,$path,$alt,$txt,$fmt);
+  }
+  $FmtV['$LinkUrl'] = PUE(str_replace('$1',$path,$IMap[$imap]));
+  $FmtV['$LinkText'] = $txt;
+  $FmtV['$LinkAlt'] = str_replace(array('"',"'"),array('&#34;','&#39;'),$alt);
+  $UnapprovedLink[] = $url;
+  @$UnapprovedLinkCount++;
+  return FmtPageName($UnapprovedLinkFmt,$pagename);
+}
+
+function ReadApprovedUrls($pagename) {
+  global $ApprovedUrlPagesFmt,$ApproveUrlPattern,$WhiteUrlPatterns;
+  foreach((array)$ApprovedUrlPagesFmt as $p) {
+    $pn = FmtPageName($p, $pagename);
+    StopWatch("ReadApprovedUrls $pn begin");
+    $apage = ReadPage($pn, READPAGE_CURRENT);
+    preg_match_all("/$ApproveUrlPattern/",@$apage['text'],$match);
+    foreach($match[0] as $a) 
+      $WhiteUrlPatterns[] = preg_quote($a,'!');
+    StopWatch("ReadApprovedUrls $pn end");
+  }
+}
+
+function HandleApprove($pagename, $auth='edit') {
+  global $ApproveUrlPattern,$WhiteUrlPatterns,$ApprovedUrlPagesFmt,$action;
+  Lock(2);
+  $page = ReadPage($pagename);
+  $text = preg_replace('/[()]/','',$page['text']);
+  preg_match_all("/$ApproveUrlPattern/",$text,$match);
+  ReadApprovedUrls($pagename);
+  $addpat = array();
+  foreach($match[0] as $a) {
+    if ($action=='approvesites') 
+      $a=preg_replace("!^([^:]+://[^/]+).*$!",'$1',$a);
+    $addpat[] = $a;
+  }
+  if (count($addpat)>0) {
+    $aname = FmtPageName($ApprovedUrlPagesFmt[0],$pagename);
+    $apage = RetrieveAuthPage($aname, $auth);
+    if (!$apage) Abort("?cannot edit $aname");
+    if(! AutoCheckToken()) {
+      Abort('? $[Token invalid or missing.]');
+    }
+    $new = $apage;
+    if (substr($new['text'],-1,1)!="\n") $new['text'].="\n";
+    foreach($addpat as $a) {
+      foreach((array)$WhiteUrlPatterns as $pat)
+        if (preg_match("!^$pat(/|$)!i",$a)) continue 2;
+      $urlp = preg_quote($a,'!');
+      $WhiteUrlPatterns[] = $urlp;
+      $new['text'].="  $a\n";
+    }
+    $_POST['post'] = 'y';
+    PostPage($aname,$apage,$new);
+  }
+  Redirect($pagename);
+}
+
+function BlockUnapprovedPosts($pagename, &$page, &$new) {
+  global $EnableUrlApprovalRequired, $UnapprovedLinkCount,
+    $UnapprovedLinkCountMax, $EnablePost, $MessagesFmt, $BlockMessageFmt;
+  if (!IsEnabled($EnableUrlApprovalRequired, 1)) return;
+  if ($UnapprovedLinkCount <= $UnapprovedLinkCountMax) return;
+  if ($page['=auth']['admin']) return;
+  $EnablePost = 0;
+  $MessagesFmt[] = $BlockMessageFmt;
+  $MessagesFmt[] = XL('Too many unapproved external links.');
+}
+
blob - /dev/null
blob + f844dd79c91e670e97f0c5bdb9334cec7cf8ab9b (mode 644)
--- /dev/null
+++ scripts/utils.php
@@ -0,0 +1,97 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2019-2022 Petko Yotov www.pmwiki.org/petko
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script includes and configures one or more JavaScript utilities, 
+    when they are enabled by the wiki administrator, notably:
+    
+    * Tables of contents
+    * Sortable tables
+    * Localized time stamps
+    * Improved recent changes
+    * Syntax highlighting (PmWiki markup)
+    * Syntax highlighting (external)
+    * Collapsible sections
+    * Email obfuscation
+    
+    To disable all these functions, add to config.php:
+      $EnablePmUtils = 0;
+*/
+
+function PmUtilsJS() {
+  global $PmTOC, $EnableSortable, $EnableHighlight, $EnableLocalTimes, $ToggleNextSelector, 
+    $LinkFunctions, $FarmD, $HTMLHeaderFmt, $EnablePmSyntax, $CustomSyntax;
+
+  $utils = "$FarmD/pub/pmwiki-utils.js";
+  if (( IsEnabled($PmTOC['Enable'], 0)
+    || IsEnabled($EnableSortable, 0)
+    || $LinkFunctions['mailto:'] == 'ObfuscateLinkIMap' 
+    || IsEnabled($EnableHighlight, 0)
+    || IsEnabled($ToggleNextSelector, 0)
+    || IsEnabled($EnableLocalTimes, 0)
+    ) && file_exists($utils)) {
+      $mtime = filemtime($utils);
+      SDVA($HTMLHeaderFmt, array('pmwiki-utils' =>
+        "<script type='text/javascript' src='\$FarmPubDirUrl/pmwiki-utils.js?st=$mtime'
+          data-sortable='".@$EnableSortable."' data-highlight='".@$EnableHighlight."'
+          data-pmtoc='".pm_json_encode(@$PmTOC, true)."'
+          data-toggle='".PHSC(@$ToggleNextSelector, ENT_QUOTES)."'
+          data-localtimes='".@$EnableLocalTimes."' data-fullname='{\$FullName}'></script>"
+      ));
+  }
+  
+  if (IsEnabled($EnablePmSyntax, 0)) { # inject before skins and local.css
+    $cs = is_array(@$CustomSyntax) ? 
+      pm_json_encode(array_values($CustomSyntax), true) : '';
+    array_unshift($HTMLHeaderFmt, "<link rel='stylesheet' 
+      href='\$FarmPubDirUrl/guiedit/pmwiki.syntax.css'>
+    <script src='\$FarmPubDirUrl/guiedit/pmwiki.syntax.js' data-imap='{\$EnabledIMap}'
+      data-label=\"$[Highlight]\" data-mode='$EnablePmSyntax'
+      data-custom=\"$cs\"></script>");
+  }
+}
+PmUtilsJS();
+
+##  This is a replacement for json_encode+PHSC, but only for arrays that
+##  are used by the PmWiki core. It may or may not work in other cases.
+##  This may fail with international characters if UTF-8 is not enabled.
+function pm_json_encode($x, $encodespecial=false) {
+  if (!isset($x) || is_null($x)) return 'null';
+  if (is_bool($x)) return $x? "true" : "false";
+  if (is_int($x) || is_float($x)) return strval($x);
+  
+  if (function_exists('json_encode'))
+    $out = json_encode($x);
+  
+  elseif (is_string($x)) ## escape controls and specials per RFC:8259
+    $out = '"'.preg_replace_callback("/[\x00-\x1f\\/\\\\\"]/",'cb_rfc8259',$x).'"';
+    
+  elseif (is_array($x)) {
+    $a = array();
+    if (array_values($x) === $x) { # numeric sequential array
+      foreach($x as $v)
+        $a[] = pm_json_encode($v);
+
+      $out = "[".implode(',', $a)."]";
+    }
+    else { # associative array -> json object
+      foreach($x as $k=>$v) {
+        $jk = is_int($k)? "\"$k\"" : pm_json_encode($k);
+        $jv = pm_json_encode($v);
+        $a[] = "$jk:$jv";
+      }
+      $out = "{".implode(',', $a)."}";
+    }
+  }
+  
+  else return 'null'; # other types not yet supported
+
+  return $encodespecial? PHSC($out, ENT_QUOTES) : $out;
+}
+function cb_rfc8259($m) { 
+  return sprintf('\\u00%02x', ord($m[0]));
+}
+
blob - /dev/null
blob + 0a5119de21386c0b76c7701b7688eca33df3df6d (mode 644)
--- /dev/null
+++ scripts/vardoc.php
@@ -0,0 +1,93 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2002-2018 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script provides special handling for WikiWords that are
+    preceded by a $, treating them as PmWiki variables to be looked up
+    in the variable documentation pages if such documentation exists.
+    The $VarPagesFmt variable contains a list of pages to be searched
+    to build an index of the variable documentation.  This index is 
+    generated only once per browse request, and then only when needed.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($VarPagesFmt,array('$[PmWiki.Variables]'));
+Markup('vardef','<links',"/^:\\$($WikiWordPattern|Author|Skin|pagename|Version) *:/",
+  ':%apply=item id=$1%$$1:');
+Markup('varlink','<wikilink',"/\\$($WikiWordPattern|Author|Skin|pagename|Version)\\b/",
+  "MarkupVarLinkIndex");
+Markup('varindex', 'directives',
+  '/\\(:varindex:\\)/i', "MarkupVarLinkIndex");
+
+function MarkupVarLinkIndex($m) {
+  extract($GLOBALS["MarkupToHTML"]); # get $pagename, $markupid
+  switch ($markupid) {
+    case 'varlink': 
+      return Keep(VarLink($pagename,$m[1],'$'.$m[1]));
+    case 'varindex': 
+      return Keep(VarIndexList($pagename));
+  }
+}
+
+SDVA($HTMLStylesFmt, array('vardoc' => "a.varlink { text-decoration:none;}\n"));
+
+function VarLink($pagename,$tgt,$txt) {
+  global $VarIndex,$FmtV,$VarLinkMissingFmt,$VarLinkExistsFmt;
+  SDV($VarLinkMissingFmt,'$LinkText');
+  SDV($VarLinkExistsFmt,"<a class='varlink' href='\$LinkUrl'><code class='varlink'>\$LinkText</code></a>");
+  VarIndexLoad($pagename);
+  $FmtV['$LinkText'] = str_replace('$', '&#36;', $txt);
+  if (@!$VarIndex[$tgt]['pagename'])
+    return FmtPageName($VarLinkMissingFmt,$pagename);
+  return MakeLink($pagename,"{$VarIndex[$tgt]['pagename']}#$tgt",$txt,null,$VarLinkExistsFmt);
+}
+
+function VarIndexLoad($pagename) {
+  global $VarPagesFmt,$VarIndex,$WikiWordPattern;
+  static $loaded;
+  $VarIndex = (array)@$VarIndex;
+  if ($loaded) return;
+  $tmp = array();
+  foreach($VarPagesFmt as $vf) {
+    $v = FmtPageName($vf, $pagename);
+    if (@$loaded[$v]) continue;
+    $vlist = array($v);
+    $t = ReadTrail($pagename,$v);
+    if ($t) 
+      for($i=0;$i<count($t);$i++) 
+        if (@!$loaded[$t[$i]['pagename']]) $vlist[]=$t[$i]['pagename'];
+    foreach($vlist as $vname) {
+      $vpage = ReadPage($vname, READPAGE_CURRENT); @$loaded[$vname]++;
+      if (!$vpage) continue;
+      if (!preg_match_all("/\n:\\$([[:upper:]]\\w+|pagename) *:/",@$vpage['text'],$match))
+        continue;
+      foreach($match[1] as $n) {
+        $tmp[$n]['pagename'] = $vname;
+        $tmp[$n]['url'] = FmtPageName("{\$PageUrl}#$n",$vname);
+      }
+    }
+  }
+  $keys = array_keys($tmp);
+  natcasesort($keys); # ksort requires PHP 5.4 for caseless sort
+  foreach($keys as $k) {
+    $VarIndex[$k] = $tmp[$k];
+  }
+}
+
+# VarIndexList() generates a table of all indexed variables.
+function VarIndexList($pagename) {
+  global $VarIndex;
+  if (!isset($VarIndex)) VarIndexLoad($pagename);
+  $out = FmtPageName("<table><tr><th>$[Variable]</th><th>$[Documented in]</th></tr>\n", $pagename);
+  foreach($VarIndex as $v=>$a) 
+    $out .= FmtPageName("<tr><td><a class='varlink' 
+      href='{$a['url']}'><code>&#036;$v</code></a></td><td><a 
+      href='{\$PageUrl}'>{\$Title}</a></td></tr>\n",$a['pagename']);
+  $out .= "</table>";
+  return $out;
+}
+
blob - /dev/null
blob + 9376338185333b79c2d153c6075832b84254bf6d (mode 644)
--- /dev/null
+++ scripts/version.php
@@ -0,0 +1 @@
+<?php $Version="pmwiki-2.3.20"; $VersionNum=2003020; 
\ No newline at end of file
blob - /dev/null
blob + c4f349e3bf9da42ec5f3e41d5a76b28e8bb9541e (mode 644)
--- /dev/null
+++ scripts/wikistyles.php
@@ -0,0 +1,205 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2015 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($WikiStylePattern,'%%|%[A-Za-z][-,=:#\\w\\s\'"().]*%');
+
+## %% markup
+Markup('%%','style','%','return ApplyStyles($x);');
+
+## restore links before applying styles
+Markup('restorelinks','<%%',"/$KeepToken(\\d+L)$KeepToken/",
+  'cb_expandkpv');
+
+## %define=...% markup on a line by itself
+Markup('%define=', '>split',
+  "/^(?=%define=)((?:$WikiStylePattern)\\s*)+$/",
+  "MarkupApplyStyles");
+
+function MarkupApplyStyles($m) {
+  ApplyStyles($m[0]);
+  return '';
+}
+
+# define PmWiki's standard/default wikistyles
+if (IsEnabled($EnableStdWikiStyles,1)) {
+  ## standard colors
+  foreach(array('black','white','red','yellow','blue','gray',
+      'silver','maroon','green','navy','purple',
+      'fuchsia','olive','lime','teal','aqua','orange') as $c)
+    SDV($WikiStyle[$c]['color'],$c);
+  SDV($WikiStyle['grey']['color'],'gray');
+  ## %newwin% style opens links in a new window
+  SDV($WikiStyle['newwin']['target'],'_blank');
+  ## %comment% style turns markup into a comment via display:none css
+  SDV($WikiStyle['comment']['display'],'none');
+  ## display, margin, padding, and border css properties
+  $WikiStyleCSS[] = 
+    'float|clear|display|(margin|padding|border)(-(left|right|top|bottom))?';
+  $WikiStyleCSS[] = 'white-space';
+  $WikiStyleCSS[] = '((min|max)-)?(width|height)';
+  ## list-styles
+  $WikiStyleCSS[] = 'list-style';
+  foreach(array('decimal'=>'decimal', 'roman'=>'lower-roman',
+    'ROMAN'=>'upper-roman', 'alpha'=>'lower-alpha', 'ALPHA'=>'upper-alpha')
+    as $k=>$v) 
+      SDV($WikiStyle[$k],array('apply'=>'list','list-style'=>$v));
+  ## apply ranges
+  SDVA($WikiStyleApply,array(
+    'item' => 'li|dt',
+    'list' => 'ul|ol|dl',
+    'div' => 'div',
+    'article' => 'article',
+    'section' => 'section',
+    'nav' => 'nav',
+    'aside' => 'aside',
+    'header' => 'header',
+    'footer' => 'footer',
+    'address' => 'address',
+    'pre' => 'pre',
+    'img' => 'img',
+    'block' => 'p(?!\\s+class=)|div|ul|ol|dl|li|dt|pre|h[1-6]|article|section|nav|aside|address|header|footer',
+    'p' => 'p(?!\\s+class=)'));
+  foreach(array('item', 'list', 'block', 'p', 'div') as $c)
+    SDV($WikiStyle[$c],array('apply'=>$c));
+  ## block justifications
+  foreach(array('left','right','center','justify') as $c)
+    SDV($WikiStyle[$c],array('apply'=>'block','text-align'=>$c));
+  ## frames, floating frames, and floats
+  SDV($HTMLStylesFmt['wikistyles'], " 
+    .frame 
+      { border:1px solid #cccccc; padding:4px; background-color:#f9f9f9; }
+    .lfloat { float:left; margin-right:0.5em; }
+    .rfloat { float:right; margin-left:0.5em; }\n");
+  SDV($WikiStyle['thumb'], array('width' => '100px'));
+  SDV($WikiStyle['frame'], array('class' => 'frame'));
+  SDV($WikiStyle['lframe'], array('class' => 'frame lfloat'));
+  SDV($WikiStyle['rframe'], array('class' => 'frame rfloat'));
+  SDV($WikiStyle['cframe'], array(
+    'class' => 'frame', 'margin-left' => 'auto', 'margin-right' => 'auto',
+    'width' => '200px', 'apply' => 'block', 'text-align' => 'center'));
+  ##  preformatted text sections
+  SDV($WikiStyle['pre'], array('apply' => 'block', 'white-space' => 'pre'));
+  SDV($WikiStyle['notoc'], array('apply' => 'block', 'class' => 'notoc'));
+  SDV($WikiStyle['sidehead'], array('apply' => 'block', 'class' => 'sidehead'));
+  SDV($WikiStyle['reversed'], array('apply' => 'list', 'reversed' => 'reversed'));
+}
+
+SDVA($WikiStyleAttr,array(
+  'vspace' => 'img',
+  'hspace' => 'img',
+  'align' => 'img',
+  'value' => 'li',
+  'reversed' => 'ol',
+  'target' => 'a',
+  'accesskey' => 'a',
+  'rel' => 'a'));
+
+SDVA($WikiStyleRepl,array(
+  '/^%(.*)%$/' => '$1',
+  '/\\bbgcolor([:=])/' => 'background-color$1',
+  '/\\b((?<!-)\d+)pct\\b/' => '$1%',
+  ));
+
+$WikiStyleCSS[] = 'color|background-color';
+$WikiStyleCSS[] = 'overflow|text-align|text-decoration';
+$WikiStyleCSS[] = 'font-size|font-family|font-weight|font-style';
+
+SDV($imgTag, '(?:img|object|embed)');  SDV($aTag, 'a'); SDV($spanTag, 'span');
+
+function ApplyStyles($x) {
+  global $UrlExcludeChars, $WikiStylePattern, $WikiStyleRepl, $WikiStyle,
+    $WikiStyleAttr, $WikiStyleCSS, $WikiStyleApply, $BlockPattern,
+    $WikiStyleTag, $imgTag, $aTag, $spanTag, $WikiStyleAttrPrefix;
+  $wt = @$WikiStyleTag; $ns = $WikiStyleAttrPrefix; $ws = '';
+  $x = preg_replace_callback("/\\b(href|src)=(['\"]?)[^$UrlExcludeChars]+\\2/",
+                    "Keep", $x);
+  $x = preg_replace_callback("/\\bhttps?:[^$UrlExcludeChars]+/", "Keep", $x);
+  $parts = preg_split("/($WikiStylePattern)/",$x,-1,PREG_SPLIT_DELIM_CAPTURE);
+  $parts[] = NULL;
+  $out = '';
+  $style = array();
+  $wikicsspat = '/^('.implode('|',(array)$WikiStyleCSS).')$/';
+  while ($parts) {
+    $p = array_shift($parts);
+    if ($p && preg_match("/^$WikiStylePattern\$/",$p)) {
+      $WikiStyle['curr']=$style; $style=array();
+      foreach((array)$WikiStyleRepl as $pat=>$rep)
+        $p=preg_replace($pat,$rep,$p);
+      preg_match_all(
+        '/\\b([a-zA-Z][-\\w]*)([:=]([-#,\\w.()%]+|([\'"]).*?\\4))?/',
+        $p, $match, PREG_SET_ORDER);
+      while ($match) {
+        $m = array_shift($match);
+        if (@$m[2]) $style[$m[1]]=preg_replace('/^([\'"])(.*?)\\1$/','$2',$m[3]);
+        else if (!isset($WikiStyle[$m[1]])) @$style['class'] .= ' ' . $m[1];
+        else {
+          $c = @$style['class'];
+          $style=array_merge($style,(array)$WikiStyle[$m[1]]);
+          if ($c && !preg_match("/(^| )$c( |$)/", $style['class']) )
+            $style['class'] = $c . ' ' . $style['class'];
+        }
+      }
+      if (@$style['define']) {
+        $d = $style['define']; unset($style['define']);
+        $WikiStyle[$d] = $style;
+      }
+      if (@$WikiStyleApply[$style['apply']]) {
+        $apply[$style['apply']] = 
+          array_merge((array)@$apply[$style['apply']],$style);
+        $style=array();
+      }
+      continue;
+    }
+    if (is_null($p)) 
+      { $alist=@$apply; unset($alist['']); $p=$out; $out=''; }
+    elseif ($p=='') continue;
+    else { $alist=array(''=>$style); }
+    foreach((array)$alist as $a=>$s) {
+      $spanattr = ''; $stylev = array(); $id = '';
+      foreach((array)$s as $k=>$v) {
+        $v = trim($v);
+        if ($wt) $ws = str_replace('$1', "$ns$k='$v'", $wt);
+        elseif ($k=='id') $id = preg_replace('/[^-A-Za-z0-9:_.]+/', '_', $v);
+        elseif (($k=='width' || $k=='height') && !@$WikiStyleApply[$a]
+            && preg_match("/\\s*<$imgTag\\b/", $p)) 
+          $p = preg_replace("/<($imgTag)\\b(?![^>]*\\s$k=)/", 
+                 "$ws<$1 $ns$k='$v'", $p);
+        elseif (@$WikiStyleAttr[$k]) 
+          $p = preg_replace(
+                 "/<({$WikiStyleAttr[$k]}(?![^>]*\\s(?:$ns)?$k=))([^>]*)>/s",
+                 "$ws<$1 $ns$k='$v' $2>", $p);
+        elseif (preg_match($wikicsspat,$k)) $stylev[]="$k: $v;";
+      }
+      if (@$s['class']) $spanattr = "{$ns}class='".trim($s['class'])."'";
+      
+      if ($stylev) $spanattr .= " {$ns}style='".implode(' ',$stylev)."'";
+      if ($id) $spanattr .= " {$ns}id='$id'";
+      if ($spanattr) {
+        if ($wt) $ws = str_replace('$1', $spanattr, $wt);
+        if (!@$WikiStyleApply[$a]) {
+          $p = preg_replace("!^(.*?)($|</?($BlockPattern))!s", 
+                            "$ws<$spanTag $spanattr>$1</$spanTag>$2", $p, 1);
+        }
+        elseif (!preg_match('/^(\\s*<[^>]+>)*$/s',$p) ||
+                preg_match("/<$imgTag\\b/", $p)) {
+          $p = preg_replace("/<({$WikiStyleApply[$a]})\\b/",
+                 "$ws<$1 $spanattr", $p);
+        }
+      }
+      if (@$s['color']) { 
+        $colorattr = "{$ns}style='color: {$s['color']}'";
+        if ($wt) $ws = str_replace('$1', $colorattr, $wt);
+        $p = preg_replace("/<$aTag\\b/", "$ws<$aTag $colorattr", $p);
+      }
+    }
+    $out .= $p;
+  }
+  return $out;
+}
blob - /dev/null
blob + fe1ebfcc934fa5b480ac50b51ffa64948b859f40 (mode 644)
--- /dev/null
+++ scripts/wikiwords.php
@@ -0,0 +1,75 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2001-2017 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script adds WikiWord (CamelCase) processing to PmWiki.
+    Originally WikiWords were part of the default configuration,
+    but their usage has died out over time and so it's now optional.
+
+    To enable WikiWord links, simply add the following to
+    a local customization file:
+
+        $EnableWikiWords = 1;
+
+    To have PmWiki recognize and process WikiWords but not link
+    them (i.e., the default behavior in PmWiki 2.1), also add
+
+        $LinkWikiWords = 0;
+
+    If you want only the first occurrence of a WikiWord to be converted
+    to a link, set $WikiWordCountMax=1.
+
+        $WikiWordCountMax = 1;         # converts only first WikiWord
+        $WikiWordCountMax = 0;         # another way to disable WikiWord links
+
+    The $WikiWordCount array can be used to control the number of times
+    a WikiWord is converted to a link.  This is useful for disabling
+    or limiting specific WikiWords.
+
+        $WikiWordCount['PhD'] = 0;         # disables 'PhD'
+        $WikiWordCount['PmWiki'] = 1;      # convert only first 'PmWiki'
+        $WikiWordCount['WikiWord'] = -1;   # ignore $SpaceWikiWord setting
+
+    By default, PmWiki is configured such that only the first occurrence
+    of 'PmWiki' in a page is treated as a WikiWord.  If you want to
+    restore 'PmWiki' to be treated like other WikiWords, uncomment the
+    line below.
+        unset($WikiWordCount['PmWiki']);
+
+    If you want to disable WikiWords matching a pattern, you can use
+    something like the following.  Note that the first argument has to
+    be different for each call to Markup().  The example below disables
+    WikiWord links like COM1, COM2, COM1234, etc.
+        Markup('COM\d+', '<wikilink', '/\\bCOM\\d+/', "Keep");
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+SDV($LinkWikiWords, 1);
+
+## bare wikilinks
+Markup('wikilink', '>urllink',
+  "/\\b(?<![#&])($GroupPattern([\\/.]))?($WikiWordPattern)/",
+  "MarkupWikiLink");
+
+function MarkupWikiLink($m) {
+  extract($GLOBALS["MarkupToHTML"]); # get $pagename
+  return Keep('<span class="wikiword">'.WikiLink($pagename,$m[0]).'</span>', 'L');
+}
+
+function WikiLink($pagename, $word) {
+  global $LinkWikiWords, $WikiWordCount, $SpaceWikiWords, $AsSpacedFunction,
+    $MarkupFrame, $WikiWordCountMax;
+  if (!$LinkWikiWords || (@$WikiWordCount[$word] < 0)) return $word;
+  $text = ($SpaceWikiWords) ? $AsSpacedFunction($word) : $word;
+  $text = preg_replace('!.*/!', '', $text);
+  if (!isset($MarkupFrame[0]['wwcount'][$word]))
+    $MarkupFrame[0]['wwcount'][$word] = $WikiWordCountMax;
+  if ($MarkupFrame[0]['wwcount'][$word]-- < 1) return $text;
+  return MakeLink($pagename, $word, $text);
+}
+
+
blob - /dev/null
blob + 8abea3ea90dff3366e59621a8b0ce31897c9a1d3 (mode 644)
--- /dev/null
+++ scripts/xlpage-iso-8859-13.php
@@ -0,0 +1,15 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2005-2017 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+  global $HTTPHeaders, $Charset, $DefaultPageCharset;
+
+  $HTTPHeaders[] = "Content-type: text/html; charset=iso-8859-13";
+  $Charset = "ISO-8859-13";
+  SDVA($DefaultPageCharset, array('ISO-8859-1'=>$Charset));
blob - /dev/null
blob + d7ef0e698b88dc15fdeea47598d5692fcf253d73 (mode 644)
--- /dev/null
+++ scripts/xlpage-iso-8859-2.php
@@ -0,0 +1,67 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2017 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This file is used to enable the iso-8859-2 character set in PmWiki.
+    The first part converts the charset to iso-8859-2 and removes
+    conflicts for newline and keep tokens; the second part
+    handles the conversion of pagenames from utf-8 (sent by browsers)
+    into iso-8859-2 if needed.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+  global $HTTPHeaders, $pagename, $KeepToken, $Charset, $DefaultPageCharset;
+
+  $HTTPHeaders[] = "Content-Type: text/html; charset=iso-8859-2";
+  $Charset = "ISO-8859-2";
+  SDVA($DefaultPageCharset, array('ISO-8859-1'=>$Charset));
+
+  $KeepToken = "\263\263\263";
+
+  $pagename = $_REQUEST['n'];
+  if (!$pagename) $pagename = @$_GET['pagename'];
+  if ($pagename=='' && $EnablePathInfo)
+    $pagename = @substr($_SERVER['PATH_INFO'],1);
+  if (!$pagename &&
+      preg_match('!^'.preg_quote($_SERVER['SCRIPT_NAME'],'!').'/?([^?]*)!',
+          $_SERVER['REQUEST_URI'],$match))
+      $pagename = urldecode($match[1]);
+  $pagename = preg_replace('!/+$!','',$pagename);
+
+  if (!preg_match('/[\\x80-\\x9f]/', $pagename)) return;
+
+  if (function_exists('iconv')) 
+    $pagename = iconv('UTF-8','ISO-8859-2',$pagename);
+  else {
+    $conv = array(
+      ' '=>'', 'Ą'=>'', '˘'=>'', 'Ł'=>'', 
+      '¤'=>'', 'Ľ'=>'', 'Ś'=>'', '§'=>'', 
+      '¨'=>'', 'Š'=>'', 'Ş'=>'', 'Ť'=>'', 
+      'Ź'=>'', '­'=>'', 'Ž'=>'', 'Ż'=>'', 
+      '°'=>'', 'ą'=>'', '˛'=>'', 'ł'=>'', 
+      '´'=>'', 'ľ'=>'', 'ś'=>'', 'ˇ'=>'', 
+      '¸'=>'', 'š'=>'', 'ş'=>'', 'ť'=>'', 
+      'ź'=>'', '˝'=>'', 'ž'=>'', 'ż'=>'', 
+      'Ŕ'=>'', 'Á'=>'', 'Â'=>'', 'Ă'=>'', 
+      'Ä'=>'', 'Ĺ'=>'', 'Ć'=>'', 'Ç'=>'', 
+      'Č'=>'', 'É'=>'', 'Ę'=>'', 'Ë'=>'', 
+      'Ě'=>'', 'Í'=>'', 'Î'=>'', 'Ď'=>'', 
+      'Đ'=>'', 'Ń'=>'', 'Ň'=>'', 'Ó'=>'', 
+      'Ô'=>'', 'Ő'=>'', 'Ö'=>'', '×'=>'', 
+      'Ř'=>'', 'Ů'=>'', 'Ú'=>'', 'Ű'=>'', 
+      'Ü'=>'', 'Ý'=>'', 'Ţ'=>'', 'ß'=>'', 
+      'ŕ'=>'', 'á'=>'', 'â'=>'', 'ă'=>'', 
+      'ä'=>'', 'ĺ'=>'', 'ć'=>'', 'ç'=>'', 
+      'č'=>'', 'é'=>'', 'ę'=>'', 'ë'=>'', 
+      'ě'=>'', 'í'=>'', 'î'=>'', 'ď'=>'', 
+      'đ'=>'', 'ń'=>'', 'ň'=>'', 'ó'=>'', 
+      'ô'=>'', 'ő'=>'', 'ö'=>'', '÷'=>'', 
+      'ř'=>'', 'ů'=>'', 'ú'=>'', 'ű'=>'', 
+      'ü'=>'', 'ý'=>'', 'ţ'=>'', '˙'=>'', 
+    );
+    $pagename = str_replace(array_keys($conv),array_values($conv),$pagename);
+  }
+
blob - /dev/null
blob + e823db1b26695992325dff986826bb97faa1d595 (mode 644)
--- /dev/null
+++ scripts/xlpage-iso-8859-9.php
@@ -0,0 +1,16 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2005-2017 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+  global $HTTPHeaders, $Charset, $DefaultPageCharset;
+
+  $HTTPHeaders[] = "Content-type: text/html; charset=iso-8859-9";
+  $Charset = "ISO-8859-9";
+  SDVA($DefaultPageCharset, array('ISO-8859-1'=>$Charset));
+
blob - /dev/null
blob + 34f9c1aedeed85af2ff5eb8c71cf6f73f4e866a9 (mode 644)
--- /dev/null
+++ scripts/xlpage-utf-8.php
@@ -0,0 +1,647 @@
+<?php if (!defined('PmWiki')) exit();
+/*  Copyright 2004-2022 Patrick R. Michaud (pmichaud@pobox.com)
+    This file is part of PmWiki; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.  See pmwiki.php for full details.
+
+    This script configures PmWiki to use utf-8 in page content and
+    pagenames.  There are some unfortunate side effects about PHP's
+    utf-8 implementation, however.  First, since PHP doesn't have a
+    way to do pattern matching on upper/lowercase UTF-8 characters,
+    WikiWords are limited to the ASCII-7 set, and all links to page
+    names with UTF-8 characters have to be in double brackets.
+    Second, we have to assume that all non-ASCII characters are valid
+    in pagenames, since there's no way to determine which UTF-8
+    characters are "letters" and which are punctuation.
+    
+    Script maintained by Petko YOTOV www.pmwiki.org/petko
+*/
+
+global $HTTPHeaders, $KeepToken, $pagename,
+  $GroupPattern, $NamePattern, $WikiWordPattern, $SuffixPattern,
+  $PageNameChars, $MakePageNamePatterns, $CaseConversions, $StringFolding,
+  $Charset, $HTMLHeaderFmt, $StrFoldFunction, $AsSpacedFunction;
+
+$Charset = 'UTF-8';
+$HTTPHeaders['utf-8'] = 'Content-type: text/html; charset=UTF-8';
+$HTMLHeaderFmt['utf-8'] = 
+  "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
+SDVA($HTMLStylesFmt, array('rtl-ltr' => "
+  .rtl, .rtl * {direction:rtl; unicode-bidi:bidi-override;}
+  .ltr, .ltr * {direction:ltr; unicode-bidi:bidi-override;}
+  .rtl .indent, .rtl.indent, .rtl .outdent, .rtl.outdent {
+    margin-left:0; margin-right: 40px;
+  }
+  "));
+$pagename = strval(@$_REQUEST['n']);
+if (!$pagename) $pagename = strval(@$_REQUEST['pagename']);
+if (!$pagename &&
+      preg_match('!^'.preg_quote($_SERVER['SCRIPT_NAME'],'!').'/?([^?]*)!',
+          $_SERVER['REQUEST_URI'],$match))
+    $pagename = urldecode($match[1]);
+$pagename_unfiltered = $pagename;
+$pagename = preg_replace('![${}\'"\\\\]+!', '', $pagename);
+$FmtPV['$RequestedPage'] = 'PHSC($GLOBALS["pagename_unfiltered"], ENT_QUOTES)';
+
+$GroupPattern = '[\\w\\x80-\\xfe]+(?:-[\\w\\x80-\\xfe]+)*';
+$NamePattern = '[\\w\\x80-\\xfe]+(?:-[\\w\\x80-\\xfe]+)*';
+$WikiWordPattern = 
+  '[A-Z][A-Za-z0-9]*(?:[A-Z][a-z0-9]|[a-z0-9][A-Z])[A-Za-z0-9]*';
+$SuffixPattern = '(?:-?[A-Za-z0-9\\x80-\\xd6]+)*';
+
+SDV($PageNameChars, '-[:alnum:]\\x80-\\xfe');
+SDV($MakePageNamePatterns, array(
+    '/[?#].*$/' => '',                     # strip everything after ? or #
+    "/'/" => '',                           # strip single-quotes
+    "/[^$PageNameChars]+/" => ' ',         # convert everything else to space
+    '/(?<=^| )([a-z])/' => 'cb_toupper',
+    '/(?<=^| )([\\xc0-\\xdf].)/' => 'utf8toupper',
+    '/ /' => ''));
+SDV($StrFoldFunction, 'utf8fold');
+
+$AsSpacedFunction = 'AsSpacedUTF8';
+
+function utf8toupper($x) {
+  if(is_array($x)) $x = $x[1];
+  global $CaseConversions;
+  if (strlen($x) <= 2 && @$CaseConversions[$x])
+    return $CaseConversions[$x];
+  static $lower, $upper;
+  if (!@$lower) { 
+    $lower = array_keys($CaseConversions); 
+    $upper = array_values($CaseConversions);
+  }
+  return str_replace($lower, $upper, $x);
+}
+
+function utf8fold($x) {
+  if(is_null($x) || $x === '') return '';
+  global $StringFolding;
+  static $source, $target;
+  if (!@$source) {
+    $source = array_keys($StringFolding);
+    $target = array_values($StringFolding);
+  }
+  return str_replace($source, $target, $x);
+}
+
+
+function AsSpacedUTF8($text) {
+  global $CaseConversions;
+  static $lower, $upper;
+  if (!@$CaseConversions) return AsSpaced($text);
+  if (!@$lower) {
+    $lower = implode('|', array_keys($CaseConversions));
+    $upper = implode('|', array_values($CaseConversions));
+  }
+  $text = preg_replace("/($lower|\\d)($upper)/", '$1 $2', $text);
+  $text = preg_replace('/([^-\\d])(\\d[-\\d]*( |$))/', '$1 $2', $text);
+  return preg_replace("/($upper)(($upper)($lower|\\d))/", '$1 $2', $text);
+}
+
+
+SDVA($MarkupExpr, array(
+  'substr'  => 'call_user_func_array("utf8string", $args)',
+  'strlen'  => 'utf8string($args[0], "strlen")',
+  'ucfirst' => 'utf8string($args[0], "ucfirst")',
+  'ucwords' => 'utf8string($args[0], "ucwords")',
+  'tolower' => 'utf8string($args[0], "tolower")',
+  'toupper' => 'utf8string($args[0], "toupper")',
+));
+
+function utf8string($str, $start=false, $len=false) { # strlen+substr++ combo for UTF-8
+  global $CaseConversions;
+  static $lower;
+  if (!@$lower) $lower = implode('|', array_keys($CaseConversions));
+  $ascii = preg_match('/[\\x80-\\xFF]/', $str)? 0:1;
+  switch ((string)$start) {
+    case 'ucfirst': return $ascii ? ucfirst($str) :
+      preg_replace_callback("/(^)($lower)/", 'cb_uc_first_words', $str);
+    case 'ucwords': return $ascii ? ucwords($str) :
+      preg_replace_callback("/(^|\\s+)($lower)/", 'cb_uc_first_words', $str);
+    case 'tolower': return $ascii ? strtolower($str) : utf8fold($str);
+    case 'toupper': return $ascii ? strtoupper($str) : utf8toupper($str);
+  }
+  if ($ascii) {
+    if ($start==='strlen') return strlen($str);
+    if ($len===false) return substr($str, intval($start));
+    return substr($str, intval($start), intval($len));
+  }
+  $letters = preg_split("/([\\x00-\\x7f]|[\\xc2-\\xdf].|[\\xe0-\\xef]..|[\\xf0-\\xf4]...)/", 
+              $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+  if ($start==='strlen') return count($letters);
+  if ($len===false) return implode('', array_slice($letters, $start));
+  return implode('', array_slice($letters, $start, $len));
+}
+function cb_uc_first_words($m){
+  return $m[1].$GLOBALS["CaseConversions"][$m[2]];
+}
+##   Conversion tables.  
+##   $CaseConversion maps lowercase utf8 sequences to 
+##   their uppercase equivalents.  The table was derived from [1].
+##   $StringFolding normalizes strings so that "equivalent"
+##   forms will match using a binary comparison (derived from [2]).
+##     [1] http://unicode.org/Public/UNIDATA/UnicodeData.txt
+##     [2] http://unicode.org/Public/UNIDATA/CaseFolding.txt
+
+SDV($CaseConversions, array(
+    ##   U+0060
+    "a" => "A", "b" => "B", "c" => "C", "d" => "D", "e" => "E", "f" => "F",
+    "g" => "G", "h" => "H", "i" => "I", "j" => "J", "k" => "K", "l" => "L",
+    "m" => "M", "n" => "N", "o" => "O", "p" => "P", "q" => "Q", "r" => "R",
+    "s" => "S", "t" => "T", "u" => "U", "v" => "V", "w" => "W", "x" => "X",
+    "y" => "Y", "z" => "Z",
+    ##   U+00b5
+    "\xc2\xb5" => "\xce\x9c",
+    ##   U+00E0 to U+00FF
+    "\xc3\xa0" => "\xc3\x80",  "\xc3\xa1" => "\xc3\x81",
+    "\xc3\xa2" => "\xc3\x82",  "\xc3\xa3" => "\xc3\x83",
+    "\xc3\xa4" => "\xc3\x84",  "\xc3\xa5" => "\xc3\x85",
+    "\xc3\xa6" => "\xc3\x86",  "\xc3\xa7" => "\xc3\x87",
+    "\xc3\xa8" => "\xc3\x88",  "\xc3\xa9" => "\xc3\x89",
+    "\xc3\xaa" => "\xc3\x8a",  "\xc3\xab" => "\xc3\x8b",
+    "\xc3\xac" => "\xc3\x8c",  "\xc3\xad" => "\xc3\x8d",
+    "\xc3\xae" => "\xc3\x8e",  "\xc3\xaf" => "\xc3\x8f",
+    "\xc3\xb0" => "\xc3\x90",  "\xc3\xb1" => "\xc3\x91",
+    "\xc3\xb2" => "\xc3\x92",  "\xc3\xb3" => "\xc3\x93",
+    "\xc3\xb4" => "\xc3\x94",  "\xc3\xb5" => "\xc3\x95",
+    "\xc3\xb6" => "\xc3\x96",  "\xc3\xb8" => "\xc3\x98",
+    "\xc3\xb9" => "\xc3\x99",  "\xc3\xba" => "\xc3\x9a",
+    "\xc3\xbb" => "\xc3\x9b",  "\xc3\xbc" => "\xc3\x9c",
+    "\xc3\xbd" => "\xc3\x9d",  "\xc3\xbe" => "\xc3\x9e",
+    "\xc3\xbf" => "\xc5\xb8",  
+    ##   U+0100
+    "\xc4\x81" => "\xc4\x80",  "\xc4\x83" => "\xc4\x82",
+    "\xc4\x85" => "\xc4\x84",  "\xc4\x87" => "\xc4\x86",
+    "\xc4\x89" => "\xc4\x88",  "\xc4\x8b" => "\xc4\x8a",
+    "\xc4\x8d" => "\xc4\x8c",  "\xc4\x8f" => "\xc4\x8e",
+    "\xc4\x91" => "\xc4\x90",  "\xc4\x93" => "\xc4\x92",
+    "\xc4\x95" => "\xc4\x94",  "\xc4\x97" => "\xc4\x96",
+    "\xc4\x99" => "\xc4\x98",  "\xc4\x9b" => "\xc4\x9a",
+    "\xc4\x9d" => "\xc4\x9c",  "\xc4\x9f" => "\xc4\x9e",
+    "\xc4\xa1" => "\xc4\xa0",  "\xc4\xa3" => "\xc4\xa2",
+    "\xc4\xa5" => "\xc4\xa4",  "\xc4\xa7" => "\xc4\xa6",
+    "\xc4\xa9" => "\xc4\xa8",  "\xc4\xab" => "\xc4\xaa",
+    "\xc4\xad" => "\xc4\xac",  "\xc4\xaf" => "\xc4\xae",
+    "\xc4\xb1" => "I",         "\xc4\xb3" => "\xc4\xb2",
+    "\xc4\xb5" => "\xc4\xb4",  "\xc4\xb7" => "\xc4\xb6",
+    "\xc4\xba" => "\xc4\xb9",  "\xc4\xbc" => "\xc4\xbb",
+    "\xc4\xbe" => "\xc4\xbd",  
+    ##   U+0140
+    "\xc5\x80" => "\xc4\xbf",  "\xc5\x82" => "\xc5\x81", 
+    "\xc5\x84" => "\xc5\x83",  "\xc5\x86" => "\xc5\x85", 
+    "\xc5\x88" => "\xc5\x87",  "\xc5\x8b" => "\xc5\x8a",
+    "\xc5\x8d" => "\xc5\x8c",  "\xc5\x8f" => "\xc5\x8e",
+    "\xc5\x91" => "\xc5\x90",  "\xc5\x93" => "\xc5\x92",
+    "\xc5\x95" => "\xc5\x94",  "\xc5\x97" => "\xc5\x96",
+    "\xc5\x99" => "\xc5\x98",  "\xc5\x9b" => "\xc5\x9a",
+    "\xc5\x9d" => "\xc5\x9c",  "\xc5\x9f" => "\xc5\x9e",
+    "\xc5\xa1" => "\xc5\xa0",  "\xc5\xa3" => "\xc5\xa2",
+    "\xc5\xa5" => "\xc5\xa4",  "\xc5\xa7" => "\xc5\xa6",
+    "\xc5\xa9" => "\xc5\xa8",  "\xc5\xab" => "\xc5\xaa",
+    "\xc5\xad" => "\xc5\xac",  "\xc5\xaf" => "\xc5\xae",
+    "\xc5\xb1" => "\xc5\xb0",  "\xc5\xb3" => "\xc5\xb2",
+    "\xc5\xb5" => "\xc5\xb4",  "\xc5\xb7" => "\xc5\xb6",
+    "\xc5\xba" => "\xc5\xb9",  "\xc5\xbc" => "\xc5\xbb",
+    "\xc5\xbe" => "\xc5\xbd",  "\xc5\xbf" => "S",
+    ##   U+0180
+    "\xc6\x80" => "\xc9\x83",  "\xc6\x83" => "\xc6\x82",
+    "\xc6\x85" => "\xc6\x84",  "\xc6\x88" => "\xc6\x87",
+    "\xc6\x8c" => "\xc6\x8b",  "\xc6\x92" => "\xc6\x91",
+    "\xc6\x95" => "\xc7\xb6",  "\xc6\x99" => "\xc6\x98",
+    "\xc6\x9a" => "\xc8\xbd",  "\xc6\x9e" => "\xc8\xa0",
+    "\xc6\xa1" => "\xc6\xa0",  "\xc6\xa3" => "\xc6\xa2",
+    "\xc6\xa5" => "\xc6\xa4",  "\xc6\xa8" => "\xc6\xa7",
+    "\xc6\xad" => "\xc6\xac",  "\xc6\xb0" => "\xc6\xaf",
+    "\xc6\xb4" => "\xc6\xb3",  "\xc6\xb6" => "\xc6\xb5",
+    "\xc6\xb9" => "\xc6\xb8",  "\xc6\xbd" => "\xc6\xbc",
+    "\xc6\xbf" => "\xc7\xb7",  
+    ##   U+01c0
+    "\xc7\x85" => "\xc7\x84",  "\xc7\x86" => "\xc7\x84", 
+    "\xc7\x88" => "\xc7\x87",  "\xc7\x89" => "\xc7\x87",
+    "\xc7\x8b" => "\xc7\x8a",  "\xc7\x8c" => "\xc7\x8a",
+    "\xc7\x8e" => "\xc7\x8d",  "\xc7\x90" => "\xc7\x8f",
+    "\xc7\x92" => "\xc7\x91",  "\xc7\x94" => "\xc7\x93",
+    "\xc7\x96" => "\xc7\x95",  "\xc7\x98" => "\xc7\x97",
+    "\xc7\x9a" => "\xc7\x99",  "\xc7\x9c" => "\xc7\x9b",
+    "\xc7\x9d" => "\xc6\x8e",  "\xc7\x9f" => "\xc7\x9e",
+    "\xc7\xa1" => "\xc7\xa0",  "\xc7\xa3" => "\xc7\xa2",
+    "\xc7\xa5" => "\xc7\xa4",  "\xc7\xa7" => "\xc7\xa6",
+    "\xc7\xa9" => "\xc7\xa8",  "\xc7\xab" => "\xc7\xaa",
+    "\xc7\xad" => "\xc7\xac",  "\xc7\xaf" => "\xc7\xae",
+    "\xc7\xb2" => "\xc7\xb1",  "\xc7\xb3" => "\xc7\xb1",
+    "\xc7\xb5" => "\xc7\xb4",  "\xc7\xb9" => "\xc7\xb8",
+    "\xc7\xbb" => "\xc7\xba",  "\xc7\xbd" => "\xc7\xbc",
+    "\xc7\xbf" => "\xc7\xbe",
+    ##   U+0200
+    "\xc8\x81" => "\xc8\x80",  "\xc8\x83" => "\xc8\x82",
+    "\xc8\x85" => "\xc8\x84",  "\xc8\x87" => "\xc8\x86",
+    "\xc8\x89" => "\xc8\x88",  "\xc8\x8b" => "\xc8\x8a",
+    "\xc8\x8d" => "\xc8\x8c",  "\xc8\x8f" => "\xc8\x8e",
+    "\xc8\x91" => "\xc8\x90",  "\xc8\x93" => "\xc8\x92",
+    "\xc8\x95" => "\xc8\x94",  "\xc8\x97" => "\xc8\x96",
+    "\xc8\x99" => "\xc8\x98",  "\xc8\x9b" => "\xc8\x9a",
+    "\xc8\x9d" => "\xc8\x9c",  "\xc8\x9f" => "\xc8\x9e",
+    "\xc8\xa3" => "\xc8\xa2",  "\xc8\xa5" => "\xc8\xa4",
+    "\xc8\xa7" => "\xc8\xa6",  "\xc8\xa9" => "\xc8\xa8",
+    "\xc8\xab" => "\xc8\xaa",  "\xc8\xad" => "\xc8\xac",
+    "\xc8\xaf" => "\xc8\xae",  "\xc8\xb1" => "\xc8\xb0",
+    "\xc8\xb3" => "\xc8\xb2",  "\xc8\xbc" => "\xc8\xbb",
+    ##   U+0240
+    "\xc9\x82" => "\xc9\x81",  "\xc9\x87" => "\xc9\x86",
+    "\xc9\x89" => "\xc9\x88",  "\xc9\x8b" => "\xc9\x8a",
+    "\xc9\x8d" => "\xc9\x8c",  "\xc9\x8f" => "\xc9\x8e",
+    "\xc9\x93" => "\xc6\x81",  "\xc9\x94" => "\xc6\x86",
+    "\xc9\x96" => "\xc6\x89",  "\xc9\x97" => "\xc6\x8a",
+    "\xc9\x99" => "\xc6\x8f",  "\xc9\x9b" => "\xc6\x90",
+    "\xc9\xa0" => "\xc6\x93",  "\xc9\xa3" => "\xc6\x94",
+    "\xc9\xa8" => "\xc6\x97",  "\xc9\xa9" => "\xc6\x96",
+    "\xc9\xab" => "\xe2\xb1\xa2",  "\xc9\xaf" => "\xc6\x9c",  
+    "\xc9\xb2" => "\xc6\x9d",  "\xc9\xb5" => "\xc6\x9f",  
+    "\xc9\xbd" => "\xe2\xb1\xa4",
+    ##   U+0280
+    "\xca\x80" => "\xc6\xa6",  "\xca\x83" => "\xc6\xa9",
+    "\xca\x88" => "\xc6\xae",  "\xca\x89" => "\xc9\x84",
+    "\xca\x8a" => "\xc6\xb1",  "\xca\x8b" => "\xc6\xb2",
+    "\xca\x8c" => "\xc9\x85",  "\xca\x92" => "\xc6\xb7",
+    ##   U+0340
+    "\xcd\x85" => "\xce\x99",  "\xcd\xbb" => "\xcf\xbd",
+    "\xcd\xbc" => "\xcf\xbe",  "\xcd\xbd" => "\xcf\xbf",
+    ##   U+0380
+    "\xce\xac" => "\xce\x86",  "\xce\xad" => "\xce\x88",
+    "\xce\xae" => "\xce\x89",  "\xce\xaf" => "\xce\x8a",
+    "\xce\xb1" => "\xce\x91",  "\xce\xb2" => "\xce\x92",
+    "\xce\xb3" => "\xce\x93",  "\xce\xb4" => "\xce\x94",
+    "\xce\xb5" => "\xce\x95",  "\xce\xb6" => "\xce\x96",
+    "\xce\xb7" => "\xce\x97",  "\xce\xb8" => "\xce\x98",
+    "\xce\xb9" => "\xce\x99",  "\xce\xba" => "\xce\x9a",
+    "\xce\xbb" => "\xce\x9b",  "\xce\xbc" => "\xce\x9c",
+    "\xce\xbd" => "\xce\x9d",  "\xce\xbe" => "\xce\x9e",
+    "\xce\xbf" => "\xce\x9f",  
+    ##   U+03c0
+    "\xcf\x80" => "\xce\xa0",  "\xcf\x81" => "\xce\xa1",
+    "\xcf\x82" => "\xce\xa3",  "\xcf\x83" => "\xce\xa3",
+    "\xcf\x84" => "\xce\xa4",  "\xcf\x85" => "\xce\xa5",
+    "\xcf\x86" => "\xce\xa6",  "\xcf\x87" => "\xce\xa7",
+    "\xcf\x88" => "\xce\xa8",  "\xcf\x89" => "\xce\xa9",
+    "\xcf\x8a" => "\xce\xaa",  "\xcf\x8b" => "\xce\xab",
+    "\xcf\x8c" => "\xce\x8c",  "\xcf\x8d" => "\xce\x8e",
+    "\xcf\x8e" => "\xce\x8f",  "\xcf\x90" => "\xce\x92",
+    "\xcf\x91" => "\xce\x98",  "\xcf\x95" => "\xce\xa6",
+    "\xcf\x96" => "\xce\xa0",  "\xcf\x99" => "\xcf\x98",
+    "\xcf\x9b" => "\xcf\x9a",  "\xcf\x9d" => "\xcf\x9c",
+    "\xcf\x9f" => "\xcf\x9e",  "\xcf\xa1" => "\xcf\xa0",
+    "\xcf\xa3" => "\xcf\xa2",  "\xcf\xa5" => "\xcf\xa4",
+    "\xcf\xa7" => "\xcf\xa6",  "\xcf\xa9" => "\xcf\xa8",
+    "\xcf\xab" => "\xcf\xaa",  "\xcf\xad" => "\xcf\xac",
+    "\xcf\xaf" => "\xcf\xae",  "\xcf\xb0" => "\xce\x9a",
+    "\xcf\xb1" => "\xce\xa1",  "\xcf\xb2" => "\xcf\xb9",
+    "\xcf\xb5" => "\xce\x95",  "\xcf\xb8" => "\xcf\xb7",
+    "\xcf\xbb" => "\xcf\xba",
+    ##   U+0400
+    "\xd0\xb0" => "\xd0\x90",  "\xd0\xb1" => "\xd0\x91",
+    "\xd0\xb2" => "\xd0\x92",  "\xd0\xb3" => "\xd0\x93",
+    "\xd0\xb4" => "\xd0\x94",  "\xd0\xb5" => "\xd0\x95",
+    "\xd0\xb6" => "\xd0\x96",  "\xd0\xb7" => "\xd0\x97",
+    "\xd0\xb8" => "\xd0\x98",  "\xd0\xb9" => "\xd0\x99",
+    "\xd0\xba" => "\xd0\x9a",  "\xd0\xbb" => "\xd0\x9b",
+    "\xd0\xbc" => "\xd0\x9c",  "\xd0\xbd" => "\xd0\x9d",
+    "\xd0\xbe" => "\xd0\x9e",  "\xd0\xbf" => "\xd0\x9f",
+    ##   U+0440
+    "\xd1\x80" => "\xd0\xa0",  "\xd1\x81" => "\xd0\xa1",
+    "\xd1\x82" => "\xd0\xa2",  "\xd1\x83" => "\xd0\xa3",
+    "\xd1\x84" => "\xd0\xa4",  "\xd1\x85" => "\xd0\xa5",
+    "\xd1\x86" => "\xd0\xa6",  "\xd1\x87" => "\xd0\xa7",
+    "\xd1\x88" => "\xd0\xa8",  "\xd1\x89" => "\xd0\xa9",
+    "\xd1\x8a" => "\xd0\xaa",  "\xd1\x8b" => "\xd0\xab",
+    "\xd1\x8c" => "\xd0\xac",  "\xd1\x8d" => "\xd0\xad",
+    "\xd1\x8e" => "\xd0\xae",  "\xd1\x8f" => "\xd0\xaf",
+    "\xd1\x90" => "\xd0\x80",  "\xd1\x91" => "\xd0\x81",
+    "\xd1\x92" => "\xd0\x82",  "\xd1\x93" => "\xd0\x83",
+    "\xd1\x94" => "\xd0\x84",  "\xd1\x95" => "\xd0\x85",
+    "\xd1\x96" => "\xd0\x86",  "\xd1\x97" => "\xd0\x87",
+    "\xd1\x98" => "\xd0\x88",  "\xd1\x99" => "\xd0\x89",
+    "\xd1\x9a" => "\xd0\x8a",  "\xd1\x9b" => "\xd0\x8b",
+    "\xd1\x9c" => "\xd0\x8c",  "\xd1\x9d" => "\xd0\x8d",
+    "\xd1\x9e" => "\xd0\x8e",  "\xd1\x9f" => "\xd0\x8f",
+    "\xd1\xa1" => "\xd1\xa0",  "\xd1\xa3" => "\xd1\xa2",
+    "\xd1\xa5" => "\xd1\xa4",  "\xd1\xa7" => "\xd1\xa6",
+    "\xd1\xa9" => "\xd1\xa8",  "\xd1\xab" => "\xd1\xaa",
+    "\xd1\xad" => "\xd1\xac",  "\xd1\xaf" => "\xd1\xae",
+    "\xd1\xb1" => "\xd1\xb0",  "\xd1\xb3" => "\xd1\xb2",
+    "\xd1\xb5" => "\xd1\xb4",  "\xd1\xb7" => "\xd1\xb6",
+    "\xd1\xb9" => "\xd1\xb8",  "\xd1\xbb" => "\xd1\xba",
+    "\xd1\xbd" => "\xd1\xbc",  "\xd1\xbf" => "\xd1\xbe",
+    ##   U+0480
+    "\xd2\x81" => "\xd2\x80",  "\xd2\x8b" => "\xd2\x8a",
+    "\xd2\x8d" => "\xd2\x8c",  "\xd2\x8f" => "\xd2\x8e",
+    "\xd2\x91" => "\xd2\x90",  "\xd2\x93" => "\xd2\x92",
+    "\xd2\x95" => "\xd2\x94",  "\xd2\x97" => "\xd2\x96",
+    "\xd2\x99" => "\xd2\x98",  "\xd2\x9b" => "\xd2\x9a",
+    "\xd2\x9d" => "\xd2\x9c",  "\xd2\x9f" => "\xd2\x9e",
+    "\xd2\xa1" => "\xd2\xa0",  "\xd2\xa3" => "\xd2\xa2",
+    "\xd2\xa5" => "\xd2\xa4",  "\xd2\xa7" => "\xd2\xa6",
+    "\xd2\xa9" => "\xd2\xa8",  "\xd2\xab" => "\xd2\xaa",
+    "\xd2\xad" => "\xd2\xac",  "\xd2\xaf" => "\xd2\xae",
+    "\xd2\xb1" => "\xd2\xb0",  "\xd2\xb3" => "\xd2\xb2",
+    "\xd2\xb5" => "\xd2\xb4",  "\xd2\xb7" => "\xd2\xb6",
+    "\xd2\xb9" => "\xd2\xb8",  "\xd2\xbb" => "\xd2\xba",
+    "\xd2\xbd" => "\xd2\xbc",  "\xd2\xbf" => "\xd2\xbe",
+    ##   U+04c0
+    "\xd3\x82" => "\xd3\x81",  "\xd3\x84" => "\xd3\x83",
+    "\xd3\x86" => "\xd3\x85",  "\xd3\x88" => "\xd3\x87",
+    "\xd3\x8a" => "\xd3\x89",  "\xd3\x8c" => "\xd3\x8b",
+    "\xd3\x8e" => "\xd3\x8d",  "\xd3\x8f" => "\xd3\x80",
+    "\xd3\x91" => "\xd3\x90",  "\xd3\x93" => "\xd3\x92",
+    "\xd3\x95" => "\xd3\x94",  "\xd3\x97" => "\xd3\x96",
+    "\xd3\x99" => "\xd3\x98",  "\xd3\x9b" => "\xd3\x9a",
+    "\xd3\x9d" => "\xd3\x9c",  "\xd3\x9f" => "\xd3\x9e",
+    "\xd3\xa1" => "\xd3\xa0",  "\xd3\xa3" => "\xd3\xa2",
+    "\xd3\xa5" => "\xd3\xa4",  "\xd3\xa7" => "\xd3\xa6",
+    "\xd3\xa9" => "\xd3\xa8",  "\xd3\xab" => "\xd3\xaa",
+    "\xd3\xad" => "\xd3\xac",  "\xd3\xaf" => "\xd3\xae",
+    "\xd3\xb1" => "\xd3\xb0",  "\xd3\xb3" => "\xd3\xb2",
+    "\xd3\xb5" => "\xd3\xb4",  "\xd3\xb7" => "\xd3\xb6",
+    "\xd3\xb9" => "\xd3\xb8",  "\xd3\xbb" => "\xd3\xba",
+    "\xd3\xbd" => "\xd3\xbc",  "\xd3\xbf" => "\xd3\xbe",
+    ##   U+0500
+    "\xd4\x81" => "\xd4\x80",  "\xd4\x83" => "\xd4\x82",
+    "\xd4\x85" => "\xd4\x84",  "\xd4\x87" => "\xd4\x86",
+    "\xd4\x89" => "\xd4\x88",  "\xd4\x8b" => "\xd4\x8a",
+    "\xd4\x8d" => "\xd4\x8c",  "\xd4\x8f" => "\xd4\x8e",
+    "\xd4\x91" => "\xd4\x90",  "\xd4\x93" => "\xd4\x92",
+    ##   U+0560
+    "\xd5\xa1" => "\xd4\xb1",  "\xd5\xa2" => "\xd4\xb2",
+    "\xd5\xa3" => "\xd4\xb3",  "\xd5\xa4" => "\xd4\xb4",
+    "\xd5\xa5" => "\xd4\xb5",  "\xd5\xa6" => "\xd4\xb6",
+    "\xd5\xa7" => "\xd4\xb7",  "\xd5\xa8" => "\xd4\xb8",
+    "\xd5\xa9" => "\xd4\xb9",  "\xd5\xaa" => "\xd4\xba",
+    "\xd5\xab" => "\xd4\xbb",  "\xd5\xac" => "\xd4\xbc",
+    "\xd5\xad" => "\xd4\xbd",  "\xd5\xae" => "\xd4\xbe",
+    "\xd5\xaf" => "\xd4\xbf",  "\xd5\xb0" => "\xd5\x80",
+    "\xd5\xb1" => "\xd5\x81",  "\xd5\xb2" => "\xd5\x82",
+    "\xd5\xb3" => "\xd5\x83",  "\xd5\xb4" => "\xd5\x84",
+    "\xd5\xb5" => "\xd5\x85",  "\xd5\xb6" => "\xd5\x86",
+    "\xd5\xb7" => "\xd5\x87",  "\xd5\xb8" => "\xd5\x88",
+    "\xd5\xb9" => "\xd5\x89",  "\xd5\xba" => "\xd5\x8a",
+    "\xd5\xbb" => "\xd5\x8b",  "\xd5\xbc" => "\xd5\x8c",
+    "\xd5\xbd" => "\xd5\x8d",  "\xd5\xbe" => "\xd5\x8e",
+    "\xd5\xbf" => "\xd5\x8f",
+    ##   U+0580
+    "\xd6\x80" => "\xd5\x90",  "\xd6\x81" => "\xd5\x91",
+    "\xd6\x82" => "\xd5\x92",  "\xd6\x83" => "\xd5\x93",
+    "\xd6\x84" => "\xd5\x94",  "\xd6\x85" => "\xd5\x95",
+    "\xd6\x86" => "\xd5\x96"
+  ));
+
+SDV($StringFolding, array(
+    ##   U+0040
+    "A" => "a", "B" => "b", "C" => "c", "D" => "d", "E" => "e", "F" => "f",
+    "G" => "g", "H" => "h", "I" => "i", "J" => "j", "K" => "k", "L" => "l",
+    "M" => "m", "N" => "n", "O" => "o", "P" => "p", "Q" => "q", "R" => "r",
+    "S" => "s", "T" => "t", "U" => "u", "V" => "v", "W" => "w", "X" => "x",
+    "Y" => "y", "Z" => "z",
+    ##   U+00B5
+    "\xc2\xb5" => "\xce\xbc",
+    ##   U+00C0
+    "\xc3\x80" => "\xc3\xa0",  "\xc3\x81" => "\xc3\xa1",
+    "\xc3\x82" => "\xc3\xa2",  "\xc3\x83" => "\xc3\xa3",
+    "\xc3\x84" => "\xc3\xa4",  "\xc3\x85" => "\xc3\xa5",
+    "\xc3\x86" => "\xc3\xa6",  "\xc3\x87" => "\xc3\xa7",
+    "\xc3\x88" => "\xc3\xa8",  "\xc3\x89" => "\xc3\xa9",
+    "\xc3\x8a" => "\xc3\xaa",  "\xc3\x8b" => "\xc3\xab",
+    "\xc3\x8c" => "\xc3\xac",  "\xc3\x8d" => "\xc3\xad",
+    "\xc3\x8e" => "\xc3\xae",  "\xc3\x8f" => "\xc3\xaf",
+    "\xc3\x90" => "\xc3\xb0",  "\xc3\x91" => "\xc3\xb1",
+    "\xc3\x92" => "\xc3\xb2",  "\xc3\x93" => "\xc3\xb3",
+    "\xc3\x94" => "\xc3\xb4",  "\xc3\x95" => "\xc3\xb5",
+    "\xc3\x96" => "\xc3\xb6",  "\xc3\x98" => "\xc3\xb8",
+    "\xc3\x99" => "\xc3\xb9",  "\xc3\x9a" => "\xc3\xba",
+    "\xc3\x9b" => "\xc3\xbb",  "\xc3\x9c" => "\xc3\xbc",
+    "\xc3\x9d" => "\xc3\xbd",  "\xc3\x9e" => "\xc3\xbe",
+    "\xc3\x9f" => "ss",
+    ##   U+0100
+    "\xc4\x80" => "\xc4\x81",  "\xc4\x82" => "\xc4\x83",
+    "\xc4\x84" => "\xc4\x85",  "\xc4\x86" => "\xc4\x87",
+    "\xc4\x88" => "\xc4\x89",  "\xc4\x8a" => "\xc4\x8b",
+    "\xc4\x8c" => "\xc4\x8d",  "\xc4\x8e" => "\xc4\x8f",
+    "\xc4\x90" => "\xc4\x91",  "\xc4\x92" => "\xc4\x93",
+    "\xc4\x94" => "\xc4\x95",  "\xc4\x96" => "\xc4\x97",
+    "\xc4\x98" => "\xc4\x99",  "\xc4\x9a" => "\xc4\x9b",
+    "\xc4\x9c" => "\xc4\x9d",  "\xc4\x9e" => "\xc4\x9f",
+    "\xc4\xa0" => "\xc4\xa1",  "\xc4\xa2" => "\xc4\xa3",
+    "\xc4\xa4" => "\xc4\xa5",  "\xc4\xa6" => "\xc4\xa7",
+    "\xc4\xa8" => "\xc4\xa9",  "\xc4\xaa" => "\xc4\xab",
+    "\xc4\xac" => "\xc4\xad",  "\xc4\xae" => "\xc4\xaf",
+    "\xc4\xb0" => "i\xcc\x87",  "\xc4\xb2" => "\xc4\xb3",
+    "\xc4\xb4" => "\xc4\xb5",  "\xc4\xb6" => "\xc4\xb7",
+    "\xc4\xb9" => "\xc4\xba",  "\xc4\xbb" => "\xc4\xbc",
+    "\xc4\xbd" => "\xc4\xbe",  "\xc4\xbf" => "\xc5\x80",
+    ##   U+0140
+    "\xc5\x81" => "\xc5\x82",  "\xc5\x83" => "\xc5\x84",
+    "\xc5\x85" => "\xc5\x86",  "\xc5\x87" => "\xc5\x88",
+    "\xc5\x89" => "\xca\xbcn",  "\xc5\x8a" => "\xc5\x8b",
+    "\xc5\x8c" => "\xc5\x8d",  "\xc5\x8e" => "\xc5\x8f",
+    "\xc5\x90" => "\xc5\x91",  "\xc5\x92" => "\xc5\x93",
+    "\xc5\x94" => "\xc5\x95",  "\xc5\x96" => "\xc5\x97",
+    "\xc5\x98" => "\xc5\x99",  "\xc5\x9a" => "\xc5\x9b",
+    "\xc5\x9c" => "\xc5\x9d",  "\xc5\x9e" => "\xc5\x9f",
+    "\xc5\xa0" => "\xc5\xa1",  "\xc5\xa2" => "\xc5\xa3",
+    "\xc5\xa4" => "\xc5\xa5",  "\xc5\xa6" => "\xc5\xa7",
+    "\xc5\xa8" => "\xc5\xa9",  "\xc5\xaa" => "\xc5\xab",
+    "\xc5\xac" => "\xc5\xad",  "\xc5\xae" => "\xc5\xaf",
+    "\xc5\xb0" => "\xc5\xb1",  "\xc5\xb2" => "\xc5\xb3",
+    "\xc5\xb4" => "\xc5\xb5",  "\xc5\xb6" => "\xc5\xb7",
+    "\xc5\xb8" => "\xc3\xbf",  "\xc5\xb9" => "\xc5\xba",
+    "\xc5\xbb" => "\xc5\xbc",  "\xc5\xbd" => "\xc5\xbe",
+    "\xc5\xbf" => "s",
+    ##   U+0180
+    "\xc6\x81" => "\xc9\x93",  "\xc6\x82" => "\xc6\x83",
+    "\xc6\x84" => "\xc6\x85",  "\xc6\x86" => "\xc9\x94",
+    "\xc6\x87" => "\xc6\x88",  "\xc6\x89" => "\xc9\x96",
+    "\xc6\x8a" => "\xc9\x97",  "\xc6\x8b" => "\xc6\x8c",
+    "\xc6\x8e" => "\xc7\x9d",  "\xc6\x8f" => "\xc9\x99",
+    "\xc6\x90" => "\xc9\x9b",  "\xc6\x91" => "\xc6\x92",
+    "\xc6\x93" => "\xc9\xa0",  "\xc6\x94" => "\xc9\xa3",
+    "\xc6\x96" => "\xc9\xa9",  "\xc6\x97" => "\xc9\xa8",
+    "\xc6\x98" => "\xc6\x99",  "\xc6\x9c" => "\xc9\xaf",
+    "\xc6\x9d" => "\xc9\xb2",  "\xc6\x9f" => "\xc9\xb5",
+    "\xc6\xa0" => "\xc6\xa1",  "\xc6\xa2" => "\xc6\xa3",
+    "\xc6\xa4" => "\xc6\xa5",  "\xc6\xa6" => "\xca\x80",
+    "\xc6\xa7" => "\xc6\xa8",  "\xc6\xa9" => "\xca\x83",
+    "\xc6\xac" => "\xc6\xad",  "\xc6\xae" => "\xca\x88",
+    "\xc6\xaf" => "\xc6\xb0",  "\xc6\xb1" => "\xca\x8a",
+    "\xc6\xb2" => "\xca\x8b",  "\xc6\xb3" => "\xc6\xb4",
+    "\xc6\xb5" => "\xc6\xb6",  "\xc6\xb7" => "\xca\x92",
+    "\xc6\xb8" => "\xc6\xb9",  "\xc6\xbc" => "\xc6\xbd",
+    ##   U+01c0
+    "\xc7\x84" => "\xc7\x86",  "\xc7\x85" => "\xc7\x86",
+    "\xc7\x87" => "\xc7\x89",  "\xc7\x88" => "\xc7\x89",
+    "\xc7\x8a" => "\xc7\x8c",  "\xc7\x8b" => "\xc7\x8c",
+    "\xc7\x8d" => "\xc7\x8e",  "\xc7\x8f" => "\xc7\x90",
+    "\xc7\x91" => "\xc7\x92",  "\xc7\x93" => "\xc7\x94",
+    "\xc7\x95" => "\xc7\x96",  "\xc7\x97" => "\xc7\x98",
+    "\xc7\x99" => "\xc7\x9a",  "\xc7\x9b" => "\xc7\x9c",
+    "\xc7\x9e" => "\xc7\x9f",  "\xc7\xa0" => "\xc7\xa1",
+    "\xc7\xa2" => "\xc7\xa3",  "\xc7\xa4" => "\xc7\xa5",
+    "\xc7\xa6" => "\xc7\xa7",  "\xc7\xa8" => "\xc7\xa9",
+    "\xc7\xaa" => "\xc7\xab",  "\xc7\xac" => "\xc7\xad",
+    "\xc7\xae" => "\xc7\xaf",  "\xc7\xb0" => "j\xcc\x8c",
+    "\xc7\xb1" => "\xc7\xb3",  "\xc7\xb2" => "\xc7\xb3",
+    "\xc7\xb4" => "\xc7\xb5",  "\xc7\xb6" => "\xc6\x95",
+    "\xc7\xb7" => "\xc6\xbf",  "\xc7\xb8" => "\xc7\xb9",
+    "\xc7\xba" => "\xc7\xbb",  "\xc7\xbc" => "\xc7\xbd",
+    "\xc7\xbe" => "\xc7\xbf",
+    ##   U+0200
+    "\xc8\x80" => "\xc8\x81",  "\xc8\x82" => "\xc8\x83",
+    "\xc8\x84" => "\xc8\x85",  "\xc8\x86" => "\xc8\x87",
+    "\xc8\x88" => "\xc8\x89",  "\xc8\x8a" => "\xc8\x8b",
+    "\xc8\x8c" => "\xc8\x8d",  "\xc8\x8e" => "\xc8\x8f",
+    "\xc8\x90" => "\xc8\x91",  "\xc8\x92" => "\xc8\x93",
+    "\xc8\x94" => "\xc8\x95",  "\xc8\x96" => "\xc8\x97",
+    "\xc8\x98" => "\xc8\x99",  "\xc8\x9a" => "\xc8\x9b",
+    "\xc8\x9c" => "\xc8\x9d",  "\xc8\x9e" => "\xc8\x9f",
+    "\xc8\xa0" => "\xc6\x9e",  "\xc8\xa2" => "\xc8\xa3",
+    "\xc8\xa4" => "\xc8\xa5",  "\xc8\xa6" => "\xc8\xa7",
+    "\xc8\xa8" => "\xc8\xa9",  "\xc8\xaa" => "\xc8\xab",
+    "\xc8\xac" => "\xc8\xad",  "\xc8\xae" => "\xc8\xaf",
+    "\xc8\xb0" => "\xc8\xb1",  "\xc8\xb2" => "\xc8\xb3",
+    "\xc8\xba" => "\xe2\xb1\xa5",  "\xc8\xbb" => "\xc8\xbc",
+    "\xc8\xbd" => "\xc6\x9a",  "\xc8\xbe" => "\xe2\xb1\xa6",
+    ##   U+0240
+    "\xc9\x81" => "\xc9\x82",  "\xc9\x83" => "\xc6\x80",
+    "\xc9\x84" => "\xca\x89",  "\xc9\x85" => "\xca\x8c",
+    "\xc9\x86" => "\xc9\x87",  "\xc9\x88" => "\xc9\x89",
+    "\xc9\x8a" => "\xc9\x8b",  "\xc9\x8c" => "\xc9\x8d",
+    "\xc9\x8e" => "\xc9\x8f",
+    ##   U+0345
+    "\xcd\x85" => "\xce\xb9",
+    ##   U+0380
+    "\xce\x86" => "\xce\xac",  "\xce\x88" => "\xce\xad",
+    "\xce\x89" => "\xce\xae",  "\xce\x8a" => "\xce\xaf",
+    "\xce\x8c" => "\xcf\x8c",  "\xce\x8e" => "\xcf\x8d",
+    "\xce\x8f" => "\xcf\x8e",  "\xce\x90" => "\xce\xb9\xcc\x88\xcc\x81",
+    "\xce\x91" => "\xce\xb1",  "\xce\x92" => "\xce\xb2",
+    "\xce\x93" => "\xce\xb3",  "\xce\x94" => "\xce\xb4",
+    "\xce\x95" => "\xce\xb5",  "\xce\x96" => "\xce\xb6",
+    "\xce\x97" => "\xce\xb7",  "\xce\x98" => "\xce\xb8",
+    "\xce\x99" => "\xce\xb9",  "\xce\x9a" => "\xce\xba",
+    "\xce\x9b" => "\xce\xbb",  "\xce\x9c" => "\xce\xbc",
+    "\xce\x9d" => "\xce\xbd",  "\xce\x9e" => "\xce\xbe",
+    "\xce\x9f" => "\xce\xbf",  "\xce\xa0" => "\xcf\x80",
+    "\xce\xa1" => "\xcf\x81",  "\xce\xa3" => "\xcf\x83",
+    "\xce\xa4" => "\xcf\x84",  "\xce\xa5" => "\xcf\x85",
+    "\xce\xa6" => "\xcf\x86",  "\xce\xa7" => "\xcf\x87",
+    "\xce\xa8" => "\xcf\x88",  "\xce\xa9" => "\xcf\x89",
+    "\xce\xaa" => "\xcf\x8a",  "\xce\xab" => "\xcf\x8b",
+    "\xce\xb0" => "\xcf\x85\xcc\x88\xcc\x81",
+    ##   U+03c0
+    "\xcf\x82" => "\xcf\x83",  "\xcf\x90" => "\xce\xb2",
+    "\xcf\x91" => "\xce\xb8",  "\xcf\x95" => "\xcf\x86",
+    "\xcf\x96" => "\xcf\x80",  "\xcf\x98" => "\xcf\x99",
+    "\xcf\x9a" => "\xcf\x9b",  "\xcf\x9c" => "\xcf\x9d",
+    "\xcf\x9e" => "\xcf\x9f",  "\xcf\xa0" => "\xcf\xa1",
+    "\xcf\xa2" => "\xcf\xa3",  "\xcf\xa4" => "\xcf\xa5",
+    "\xcf\xa6" => "\xcf\xa7",  "\xcf\xa8" => "\xcf\xa9",
+    "\xcf\xaa" => "\xcf\xab",  "\xcf\xac" => "\xcf\xad",
+    "\xcf\xae" => "\xcf\xaf",  "\xcf\xb0" => "\xce\xba",
+    "\xcf\xb1" => "\xcf\x81",  "\xcf\xb4" => "\xce\xb8",
+    "\xcf\xb5" => "\xce\xb5",  "\xcf\xb7" => "\xcf\xb8",
+    "\xcf\xb9" => "\xcf\xb2",  "\xcf\xba" => "\xcf\xbb",
+    "\xcf\xbd" => "\xcd\xbb",  "\xcf\xbe" => "\xcd\xbc",
+    "\xcf\xbf" => "\xcd\xbd",
+    ##   U+0400
+    "\xd0\x80" => "\xd1\x90",  "\xd0\x81" => "\xd1\x91",
+    "\xd0\x82" => "\xd1\x92",  "\xd0\x83" => "\xd1\x93",
+    "\xd0\x84" => "\xd1\x94",  "\xd0\x85" => "\xd1\x95",
+    "\xd0\x86" => "\xd1\x96",  "\xd0\x87" => "\xd1\x97",
+    "\xd0\x88" => "\xd1\x98",  "\xd0\x89" => "\xd1\x99",
+    "\xd0\x8a" => "\xd1\x9a",  "\xd0\x8b" => "\xd1\x9b",
+    "\xd0\x8c" => "\xd1\x9c",  "\xd0\x8d" => "\xd1\x9d",
+    "\xd0\x8e" => "\xd1\x9e",  "\xd0\x8f" => "\xd1\x9f",
+    "\xd0\x90" => "\xd0\xb0",  "\xd0\x91" => "\xd0\xb1",
+    "\xd0\x92" => "\xd0\xb2",  "\xd0\x93" => "\xd0\xb3",
+    "\xd0\x94" => "\xd0\xb4",  "\xd0\x95" => "\xd0\xb5",
+    "\xd0\x96" => "\xd0\xb6",  "\xd0\x97" => "\xd0\xb7",
+    "\xd0\x98" => "\xd0\xb8",  "\xd0\x99" => "\xd0\xb9",
+    "\xd0\x9a" => "\xd0\xba",  "\xd0\x9b" => "\xd0\xbb",
+    "\xd0\x9c" => "\xd0\xbc",  "\xd0\x9d" => "\xd0\xbd",
+    "\xd0\x9e" => "\xd0\xbe",  "\xd0\x9f" => "\xd0\xbf",
+    "\xd0\xa0" => "\xd1\x80",  "\xd0\xa1" => "\xd1\x81",
+    "\xd0\xa2" => "\xd1\x82",  "\xd0\xa3" => "\xd1\x83",
+    "\xd0\xa4" => "\xd1\x84",  "\xd0\xa5" => "\xd1\x85",
+    "\xd0\xa6" => "\xd1\x86",  "\xd0\xa7" => "\xd1\x87",
+    "\xd0\xa8" => "\xd1\x88",  "\xd0\xa9" => "\xd1\x89",
+    "\xd0\xaa" => "\xd1\x8a",  "\xd0\xab" => "\xd1\x8b",
+    "\xd0\xac" => "\xd1\x8c",  "\xd0\xad" => "\xd1\x8d",
+    "\xd0\xae" => "\xd1\x8e",  "\xd0\xaf" => "\xd1\x8f",
+    ##   U+0460
+    "\xd1\xa0" => "\xd1\xa1",  "\xd1\xa2" => "\xd1\xa3",
+    "\xd1\xa4" => "\xd1\xa5",  "\xd1\xa6" => "\xd1\xa7",
+    "\xd1\xa8" => "\xd1\xa9",  "\xd1\xaa" => "\xd1\xab",
+    "\xd1\xac" => "\xd1\xad",  "\xd1\xae" => "\xd1\xaf",
+    "\xd1\xb0" => "\xd1\xb1",  "\xd1\xb2" => "\xd1\xb3",
+    "\xd1\xb4" => "\xd1\xb5",  "\xd1\xb6" => "\xd1\xb7",
+    "\xd1\xb8" => "\xd1\xb9",  "\xd1\xba" => "\xd1\xbb",
+    "\xd1\xbc" => "\xd1\xbd",  "\xd1\xbe" => "\xd1\xbf",
+    ##   U+0480
+    "\xd2\x80" => "\xd2\x81",  "\xd2\x8a" => "\xd2\x8b",
+    "\xd2\x8c" => "\xd2\x8d",  "\xd2\x8e" => "\xd2\x8f",
+    "\xd2\x90" => "\xd2\x91",  "\xd2\x92" => "\xd2\x93",
+    "\xd2\x94" => "\xd2\x95",  "\xd2\x96" => "\xd2\x97",
+    "\xd2\x98" => "\xd2\x99",  "\xd2\x9a" => "\xd2\x9b",
+    "\xd2\x9c" => "\xd2\x9d",  "\xd2\x9e" => "\xd2\x9f",
+    "\xd2\xa0" => "\xd2\xa1",  "\xd2\xa2" => "\xd2\xa3",
+    "\xd2\xa4" => "\xd2\xa5",  "\xd2\xa6" => "\xd2\xa7",
+    "\xd2\xa8" => "\xd2\xa9",  "\xd2\xaa" => "\xd2\xab",
+    "\xd2\xac" => "\xd2\xad",  "\xd2\xae" => "\xd2\xaf",
+    "\xd2\xb0" => "\xd2\xb1",  "\xd2\xb2" => "\xd2\xb3",
+    "\xd2\xb4" => "\xd2\xb5",  "\xd2\xb6" => "\xd2\xb7",
+    "\xd2\xb8" => "\xd2\xb9",  "\xd2\xba" => "\xd2\xbb",
+    "\xd2\xbc" => "\xd2\xbd",  "\xd2\xbe" => "\xd2\xbf",
+    ##   U+04c0
+    "\xd3\x80" => "\xd3\x8f",  "\xd3\x81" => "\xd3\x82",
+    "\xd3\x83" => "\xd3\x84",  "\xd3\x85" => "\xd3\x86",
+    "\xd3\x87" => "\xd3\x88",  "\xd3\x89" => "\xd3\x8a",
+    "\xd3\x8b" => "\xd3\x8c",  "\xd3\x8d" => "\xd3\x8e",
+    "\xd3\x90" => "\xd3\x91",  "\xd3\x92" => "\xd3\x93",
+    "\xd3\x94" => "\xd3\x95",  "\xd3\x96" => "\xd3\x97",
+    "\xd3\x98" => "\xd3\x99",  "\xd3\x9a" => "\xd3\x9b",
+    "\xd3\x9c" => "\xd3\x9d",  "\xd3\x9e" => "\xd3\x9f",
+    "\xd3\xa0" => "\xd3\xa1",  "\xd3\xa2" => "\xd3\xa3",
+    "\xd3\xa4" => "\xd3\xa5",  "\xd3\xa6" => "\xd3\xa7",
+    "\xd3\xa8" => "\xd3\xa9",  "\xd3\xaa" => "\xd3\xab",
+    "\xd3\xac" => "\xd3\xad",  "\xd3\xae" => "\xd3\xaf",
+    "\xd3\xb0" => "\xd3\xb1",  "\xd3\xb2" => "\xd3\xb3",
+    "\xd3\xb4" => "\xd3\xb5",  "\xd3\xb6" => "\xd3\xb7",
+    "\xd3\xb8" => "\xd3\xb9",  "\xd3\xba" => "\xd3\xbb",
+    "\xd3\xbc" => "\xd3\xbd",  "\xd3\xbe" => "\xd3\xbf",
+    ##   U+0500
+    "\xd4\x80" => "\xd4\x81",  "\xd4\x82" => "\xd4\x83",
+    "\xd4\x84" => "\xd4\x85",  "\xd4\x86" => "\xd4\x87",
+    "\xd4\x88" => "\xd4\x89",  "\xd4\x8a" => "\xd4\x8b",
+    "\xd4\x8c" => "\xd4\x8d",  "\xd4\x8e" => "\xd4\x8f",
+    "\xd4\x90" => "\xd4\x91",  "\xd4\x92" => "\xd4\x93",
+    "\xd4\xb1" => "\xd5\xa1",  "\xd4\xb2" => "\xd5\xa2",
+    "\xd4\xb3" => "\xd5\xa3",  "\xd4\xb4" => "\xd5\xa4",
+    "\xd4\xb5" => "\xd5\xa5",  "\xd4\xb6" => "\xd5\xa6",
+    "\xd4\xb7" => "\xd5\xa7",  "\xd4\xb8" => "\xd5\xa8",
+    "\xd4\xb9" => "\xd5\xa9",  "\xd4\xba" => "\xd5\xaa",
+    "\xd4\xbb" => "\xd5\xab",  "\xd4\xbc" => "\xd5\xac",
+    "\xd4\xbd" => "\xd5\xad",  "\xd4\xbe" => "\xd5\xae",
+    "\xd4\xbf" => "\xd5\xaf",
+    ##   U+0540
+    "\xd5\x80" => "\xd5\xb0",  "\xd5\x81" => "\xd5\xb1",
+    "\xd5\x82" => "\xd5\xb2",  "\xd5\x83" => "\xd5\xb3",
+    "\xd5\x84" => "\xd5\xb4",  "\xd5\x85" => "\xd5\xb5",
+    "\xd5\x86" => "\xd5\xb6",  "\xd5\x87" => "\xd5\xb7",
+    "\xd5\x88" => "\xd5\xb8",  "\xd5\x89" => "\xd5\xb9",
+    "\xd5\x8a" => "\xd5\xba",  "\xd5\x8b" => "\xd5\xbb",
+    "\xd5\x8c" => "\xd5\xbc",  "\xd5\x8d" => "\xd5\xbd",
+    "\xd5\x8e" => "\xd5\xbe",  "\xd5\x8f" => "\xd5\xbf",
+    "\xd5\x90" => "\xd6\x80",  "\xd5\x91" => "\xd6\x81",
+    "\xd5\x92" => "\xd6\x82",  "\xd5\x93" => "\xd6\x83",
+    "\xd5\x94" => "\xd6\x84",  "\xd5\x95" => "\xd6\x85",
+    "\xd5\x96" => "\xd6\x86",  "\xd6\x87" => "\xd5\xa5\xd6\x82"
+  ));  
blob - /dev/null
blob + 2431a63295de440f830eff254ff1203cc11b44ae (mode 644)
Binary files /dev/null and uploads/9/JSDrawterm.png differ
blob - /dev/null
blob + 476afc5dfbfbd9d7a52b4e6edd5bbab42be910b7 (mode 644)
Binary files /dev/null and uploads/9/acmemail.png differ
blob - /dev/null
blob + 32935c718c48b62720ab781ca6f491778a184f95 (mode 644)
Binary files /dev/null and uploads/9/plan9-desktop.png differ
blob - /dev/null
blob + ee85f95a14c976f08682882e6e4796c3b99faa4d (mode 644)
Binary files /dev/null and uploads/Adium/adium-assistant.png differ
blob - /dev/null
blob + ca3cc518588fc209aacb95d6e77f3fe862c9aea2 (mode 644)
Binary files /dev/null and uploads/Adium/adium-available.png differ
blob - /dev/null
blob + a45d944e58e0d0b86aca13968596df86d84e6ae8 (mode 644)
Binary files /dev/null and uploads/Adium/adium-congrats.png differ
blob - /dev/null
blob + 47d04a3ca18860b1cfb14c30883dfd872784efaf (mode 644)
Binary files /dev/null and uploads/Adium/adium-createnewaccount.png differ
blob - /dev/null
blob + 852593398c1e28ba1175fb0560a1a357e255b050 (mode 644)
Binary files /dev/null and uploads/Adium/adium-editaccount.png differ
blob - /dev/null
blob + 25c04ad95f8978a314b099655f63df164d01e41c (mode 644)
Binary files /dev/null and uploads/Adium/adium-menu.png differ
blob - /dev/null
blob + fe3f93891e192182d278485eb281ab93e884f9c9 (mode 644)
Binary files /dev/null and uploads/Adium/adium-registrationsuccessful.png differ
blob - /dev/null
blob + 1350bc39eec87588815d5bdf0dd2d3f096e7ad4f (mode 644)
Binary files /dev/null and uploads/Adium/adium-server.png differ
blob - /dev/null
blob + 95ad493dfa0cb1352adf12dfbad495036fc354f7 (mode 644)
Binary files /dev/null and uploads/Adium/adium-welcome.png differ
blob - /dev/null
blob + 3f1ad66d1b8d0f79477b3e45f0e94ec4e6aa2334 (mode 644)
Binary files /dev/null and uploads/Adium/adium-zerobyte.png differ
blob - /dev/null
blob + fe3f93891e192182d278485eb281ab93e884f9c9 (mode 644)
Binary files /dev/null and uploads/Adium/registrationsuccessful.png differ
blob - /dev/null
blob + 0c8648e96aaf868f07e39caf1255266d456e49c8 (mode 644)
Binary files /dev/null and uploads/AncientWisdom/AncientCabin differ
blob - /dev/null
blob + 0c8648e96aaf868f07e39caf1255266d456e49c8 (mode 644)
Binary files /dev/null and uploads/AncientWisdom/AncientCabin.png differ
blob - /dev/null
blob + 09b8b7ba00deaad2426b0d5334594af719c169d8 (mode 644)
Binary files /dev/null and uploads/AncientWisdom/AncientWisdom.mp3 differ
blob - /dev/null
blob + d6572be85e0b2f1e1e064ea6888cc7a2fde6d49d (mode 644)
Binary files /dev/null and uploads/AncientWisdom/AncientWisdom.mp3,1644125124 differ
blob - /dev/null
blob + f166dd6c9c2f0a1ede14ab3fb6ef504ececdf51d (mode 644)
Binary files /dev/null and uploads/AndroidEmail/android-mail-account.png differ
blob - /dev/null
blob + fc1e52470feee69c3ecb2739739b6484a2cbd64e (mode 644)
Binary files /dev/null and uploads/AndroidEmail/android-mail-imap.png differ
blob - /dev/null
blob + ce2e80a3cf2ba673cff0f90969a335026b6a57bf (mode 644)
Binary files /dev/null and uploads/AndroidEmail/android-mail-smtp.png differ
blob - /dev/null
blob + f389b1ccbf02ff0c2bb017b6393e82e7a1ca7bbf (mode 644)
Binary files /dev/null and uploads/AndroidEmail/android-mail-type.png differ
blob - /dev/null
blob + f7a81d983e3ccf30815d1db23ee0685a6e4e0f6f (mode 644)
Binary files /dev/null and uploads/AppleMail/applemail-addaccount01.png differ
blob - /dev/null
blob + f969c43c84b704dcfbc0e1ba471c9e382365f814 (mode 644)
Binary files /dev/null and uploads/AppleMail/applemail-addaccount02.png differ
blob - /dev/null
blob + 5f1297f9e190ff0996ff8041408c641b76311702 (mode 644)
Binary files /dev/null and uploads/AppleMail/applemail-chooseprovider.png differ
blob - /dev/null
blob + 7bc500b41641be2b5556e3cd8c3bb22267dbbff0 (mode 644)
Binary files /dev/null and uploads/AppleMail/applemail-inbox.png differ
blob - /dev/null
blob + d8909e811b19ee69fe935b93c188de20d2304340 (mode 644)
Binary files /dev/null and uploads/AppleMail/applemail-selectapps.png differ
blob - /dev/null
blob + ad17f198c651ebe6190330999e16495aaf5bc73d (mode 644)
Binary files /dev/null and uploads/Bouncer/WinIRC-connect differ
blob - /dev/null
blob + ad17f198c651ebe6190330999e16495aaf5bc73d (mode 644)
Binary files /dev/null and uploads/Bouncer/WinIRC-connect.png differ
blob - /dev/null
blob + d8125e033d15ebba26538717578304e7acf9beea (mode 644)
Binary files /dev/null and uploads/Bouncer/adium-account.png differ
blob - /dev/null
blob + 4f0c408f559dcc6edb8fdd4d29b4579ab9ca9d75 (mode 644)
Binary files /dev/null and uploads/Bouncer/adium-accounts.png differ
blob - /dev/null
blob + f74f437f561af9e5a14409d334620d7975c1ae36 (mode 644)
Binary files /dev/null and uploads/Bouncer/adium-add.png differ
blob - /dev/null
blob + ec91debe7314850890276f6b638184ef65ea0d7a (mode 644)
Binary files /dev/null and uploads/Bouncer/adium-options.png differ
blob - /dev/null
blob + 470aef68c447d90f73bb8e32d8d9b39196fd4dad (mode 644)
Binary files /dev/null and uploads/Bouncer/adium-personal.png differ
blob - /dev/null
blob + 6466bc27bc41a2a4d692084013272b45a0dde15e (mode 644)
Binary files /dev/null and uploads/Bouncer/adium-preferences.png differ
blob - /dev/null
blob + 8646a751d32547493e7b3d9af7d30f25d7ed4911 (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-dots1.png differ
blob - /dev/null
blob + 7e4b2b05ce7b169de278661b86335382e38f6166 (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-dots1.png,1597488386 differ
blob - /dev/null
blob + f50906f4fbb903e9c4acab6162ea79c90c028811 (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-dots2.png differ
blob - /dev/null
blob + cc4b61084b34c98d875c892fe0c09a16f109a363 (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-newserver.png differ
blob - /dev/null
blob + 76a4e81fc2296fab5a896fce68035679650844e0 (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-select.png differ
blob - /dev/null
blob + 7f96e012470339caf109bd7efb8bee5b742f333b (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-select.png,1597488834 differ
blob - /dev/null
blob + a0f4b8354b76394f94321475734e4af1a73250ba (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-server.png differ
blob - /dev/null
blob + 9651eb260d7f8accd7498dde0ad1f53b569e629b (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-server1.png differ
blob - /dev/null
blob + f46d24d6b2b8016032d5c0e1c1c1ccb9c522e092 (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-server1.png,1597488687 differ
blob - /dev/null
blob + 6ecac9b5c88f33433c4bc170ff9562dddcd2d0c8 (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-server2.png differ
blob - /dev/null
blob + 28545f8c1f0438e1804fba67232bd74cd3eff89a (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-settings.png differ
blob - /dev/null
blob + fdd7dcfd758127ecc21f9f91cb60e137adf9bfaa (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-settings.png,1597488459 differ
blob - /dev/null
blob + 9032c9fdee93bfe7aef13f2dee013f51f7911d0e (mode 644)
Binary files /dev/null and uploads/Bouncer/androIRC-settings2.png differ
blob - /dev/null
blob + e2d9ac9a4966a4c80f463ac2d3a1c23e99cbc787 (mode 644)
Binary files /dev/null and uploads/Bouncer/atomic-home.png differ
blob - /dev/null
blob + a88d9d34f13e2e06a5c3193a2d79b94179ceb146 (mode 644)
Binary files /dev/null and uploads/Bouncer/atomic-home2.png differ
blob - /dev/null
blob + c9119c89ffce8e93931eaf7c6a033ae34a56cc01 (mode 644)
Binary files /dev/null and uploads/Bouncer/atomic-server.png differ
blob - /dev/null
blob + 38d8ab5abe9efbf1370a97ecc7541a5cb374e09e (mode 644)
Binary files /dev/null and uploads/Bouncer/hexchat-add.png differ
blob - /dev/null
blob + af25a9374e1745dc69420e038612ad901198cbe6 (mode 644)
Binary files /dev/null and uploads/Bouncer/hexchat-add.png,1597125109 differ
blob - /dev/null
blob + 4fa863f49a94e97a8b28725ce82db29af76d796e (mode 644)
Binary files /dev/null and uploads/Bouncer/hexchat-add.png,1597125172 differ
blob - /dev/null
blob + 4fa863f49a94e97a8b28725ce82db29af76d796e (mode 644)
Binary files /dev/null and uploads/Bouncer/hexchat-add.png,1597577590 differ
blob - /dev/null
blob + 4fa863f49a94e97a8b28725ce82db29af76d796e (mode 644)
Binary files /dev/null and uploads/Bouncer/hexchat-add.png,1597577972 differ
blob - /dev/null
blob + 0dd4a6818e3e62a7eda8c2c10c15a7146d8fdf56 (mode 644)
Binary files /dev/null and uploads/Bouncer/hexchat-edit.png differ
blob - /dev/null
blob + 8d7f5a1aea0dde34cf7741ff7c4d38e3b2794aa1 (mode 644)
Binary files /dev/null and uploads/Bouncer/hexchat-edit.png,1597125126 differ
blob - /dev/null
blob + 0dd4a6818e3e62a7eda8c2c10c15a7146d8fdf56 (mode 644)
Binary files /dev/null and uploads/Bouncer/hexchat-edit.png,1597577607 differ
blob - /dev/null
blob + 5cd0a6c63be056857428d45f33a08699a7085649 (mode 644)
Binary files /dev/null and uploads/Bouncer/hexchat2.png differ
blob - /dev/null
blob + da0754f55181eb226d7913ed161dc1c207f056c9 (mode 644)
Binary files /dev/null and uploads/Bouncer/icechat-newservernossl.png differ
blob - /dev/null
blob + 384dfc89342f478bf5b9252b8dd67c55a06f0c46 (mode 644)
Binary files /dev/null and uploads/Bouncer/icechat-newserverssl.png differ
blob - /dev/null
blob + 6bded10c5170d5efa8d0e8d46f371fa1aec81441 (mode 644)
Binary files /dev/null and uploads/Bouncer/icechat-settings.png differ
blob - /dev/null
blob + ce95981fb9f87b49514b8a7e08fec33317fe6948 (mode 644)
Binary files /dev/null and uploads/Bouncer/iglooirc-add1.png differ
blob - /dev/null
blob + a10c323b09c5313d66db70ca9738f833e07499c2 (mode 644)
Binary files /dev/null and uploads/Bouncer/iglooirc-add2.png differ
blob - /dev/null
blob + d78cd53a1a6189566229b8a84383da0ff2176a37 (mode 644)
Binary files /dev/null and uploads/Bouncer/iglooirc-home.png differ
blob - /dev/null
blob + e3c02ae37139048f039877226645e386cb3268c4 (mode 644)
Binary files /dev/null and uploads/Bouncer/iglooirc-home.png,1607937463 differ
blob - /dev/null
blob + 0d280b7ca574df9c4dbf21cb9862120045f073ec (mode 644)
Binary files /dev/null and uploads/Bouncer/iglooirc-home.png,1607937627 differ
blob - /dev/null
blob + 0918ca406f78e03fea5b3370d3c244e990a74728 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloud-join.png differ
blob - /dev/null
blob + 36a7edc8faa27c321bec840c5f11bab4aa8ee846 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloud-join.png,1597126628 differ
blob - /dev/null
blob + 296d4fb5dc3ceaa8fc43ac00f93fac886de12650 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloud-join.png,1597126979 differ
blob - /dev/null
blob + 6fee71e635c506d1380d2d460c0e8c0c07eb49a2 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloud-join2.png differ
blob - /dev/null
blob + 3548f1706b17c0dcdf10718ecd79e077633f4203 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloud-pass.png differ
blob - /dev/null
blob + b2638ec142c22133e8f9602e922d0ac9fe60a0e1 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudandroid-add.png differ
blob - /dev/null
blob + f44bb2012eeb551b3bb075ce4dd3bea0e07aa16c (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudandroid-modal.png differ
blob - /dev/null
blob + 1bc66021f8f19769579cef12dd08c4e800cc7b15 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudandroid-pass.png differ
blob - /dev/null
blob + a638d0fba2bdb47487b6dff419608cbcf8fee73d (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudandroid-pass1.png differ
blob - /dev/null
blob + 1bc66021f8f19769579cef12dd08c4e800cc7b15 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudandroid-pass2.png differ
blob - /dev/null
blob + fdd9450d0a625bb2ecde54baa08f14da71179f73 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudandroid-register.png differ
blob - /dev/null
blob + 955ffde693c34d0130672218bc87503145d4f75f (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudandroid-register.png,1597494404 differ
blob - /dev/null
blob + e744b57fb42f98b431726df8585c9be326fb6beb (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudandroid-sidebar.png differ
blob - /dev/null
blob + 84ecb0f49d1266b372b1f7f6513726dd6d0c1346 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudiod-sidebar.png differ
blob - /dev/null
blob + a27c6c6702a3375312736063c1930633a84c8c94 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudios-add.png differ
blob - /dev/null
blob + 66d2cfcbbb9aa0e507251dbeab188c11f2cecc69 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudios-modal.png differ
blob - /dev/null
blob + 0af0a09a18d6fc890ac96fb137f015a157b7b006 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudios-pass.png differ
blob - /dev/null
blob + 1b0518d1f5064e4445887cc5db7c18de268032f0 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudios-register.png differ
blob - /dev/null
blob + 1b0518d1f5064e4445887cc5db7c18de268032f0 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudios-register.png,1597493873 differ
blob - /dev/null
blob + 84ecb0f49d1266b372b1f7f6513726dd6d0c1346 (mode 644)
Binary files /dev/null and uploads/Bouncer/irccloudios-sidebar.png differ
blob - /dev/null
blob + 20726180723aeb45d4e331300b44fc0426843405 (mode 644)
Binary files /dev/null and uploads/Bouncer/ircforandroid.png differ
blob - /dev/null
blob + 9e3c6b171bcaf6a5a9c6e6f0e75c92aae8b3ad02 (mode 644)
Binary files /dev/null and uploads/Bouncer/ircforandroid.png,1597490913 differ
blob - /dev/null
blob + 2112ee25e9e7bbcbd1c03b32bc3113f580b97523 (mode 644)
Binary files /dev/null and uploads/Bouncer/irssi.png differ
blob - /dev/null
blob + aff2f98d53c34ae6b155d73b5f9f4c879c9aa24a (mode 644)
Binary files /dev/null and uploads/Bouncer/jmIRC_01.jpg differ
blob - /dev/null
blob + fcb8d9be470348d2f4ee07957a0f76cd90ba91a4 (mode 644)
Binary files /dev/null and uploads/Bouncer/jmIRC_02.jpg differ
blob - /dev/null
blob + 5edd4c9902cf7d637b074941f20c392bcf6f9b8c (mode 644)
Binary files /dev/null and uploads/Bouncer/jmIRC_03.jpg differ
blob - /dev/null
blob + 38b161acb8f0e0a54b0fa1dbdf6906d25625ea3c (mode 644)
Binary files /dev/null and uploads/Bouncer/jmIRC_04.jpg differ
blob - /dev/null
blob + 43fb97fd489280df7e0b0db12a9e32846c5b217c (mode 644)
Binary files /dev/null and uploads/Bouncer/jmIRC_05.jpg differ
blob - /dev/null
blob + ec6849afd33d9d5d93a4c87a5566ea852ed0018d (mode 644)
Binary files /dev/null and uploads/Bouncer/jmIRC_06.jpg differ
blob - /dev/null
blob + 9e64a260683ffa02329736d78dc3b3dc8035401b (mode 644)
Binary files /dev/null and uploads/Bouncer/jmIRC_07.jpg differ
blob - /dev/null
blob + b292eac5506f5375c194c55a3327c59191a21a8f (mode 644)
Binary files /dev/null and uploads/Bouncer/jmIRC_08.jpg differ
blob - /dev/null
blob + 60f2bcf026f14078446afe113ffe3c748be568cd (mode 644)
Binary files /dev/null and uploads/Bouncer/jmIRC_09.jpg differ
blob - /dev/null
blob + aa930814603730f77295312a9341bbc2479229af (mode 644)
Binary files /dev/null and uploads/Bouncer/kiwiirc-add.png differ
blob - /dev/null
blob + 7c123ea81c79b6a4dd6161dd22444c6b00c994a3 (mode 644)
Binary files /dev/null and uploads/Bouncer/kiwiirc-znc.png differ
blob - /dev/null
blob + 42de4416e1f8200ed9ffc981dff1b9365ff6a7da (mode 644)
Binary files /dev/null and uploads/Bouncer/kiwiirc-znc.png,1597638552 differ
blob - /dev/null
blob + f8b827504106626d570ea0243a81b5060d760e3b (mode 644)
Binary files /dev/null and uploads/Bouncer/kvirc-config.png differ
blob - /dev/null
blob + 42e6958d699cfca43ef3a09c7d12effbe486d197 (mode 644)
Binary files /dev/null and uploads/Bouncer/kvirc-network.png differ
blob - /dev/null
blob + f61975fb6ec6e0ce73faae17c31dfcf73dc6f2a8 (mode 644)
Binary files /dev/null and uploads/Bouncer/limechat-general.png differ
blob - /dev/null
blob + 9f7cb96289612560ffd38ff0c19cfc1dedb2bbf8 (mode 644)
Binary files /dev/null and uploads/Bouncer/limechat-menu.png differ
blob - /dev/null
blob + ea08764ec2f47a882c056cc40df36f4c96788043 (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-add.png differ
blob - /dev/null
blob + 9b65f86d4ec1dc3010ab5892d38c918b93673efb (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-addserver.png differ
blob - /dev/null
blob + 22a7cbb646c25089aa6c84173baa6dc65a5f9541 (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-commandssl.png differ
blob - /dev/null
blob + bd2d100fca46815b3d5c5f9d9f8bcdbad44f5471 (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-commandssl2.png differ
blob - /dev/null
blob + ea08764ec2f47a882c056cc40df36f4c96788043 (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-connect.png differ
blob - /dev/null
blob + dbc8cf3bb8e9ab7fb2a5f5add2185dc278686341 (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-options.png differ
blob - /dev/null
blob + e9437b877b6dc22e57511ce3a24760a2c1233d82 (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-remotescripts.png differ
blob - /dev/null
blob + 9546e2ffa9b4fb40c879cc8e760709d9dbdda843 (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-ssl1.png differ
blob - /dev/null
blob + 91cfc61c6c5d78d1ef32a6a4e13906289c5aa97c (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-ssl2.png differ
blob - /dev/null
blob + 4267b19c421fe1d711f796505c5be06bee6d4ca2 (mode 644)
Binary files /dev/null and uploads/Bouncer/mIRC-ssl3.png differ
blob - /dev/null
blob + 004fca13381454d862542c1110483b5e123210b1 (mode 644)
Binary files /dev/null and uploads/Bouncer/mibbit.png differ
blob - /dev/null
blob + 3b282d71a59b78c68382a5d0297ab5360553a233 (mode 644)
Binary files /dev/null and uploads/Bouncer/mirc-multiple.png differ
blob - /dev/null
blob + 0360a1ce1062a4239af60de1a4cf3b41d14248f2 (mode 644)
Binary files /dev/null and uploads/Bouncer/pidgin-accounts.png differ
blob - /dev/null
blob + d547188c220ef1e65855a4d7fcbdc47f44bc0f07 (mode 644)
Binary files /dev/null and uploads/Bouncer/pidgin-advanced.png differ
blob - /dev/null
blob + e5fcc6a90a99769c760303e1c104cf181fe19541 (mode 644)
Binary files /dev/null and uploads/Bouncer/pidgin-basic.png differ
blob - /dev/null
blob + 0f6ffabb1637b41c534abaf1af83f0a55f431d2a (mode 644)
Binary files /dev/null and uploads/Bouncer/pidgin-menu.png differ
blob - /dev/null
blob + 96dc2173af7c79fb05342758130e64082d324aa0 (mode 644)
Binary files /dev/null and uploads/Bouncer/pidgin-protocol.png differ
blob - /dev/null
blob + 8343d2684ec9d1ec2bb74b54544ecb78cfdf76a3 (mode 644)
Binary files /dev/null and uploads/Bouncer/quassel-configure.png differ
blob - /dev/null
blob + e2550ea5a2edf74f6d94cbaa58db6a254db148f9 (mode 644)
Binary files /dev/null and uploads/Bouncer/quassel-configure2.png differ
blob - /dev/null
blob + 6b56fcfe96d3383ce72ff7e8316be211316d7640 (mode 644)
Binary files /dev/null and uploads/Bouncer/quassel-identities.png differ
blob - /dev/null
blob + de33ba7576f4ebac9b29b7d0e8a6455590f840b2 (mode 644)
Binary files /dev/null and uploads/Bouncer/quassel-menu.png differ
blob - /dev/null
blob + ec92cfc170fa2d7edc03d1b2cf350eebb065817b (mode 644)
Binary files /dev/null and uploads/Bouncer/revolutionirc-edit.png differ
blob - /dev/null
blob + 8c11d632b852f71ab8bab14f40006ae3b950261b (mode 644)
Binary files /dev/null and uploads/Bouncer/revolutionirc-edit.png,1597636101 differ
blob - /dev/null
blob + 02c3478de5f22be3482c084f38564ba667efc610 (mode 644)
Binary files /dev/null and uploads/Bouncer/revolutionirc-edit.png,1597636547 differ
blob - /dev/null
blob + abb99c4b24d4ea5d222d1922de94c5ae952f0cd3 (mode 644)
Binary files /dev/null and uploads/Bouncer/revolutionirc-home.png differ
blob - /dev/null
blob + 86298390031fc0b9baf23639c2b32df275447008 (mode 644)
Binary files /dev/null and uploads/Bouncer/revolutionirc-home.png,1597406703 differ
blob - /dev/null
blob + e2f1ca1053f4221a69958835d2e218f936bcd8a5 (mode 644)
Binary files /dev/null and uploads/Bouncer/revolutionirc-home2.png differ
blob - /dev/null
blob + 9651eb260d7f8accd7498dde0ad1f53b569e629b (mode 644)
Binary files /dev/null and uploads/Bouncer/screen7_resize.png differ
blob - /dev/null
blob + 5b218996e912ce6814beeefc19cbee6d93d24be8 (mode 644)
Binary files /dev/null and uploads/Bouncer/simpleirc-home.png differ
blob - /dev/null
blob + 28bdf1d44201837b00471cdf25f84f5487d9a2cf (mode 644)
Binary files /dev/null and uploads/Bouncer/simpleirc-home2.png differ
blob - /dev/null
blob + 48200b6f91a12530c16d264bf5a8c8c63a5e1fd9 (mode 644)
Binary files /dev/null and uploads/Bouncer/simpleirc-server.png differ
blob - /dev/null
blob + 7c357023ce347c3d0da61d1b66d3b3e1c428e73b (mode 644)
Binary files /dev/null and uploads/Bouncer/smuxi-connect.png differ
blob - /dev/null
blob + 1df099e089fa3e6695a6bb1620a804c14350a903 (mode 644)
Binary files /dev/null and uploads/Bouncer/smuxi-menu.png differ
blob - /dev/null
blob + edc2a3328cfcb92a3f71d070ef973d4db0bab548 (mode 644)
Binary files /dev/null and uploads/Bouncer/smuxi-menu2.png differ
blob - /dev/null
blob + 048ee4cbdd1f4e83a9613e6444f691588e996810 (mode 644)
Binary files /dev/null and uploads/Bouncer/smuxi-server.png differ
blob - /dev/null
blob + c6164f6e21b8bb6612d13ed08c90b571069ae55e (mode 644)
Binary files /dev/null and uploads/Bouncer/textual-addserver.png differ
blob - /dev/null
blob + 826a945ec016a5e3f11dcc8a2cd119613c36a48f (mode 644)
Binary files /dev/null and uploads/Bouncer/textual-menu.png differ
blob - /dev/null
blob + ecaa22905e5470c6c21a58996c980608c76689e1 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-chat.png differ
blob - /dev/null
blob + 3603809b0303863781f52c1c4530309f9af7acf6 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-chat.png,1597319386 differ
blob - /dev/null
blob + cb491a1d5efe5a0ebe3ce62015710e222f338a41 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-config.png differ
blob - /dev/null
blob + 1f6fa013f44f6bd2519286ce34e7e6e92ca25daf (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-config.png,1597320107 differ
blob - /dev/null
blob + d35eadac9cdaca43c307f59873db4513dc58fad0 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-config.png,1597320246 differ
blob - /dev/null
blob + d35eadac9cdaca43c307f59873db4513dc58fad0 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-config.png,1597320574 differ
blob - /dev/null
blob + 3174f4aa8eab9c9166822d68837de0500908058e (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-menu.png differ
blob - /dev/null
blob + cfe0ab91803d966103cbf0cbef0efec8522ef4f1 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-menu.png,1597319274 differ
blob - /dev/null
blob + 3174f4aa8eab9c9166822d68837de0500908058e (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-new.png differ
blob - /dev/null
blob + a99ed4f8f43fdd850a8eb83ac6835ceebef44167 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-new.png,1597319328 differ
blob - /dev/null
blob + 6a8491c9c83b6c3ef3f4751e3363f470b3f8c1e1 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-options.png differ
blob - /dev/null
blob + c300c6748f33a1e7d96e5198c023c0c0727fbf92 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-options.png,1597319494 differ
blob - /dev/null
blob + 6a8491c9c83b6c3ef3f4751e3363f470b3f8c1e1 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-options.png,1597320042 differ
blob - /dev/null
blob + 299bfc2445702db08eeabb1273320d28ba88f15e (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-options2.png differ
blob - /dev/null
blob + f499bd899e7e6c555aa3209b296d2dd0b97ec732 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-password.png differ
blob - /dev/null
blob + 7ce4f011adcedf1235a6488207102f89dd05f93e (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-password.png,1597319467 differ
blob - /dev/null
blob + f0d8908566a390a0ad52564a390a188a8e0557a5 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-preferences.png differ
blob - /dev/null
blob + 82b52827c50b76182cd611ea4abef5faa7d98409 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-protocol.png differ
blob - /dev/null
blob + ed0e7e8c0b52d30961e90eb64f29113991e334c0 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-protocol.png,1597319411 differ
blob - /dev/null
blob + dac96266eccf70936b21f7cb0fb2f3ac02982443 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-server.png differ
blob - /dev/null
blob + 2930012a6c2da1708059fdec515ee97d8b6baf42 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-server.png,1597319439 differ
blob - /dev/null
blob + ac85afd908760ad255d70c3671887ca66ccba497 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-string.png differ
blob - /dev/null
blob + bcfe58cf86ea251292b37ef3247303e510915c66 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-string.png,1597320267 differ
blob - /dev/null
blob + 89429addec097f7091d1642bec052b740129a5ef (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-string2.png differ
blob - /dev/null
blob + a85aef9c4cc948dd3d1c04677eea35f930cf5f5c (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-string2.png,1597320295 differ
blob - /dev/null
blob + 9c7ac3509b7c329aedb2290edd80a0c43ddb1061 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-string2.png,1597321327 differ
blob - /dev/null
blob + 5672df75e16607bd6c5b38a074325f882ae3c86a (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-string3.png differ
blob - /dev/null
blob + 4eb21ed71aa68bc8aabfa836630f15092985c7f6 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-string3.png,1597321337 differ
blob - /dev/null
blob + 9c7ac3509b7c329aedb2290edd80a0c43ddb1061 (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-string3.png,1597321944 differ
blob - /dev/null
blob + bc7274bbebd1b80384dfae3f7534baf6b6325f2d (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird-summary.png differ
blob - /dev/null
blob + 9514906319b3020d96ff4ba296cf9445bd7de9ec (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird10.png differ
blob - /dev/null
blob + 0c4b7e3cef0fe445698f9fb5d414a03558cad16f (mode 644)
Binary files /dev/null and uploads/Bouncer/thunderbird10.png,1711803302 differ
blob - /dev/null
blob + e69276135eacab238cb8b9fef7dcba72f0da4f98 (mode 644)
Binary files /dev/null and uploads/Bouncer/turboirc-home.png differ
blob - /dev/null
blob + 67d71543eea806313fb1904462effbacf6328054 (mode 644)
Binary files /dev/null and uploads/Bouncer/turboirc-serverlist.png differ
blob - /dev/null
blob + 5a2e15992506a759abe6e4b4d8fb5ccd17498203 (mode 644)
Binary files /dev/null and uploads/Bouncer/turboirc-servers.png differ
blob - /dev/null
blob + 2f38e9d84a6f0298bcc5734f50f5a455ef2db818 (mode 644)
Binary files /dev/null and uploads/Bouncer/turboirc-servers2.png differ
blob - /dev/null
blob + 67d71543eea806313fb1904462effbacf6328054 (mode 644)
Binary files /dev/null and uploads/Bouncer/turboirc-servers2.png,1597482535 differ
blob - /dev/null
blob + 2d54bc827dd2da2bdc937a74801d2625206adf45 (mode 644)
Binary files /dev/null and uploads/Bouncer/vision-add.png differ
blob - /dev/null
blob + 376766e11f5eb0b38aeb69750bd6cee8c8778b70 (mode 644)
Binary files /dev/null and uploads/Bouncer/vision-home.png differ
blob - /dev/null
blob + 8311282106a62d4115a43d17fec5c4064f847e2d (mode 644)
Binary files /dev/null and uploads/Bouncer/vision-nick.png differ
blob - /dev/null
blob + 0810fdc75e2368f626377fcc64a2110c6251e2f4 (mode 644)
Binary files /dev/null and uploads/Bouncer/vision-server.png differ
blob - /dev/null
blob + 8d7d20275825d583c777f43821cc3e911dac4e18 (mode 644)
Binary files /dev/null and uploads/Bouncer/weechat.png differ
blob - /dev/null
blob + 5349f016dc1a6bb874325a95c68bd6e799320b0b (mode 644)
Binary files /dev/null and uploads/Bouncer/xchat-connecting.png differ
blob - /dev/null
blob + a8df6c28befd19ded02740bb21b9eb9b45d2737d (mode 644)
Binary files /dev/null and uploads/Bouncer/xchat-menu.png differ
blob - /dev/null
blob + 16c45fae004ce239946fded0c048b826593a782d (mode 644)
Binary files /dev/null and uploads/Bouncer/xchat-networklist.png differ
blob - /dev/null
blob + 1038af7c328b14eeac36a11e75ffd87965309d31 (mode 644)
Binary files /dev/null and uploads/Bouncer/xchat-showdetails.png differ
blob - /dev/null
blob + 41cb4364d61908edb5c3e706b50aec596e58df98 (mode 644)
Binary files /dev/null and uploads/Bouncer/yaaic-home.png differ
blob - /dev/null
blob + 9c895a9c31296eccc66c39764188dcc431230304 (mode 644)
Binary files /dev/null and uploads/Bouncer/yaaic-home2.png differ
blob - /dev/null
blob + 5011d560b04fbb2db7d26d46690e82255143daa1 (mode 644)
Binary files /dev/null and uploads/Bouncer/yaaic-server.png differ
blob - /dev/null
blob + 48292d472d89694f5bb3dac8c6f4a4b77d8f5eed (mode 644)
Binary files /dev/null and uploads/Bouncer/yaaic-server.png,1597414280 differ
blob - /dev/null
blob + 48292d472d89694f5bb3dac8c6f4a4b77d8f5eed (mode 644)
Binary files /dev/null and uploads/Bouncer/yaaic-server2.png differ
blob - /dev/null
blob + 63a9ed37b4a865a6b7a5c2c16f578a398630e2e1 (mode 644)
--- /dev/null
+++ uploads/Bouncer/znc.mrc
@@ -0,0 +1,13 @@
+; ZNC 1.7.0 added support for server-time.
+; mIRC 7.38 - 7.41 will stall/hang during the connection.
+; by KindOne
+; originally from https://bitbucket.org/KindOne/mirc-scripts-public/src/master/znc-server-time-fix.mrc
+; Remove support for server-time and finish the CAP so
+; mirc can connect.
+raw *:*:{
+  if (($version < 7.33) || ($version > 7.41)) { return }
+  if (($1 == irc.znc.in) && ($4-5 == ACK :server-time)) {
+    cap req -server-time
+    cap end
+  }
+}
blob - /dev/null
blob + 762ff6816ea03e7780867a6ba4e386ce9c57ead6 (mode 644)
Binary files /dev/null and uploads/Buyvm/routedsubnet1.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 90e67fddb6f54190442e18cb64e0d29cf7956534 (mode 644)
Binary files /dev/null and uploads/Buyvm/routedsubnet2.png differ
blob - /dev/null
blob + 93fcdc573fda391eef32452b5b25cee715d5b489 (mode 644)
Binary files /dev/null and uploads/C/c-primer-v2.pdf differ
blob - /dev/null
blob + ac57e26ee40b90621a7f4c93e57dc80809312d37 (mode 644)
Binary files /dev/null and uploads/C101/the-openbsd-c-particularist.pdf differ
blob - /dev/null
blob + 5953d81f735b85f6be8181429695a1c09166696d (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-accesscamera.png differ
blob - /dev/null
blob + b50a953aa28c440bc744f2fd49940331da07aa19 (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-appstore.png differ
blob - /dev/null
blob + 6bfabf80dc9ae8060f9b07cdbd785345d2a8f0c8 (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-createnewaccount.png differ
blob - /dev/null
blob + acba6f7c5817eaf4572cd5a505ad7540c37a9bb4 (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-enablepush.png differ
blob - /dev/null
blob + 57a4daeb946c917ba7a2f4e361102f47a7f14e2f (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-inbox.png differ
blob - /dev/null
blob + 67cc7e0cf40ad36b4986eaa53017acb59f7c35c8 (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-moreways.png differ
blob - /dev/null
blob + 9087f6511607448066e10bc32ac890fa055daa8a (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-newssl.png differ
blob - /dev/null
blob + fca16a0919dd4ea9e468232ad4bb4312bf6e1dfb (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-sendnotifications.png differ
blob - /dev/null
blob + 12560173c7f9fa54460ca45a15de3483fa830e53 (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-settings.png differ
blob - /dev/null
blob + f0933156c4b1fefdc1c89b827ece3c18d7301d95 (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-shareinvite.png differ
blob - /dev/null
blob + 3d8d0b58d4fe78b068626ae08839ebb4421636d0 (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-signup-password.png differ
blob - /dev/null
blob + 95f927fd19a15c0766b87cf61df1b93f35ed3a3a (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-signup.png differ
blob - /dev/null
blob + 4a01c31b2732bb81a6769b655d2e01757220def4 (mode 644)
Binary files /dev/null and uploads/ChatSecure/chatsecure-thankyou.png differ
blob - /dev/null
blob + c1a15cfa7cbcd486be7bc96b867ad6cce3ac3423 (mode 644)
Binary files /dev/null and uploads/ClawsMail/AcceptSSL.png differ
blob - /dev/null
blob + bb93084b0be20ea9c2668dae7403907c130f0a1b (mode 644)
Binary files /dev/null and uploads/ClawsMail/Preferences.png differ
blob - /dev/null
blob + 65841a93ec5482dcff33f361024dbb089d7699ce (mode 644)
Binary files /dev/null and uploads/ClawsMail/SendSettings.png differ
blob - /dev/null
blob + 32a99e281fb107108db3357c8e7a9db50de4ffe5 (mode 644)
Binary files /dev/null and uploads/ClawsMail/ServerSetting.png differ
blob - /dev/null
blob + 202e04b165261dc559b3d77c57e631cc3fcc2efe (mode 644)
Binary files /dev/null and uploads/ClawsMail/YourInfo differ
blob - /dev/null
blob + 202e04b165261dc559b3d77c57e631cc3fcc2efe (mode 644)
Binary files /dev/null and uploads/ClawsMail/YourInfo.png differ
blob - /dev/null
blob + 1056de27985c01c649a7308d7f867f97c13d0ca1 (mode 644)
Binary files /dev/null and uploads/ClawsMail/portssettings.png differ
blob - /dev/null
blob + a93b49ca406d5a4aabc3117397f21e95f3d08a5f (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-authorized-keys.png differ
blob - /dev/null
blob + 6391a8a84f7ac6975b0a6ec39246a8ddecc3e983 (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-check-fingerprints.png differ
blob - /dev/null
blob + 21dae8042942c823c9a309f0bf705b9c873cfb3d (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-edit-host-username.png differ
blob - /dev/null
blob + b84de3b9ed7f2a5f7c80aa1c338ee6fab00e5616 (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-generate-ed25519.png differ
blob - /dev/null
blob + be463fade85d4232ebfffa833a92100f96ec0e3b (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-generate-random.png differ
blob - /dev/null
blob + 854b044d28891e3c7ec1ab2c032264a805fa4d46 (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-hosts-never-connected.png differ
blob - /dev/null
blob + c2d7178a543e965aafe754ab217cc85fc34e3f65 (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-login-success.png differ
blob - /dev/null
blob + 7fb5548b8993df3d25d221cd9c031029390e5f7c (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-manage-pubkeys.png differ
blob - /dev/null
blob + c54cdf0d9757f1d7de32e6c3c81fdc1f6d826a2a (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-no-hosts.png differ
blob - /dev/null
blob + b4abaead2bbe6cfffb254c653989cc7b0c12d49f (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-password.png differ
blob - /dev/null
blob + 5d7a5f48fa94d7d00f1a3e113e80b2a6668fb494 (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-pubkey-none.png differ
blob - /dev/null
blob + 5d7a5f48fa94d7d00f1a3e113e80b2a6668fb494 (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-pubkey-none.png,1628662237 differ
blob - /dev/null
blob + 693ece919568394c299afc5869bb473515b5daf5 (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-pubkey-password.png differ
blob - /dev/null
blob + fc224dea7314919b36038fedc523f8e59d8c2e60 (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-pubkeys-copy-public-key.png differ
blob - /dev/null
blob + 3c915a803b19c29176282f35387adc9d20988213 (mode 644)
Binary files /dev/null and uploads/ConnectBot/connectbot-stay-connected.png differ
blob - /dev/null
blob + 72565bc44c6c4ef0bfcee89fde9b33b6775bb18a (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-createnewaccount.png differ
blob - /dev/null
blob + 7e3a0acb0dac32f2bb14cc613a47fe5392db9455 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-createnewaccount.png,1637214698 differ
blob - /dev/null
blob + 0dd2238a5949368f402f961b1ca181f055687fdd (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-fdroid.png differ
blob - /dev/null
blob + db06da2fc5c526f1404fae2b505c57e0cff4aa30 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-fdroid.png,1637214712 differ
blob - /dev/null
blob + c6f5f3275ed0a7918d550947de1070b0928c8e25 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-install.png differ
blob - /dev/null
blob + 1b79d3d234488ff6a5c0e44dd8b55ee0b4630446 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-install.png,1637214730 differ
blob - /dev/null
blob + a2f3b6674f71aa6820af03c0655e0196837395a3 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-publishavatar.png differ
blob - /dev/null
blob + c5a41229184b1f961b82a2353a9be08fdfc69846 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-publishavatar.png,1637214748 differ
blob - /dev/null
blob + 9c0a93623c4af7fa8989f6070928a47eb875a875 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-publishavatar.png,1637214760 differ
blob - /dev/null
blob + a2f3b6674f71aa6820af03c0655e0196837395a3 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-registernewaccount.png differ
blob - /dev/null
blob + aa9df3fb5cde0cb8dff6f09f2b8fb4c6404a5302 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-registernewaccount.png,1637214774 differ
blob - /dev/null
blob + 665472171d01b256c3b14bd11834e411089d50ec (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-startconversation.png differ
blob - /dev/null
blob + a24005d54a1cf34b12439a5dd19d73a91669d6e3 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-startconversation.png,1637214791 differ
blob - /dev/null
blob + 8915358e6ee5d552f3fb561b103052dd853c6dfa (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-welcome.png differ
blob - /dev/null
blob + c04b77fa5457dc2e9bdbc36623f4325aafb35129 (mode 644)
Binary files /dev/null and uploads/Conversations/conversations-welcome.png,1637214802 differ
blob - /dev/null
blob + 4cd7b9ae150534272c9cea15a98606a7de9f75e6 (mode 644)
--- /dev/null
+++ uploads/Cvs/cvsweb-readme
@@ -0,0 +1,109 @@
+# $OpenBSD: README,v 1.19 2019/11/10 08:23:35 schwarze Exp $
+#
+# +-----------------------------------------------------------------------
+# | Running cvsweb on OpenBSD
+# +-----------------------------------------------------------------------
+#
+# Original author: Jolan Luff <jolan@openbsd.org>
+#
+# In order to make CVSweb operate in a chroot environment, it is
+# necessary to copy all of the relevant tools, libraries, and perl modules
+# that CVSweb employs into /var/www.
+#
+# NOTE: You can run this README directly with sh(1).
+#
+# First, create the basic directory structure:
+
+cd /var/www
+mkdir -p tmp usr dev
+chown www:www tmp	# needs to be writeable for the www user
+
+cd /var/www/usr
+mkdir -p bin lib libdata/perl5 libexec
+
+cd /var/www/usr/libdata/perl5
+mkdir -p File IPC Time warnings `arch -s`-openbsd/auto/{Cwd,Fcntl} unicore
+
+# The "annotate" function requires this empty file:
+#
+# NOTE: You can create an actual null device instead, but that will
+# not work if the filesystem is mounted with the nodev option, and
+# it is not required for cvsweb.
+
+cd /var/www/dev
+touch null
+
+# Now, the required binaries:
+
+cd /var/www/usr/bin
+cp -p /usr/bin/{co,cvs,diff,perl,rcsdiff,rlog,uname} .
+
+# Next, the libraries that the binaries are linked to:
+#
+# NOTE: Wildcards will, of course, copy any old, unused libraries that are
+# lurking around (for example, from an upgrade):
+
+cd /var/www/usr/lib
+cp -p /usr/lib/lib{c,m,perl,pthread,util,z}.so* .
+
+# Now, the run-time link-editor:
+
+cd /var/www/usr/libexec
+cp -p /usr/libexec/ld.so .
+
+# And finally, the perl modules:
+
+cd /var/www/usr/libdata/perl5
+cp -p /usr/libdata/perl5/{Carp,Exporter,Symbol,base,integer,parent}.pm .
+cp -p /usr/libdata/perl5/{strict,warnings,vars,constant,utf8}.pm .
+cp -p /usr/libdata/perl5/utf8_heavy.pl .
+cp -p /usr/libdata/perl5/unicore/Heavy.pl ./unicore/
+cp -p /usr/libdata/perl5/File/Basename.pm ./File/
+cp -p /usr/libdata/perl5/IPC/Open{2,3}.pm ./IPC/
+cp -p /usr/libdata/perl5/Time/Local.pm ./Time/
+cp -p /usr/libdata/perl5/warnings/register.pm ./warnings/
+cp -p /usr/libdata/perl5/XSLoader.pm .
+
+cd /var/www/usr/libdata/perl5/`arch -s`-openbsd
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/Config.pm .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/Config_{git,heavy}.pl .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/Cwd.pm .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/auto/Cwd/Cwd.so ./auto/Cwd/
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/DynaLoader.pm .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/Fcntl.pm .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/auto/Fcntl/Fcntl.so ./auto/Fcntl/
+
+# You also need to enable slowcgi(8):
+
+rcctl enable slowcgi
+rcctl start slowcgi
+
+# Editing cvsweb and cvsweb.conf
+# ------------------------------
+# The cvsweb program already assumes that it is running chrooted,
+# and the location of the configuration file is hardcoded to
+# /conf/cvsweb/cvsweb.conf, so usually there is no need to edit
+# the cvsweb program itself.
+
+# By default, /var/www/conf/cvsweb/cvsweb.conf configures one
+# repository to be served: /var/www/cvs/, which should contain
+# the subdirectory CVSROOT and one or more module directories.
+# Additional repositories, each containing their own CVSROOT
+# subdirectory, can be added to the @CVSrepositories array.
+
+# Example httpd.conf(5) for cvsweb
+# --------------------------------
+# server "domain.tld" {
+#      listen on * port 80
+#      #listen on egress tls port 443
+#
+#      #tls {
+#              #certificate "/etc/ssl/domain.tld_fullchain.pem"
+#              #key "/etc/ssl/private/domain.tld_private.pem"
+#      #}
+#
+#      location "/cgi-bin/*" {
+#              fastcgi
+#              root "/"
+#      }
+# }
blob - /dev/null
blob + 4cd7b9ae150534272c9cea15a98606a7de9f75e6 (mode 644)
--- /dev/null
+++ uploads/Cvs/cvsweb-readme.txt
@@ -0,0 +1,109 @@
+# $OpenBSD: README,v 1.19 2019/11/10 08:23:35 schwarze Exp $
+#
+# +-----------------------------------------------------------------------
+# | Running cvsweb on OpenBSD
+# +-----------------------------------------------------------------------
+#
+# Original author: Jolan Luff <jolan@openbsd.org>
+#
+# In order to make CVSweb operate in a chroot environment, it is
+# necessary to copy all of the relevant tools, libraries, and perl modules
+# that CVSweb employs into /var/www.
+#
+# NOTE: You can run this README directly with sh(1).
+#
+# First, create the basic directory structure:
+
+cd /var/www
+mkdir -p tmp usr dev
+chown www:www tmp	# needs to be writeable for the www user
+
+cd /var/www/usr
+mkdir -p bin lib libdata/perl5 libexec
+
+cd /var/www/usr/libdata/perl5
+mkdir -p File IPC Time warnings `arch -s`-openbsd/auto/{Cwd,Fcntl} unicore
+
+# The "annotate" function requires this empty file:
+#
+# NOTE: You can create an actual null device instead, but that will
+# not work if the filesystem is mounted with the nodev option, and
+# it is not required for cvsweb.
+
+cd /var/www/dev
+touch null
+
+# Now, the required binaries:
+
+cd /var/www/usr/bin
+cp -p /usr/bin/{co,cvs,diff,perl,rcsdiff,rlog,uname} .
+
+# Next, the libraries that the binaries are linked to:
+#
+# NOTE: Wildcards will, of course, copy any old, unused libraries that are
+# lurking around (for example, from an upgrade):
+
+cd /var/www/usr/lib
+cp -p /usr/lib/lib{c,m,perl,pthread,util,z}.so* .
+
+# Now, the run-time link-editor:
+
+cd /var/www/usr/libexec
+cp -p /usr/libexec/ld.so .
+
+# And finally, the perl modules:
+
+cd /var/www/usr/libdata/perl5
+cp -p /usr/libdata/perl5/{Carp,Exporter,Symbol,base,integer,parent}.pm .
+cp -p /usr/libdata/perl5/{strict,warnings,vars,constant,utf8}.pm .
+cp -p /usr/libdata/perl5/utf8_heavy.pl .
+cp -p /usr/libdata/perl5/unicore/Heavy.pl ./unicore/
+cp -p /usr/libdata/perl5/File/Basename.pm ./File/
+cp -p /usr/libdata/perl5/IPC/Open{2,3}.pm ./IPC/
+cp -p /usr/libdata/perl5/Time/Local.pm ./Time/
+cp -p /usr/libdata/perl5/warnings/register.pm ./warnings/
+cp -p /usr/libdata/perl5/XSLoader.pm .
+
+cd /var/www/usr/libdata/perl5/`arch -s`-openbsd
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/Config.pm .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/Config_{git,heavy}.pl .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/Cwd.pm .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/auto/Cwd/Cwd.so ./auto/Cwd/
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/DynaLoader.pm .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/Fcntl.pm .
+cp -p /usr/libdata/perl5/`arch -s`-openbsd/auto/Fcntl/Fcntl.so ./auto/Fcntl/
+
+# You also need to enable slowcgi(8):
+
+rcctl enable slowcgi
+rcctl start slowcgi
+
+# Editing cvsweb and cvsweb.conf
+# ------------------------------
+# The cvsweb program already assumes that it is running chrooted,
+# and the location of the configuration file is hardcoded to
+# /conf/cvsweb/cvsweb.conf, so usually there is no need to edit
+# the cvsweb program itself.
+
+# By default, /var/www/conf/cvsweb/cvsweb.conf configures one
+# repository to be served: /var/www/cvs/, which should contain
+# the subdirectory CVSROOT and one or more module directories.
+# Additional repositories, each containing their own CVSROOT
+# subdirectory, can be added to the @CVSrepositories array.
+
+# Example httpd.conf(5) for cvsweb
+# --------------------------------
+# server "domain.tld" {
+#      listen on * port 80
+#      #listen on egress tls port 443
+#
+#      #tls {
+#              #certificate "/etc/ssl/domain.tld_fullchain.pem"
+#              #key "/etc/ssl/private/domain.tld_private.pem"
+#      #}
+#
+#      location "/cgi-bin/*" {
+#              fastcgi
+#              root "/"
+#      }
+# }
blob - /dev/null
blob + bebf00f24ba2417775b1fe7a0f88b68a828ca57f (mode 644)
Binary files /dev/null and uploads/Dino/dino-1.png differ
blob - /dev/null
blob + 8643e4f40388741034594433fd497d63e3ff91d1 (mode 644)
Binary files /dev/null and uploads/Dino/dino-2.png differ
blob - /dev/null
blob + 24d65b62c1f7b93f3c5f175ca8d9b62b771145dc (mode 644)
Binary files /dev/null and uploads/Dino/dino-3.png differ
blob - /dev/null
blob + 24e7e5b3c111318cca206a4f90615182b28e6f62 (mode 644)
--- /dev/null
+++ uploads/Dns/named.conf.txt
@@ -0,0 +1,28 @@
+// $OpenBSD: named.conf,v 1.3 2020/05/29 20:05:37 sthen Exp $
+//
+// Example file for a simple configuration of BIND, processing only
+// recursive queries.  Consult BIND's Administration and Reference Manual
+// for more information.
+
+acl clients {
+	localnets;
+	::1;
+};
+
+options {
+	directory "/tmp";	// working directory, inside the /var/named chroot
+				// - must be writable by _bind
+	version "";		// remove this to allow version queries
+
+	listen-on    { any; };
+	listen-on-v6 { any; };
+
+	empty-zones-enable yes;
+
+	allow-recursion { 127.0.0.0/8; 38.81.163.0/24; 38.87.162.0/24; 2602:fccf:1::/48; };
+};
+
+zone "." {
+	type hint;
+	file "/etc/named.root";
+};
blob - /dev/null
blob + f394b3edbd3f8c60788d0db61214d959673ac574 (mode 644)
--- /dev/null
+++ uploads/Eggdrop/eggdrop-simple.conf.txt
@@ -0,0 +1,239 @@
+(:title Configure simple eggdrop.conf:)
+
+Eggdrop has a very complex configuration file which can overwhelm new users. To make things simpler, we focus on just the most essential settings you must change.
+
+Create a new file inside ~/<botname>/ called examplebot.conf:
+
+[@
+set username "botusername"
+set admin "username <email: username@example.com>"
+set nick "botnick"
+set altnick "botn?ck"
+set realname "/msg botnick hello"
+set network "Your Network"
+set userfile "botusername.user"
+set chanfile "botusername.chan"
+@]
+
+Replace with your own settings. For network, use a short simple name instead of theactual server address. For example, the network name might be IRCNow instead of irc.ircnow.org.
+
+[@
+set prefer-ipv6 1
+@]
+
+We set prefer-ipv6 to 1, meaning eggdrop will attempt to use IPv6 wherever possible. Among other benefits, this will allow our eggdrop to have a unique vhost.
+
+[@
+loadmodule server
+set net-type "Other"
+set default-port 6667
+server add irc6.example.com +6697
+@]
+
+Here, we configure the network we want to connect to. There are several network types: EFnet, IRCnet, Undernet, DALnet, Libera, freenode, QuakeNet, Rizon, Twitch, and Other. If you're not sure, choose Other.
+
+You'll want to replace irc6.example.com +6697 with your actual server and port. It's best to use an IPv6-only server address. If you're using SSL, make sure to add a + plus sign. If you're using a plaintext port like port 6667, leave out the + plus sign.
+
+'''WARNING''': Don't [[tls/intro|confuse plaintext with SSL]]! If you're connecting to port 6667, do '''not''' put a + plus sign in front. If you're connecting to port +6697, '''do''' put a + sign in front.
+
+Below, we set the [[dns/vhost|vhosts]] assigned to us when we created the shell account:
+
+[@
+set vhost4 "username.example.com"
+set vhost6 "username.example.com"
+@]
+
+You cannot pick any vhost you want; you must use the vhost given to you when you created the shell account. This is because your vhost must have [[dns/overview|forward]] and [[DNS/rDNS|reverse DNS]] entries configured in order to work correctly.
+
+If you'd like to pick a different vhost, contact your sysadmin.
+
+Finally, we just copy the rest of these lines unchanged into the conf file:
+
+[@
+bind evnt - init-server evnt:init_server
+
+proc evnt:init_server {type} {
+  global botnick
+  putquick "MODE $botnick +i-ws"
+}
+
+
+if {[info exists net-type]} {
+  switch -- ${net-type} {
+    "EFnet" {
+      source scripts/quotepong.tcl
+    }
+    "0" {
+      source scripts/quotepong.tcl
+    }
+  }
+}
+@]
+
+[@
+set timezone "EST"
+set offset "5"
+set max-logs 20
+set max-logsize 0
+set quick-logs 0
+set raw-log 0
+logfile mco * "logs/eggdrop.log"
+set log-time 1
+set timestamp-format {[%H:%M:%S]}
+set keep-all-logs 0
+set logfile-suffix ".%d%b%Y"
+set switch-logfiles-at 300
+set quiet-save 0
+set console "mkcoblxs"
+set help-path "help/"
+set text-path "text/"
+set motd "text/motd"
+set telnet-banner "text/banner"
+set userfile-perm 0600
+set remote-boots 2
+set share-unlinks 1
+set protect-telnet 0
+set dcc-sanitycheck 0
+set ident-timeout 5
+set require-p 1
+set open-telnets 0
+set stealth-telnets 0
+set stealth-prompt "\n\nNickname.\n"
+set use-telnet-banner 0
+set connect-timeout 15
+set dcc-flood-thr 3
+set telnet-flood 5:60
+set paranoid-telnet-flood 1
+set ssl-capath "/etc/ssl/"
+set ignore-time 15
+set hourly-updates 00
+set notify-newusers "$owner"
+set default-flags "hp"
+set whois-fields "url birthday"
+set must-be-owner 1
+unbind dcc n simul *dcc:simul
+set max-socks 100
+set allow-dk-cmds 1
+set dupwait-timeout 5
+set cidr-support 0
+set show-uname 1
+
+set mod-path "modules/"
+loadmodule pbkdf2
+loadmodule blowfish
+set blowfish-use-mode cbc
+loadmodule dns
+set dns-cache 86400
+set dns-negcache 600
+set dns-maxsends 4
+set dns-retrydelay 3
+loadmodule channels
+set force-expire 0
+set share-greet 0
+set use-info 1
+set allow-ps 0
+
+set default-flood-chan 15:60
+set default-flood-deop 3:10
+set default-flood-kick 3:10
+set default-flood-join 5:60
+set default-flood-ctcp 3:60
+set default-flood-nick 5:60
+set default-aop-delay 5:30
+set default-idle-kick 0
+set default-chanmode "nt"
+set default-stopnethack-mode 0
+set default-revenge-mode 0
+set default-ban-type 3
+set default-ban-time 120
+set default-exempt-time 60
+set default-invite-time 60
+
+set default-chanset {
+        -autoop         -autovoice
+        -bitch          +cycle
+        +dontkickops    +dynamicbans
+        +dynamicexempts +dynamicinvites
+        -enforcebans    +greet
+        -inactive       -nodesynch
+        -protectfriends +protectops
+        -revenge        -revengebot
+        -secret         -seen
+        +shared         -statuslog
+        +userbans       +userexempts
+        +userinvites    -protecthalfops
+        -autohalfop     -static
+}
+
+
+set msg-rate 2
+set keep-nick 1
+set quiet-reject 1
+set lowercase-ctcp 0
+set answer-ctcp 3
+set flood-msg 5:60
+set flood-ctcp 3:60
+set server-cycle-wait 60
+set server-timeout 60
+set check-stoned 1
+set serverror-quit 1
+set max-queue-msg 300
+set trigger-on-ignore 0
+set exclusive-binds 0
+set double-mode 1
+set double-server 1
+set double-help 1
+set optimize-kicks 1
+set stack-limit 4
+
+loadmodule ctcp
+set ctcp-mode 0
+loadmodule irc
+set bounce-bans 0
+set bounce-exempts 0
+set bounce-invites 0
+set bounce-modes 0
+set learn-users 0
+set wait-split 600
+set wait-info 180
+set mode-buf-length 200
+
+unbind msg - ident *msg:ident
+unbind msg - addhost *msg:addhost
+
+set opchars "@"
+set no-chanrec-info 0
+set prevent-mixing 1
+set max-dloads 3
+set dcc-block 0
+set copy-to-tmp 1
+set xfer-timeout 30
+set share-compressed 1
+set files-path "/home/mydir/filesys"
+set incoming-path "/home/mydir/filesys/incoming"
+set upload-to-pwd 0
+set filedb-path ""
+set max-file-users 20
+set max-filesize 1024
+loadmodule notes
+set notefile "LamestBot.notes"
+set max-notes 50
+set note-life 60
+set allow-fwd 0
+set notify-users 0
+set notify-onjoin 1
+
+if {[file exists aclocal.m4]} { die {You are attempting to run Eggdrop from the source directory. Please finish installing Eggdrop by running "make install" and run it from the install location.} }
+
+loadmodule console
+set console-autosave 1
+set force-channel 0
+set info-party 0
+loadmodule uptime
+
+source scripts/alltools.tcl
+source scripts/action.fix.tcl
+source scripts/dccwhois.tcl
+source scripts/userinfo.tcl
+loadhelp userinfo.help
+@]
blob - /dev/null
blob + dec085d7b0e94c46434d2ca6d94effa13c01f746 (mode 644)
Binary files /dev/null and uploads/Email/1 - add account.png differ
blob - /dev/null
blob + 239ff46b1d7a09f7214ab894668c5a01628db7cf (mode 644)
Binary files /dev/null and uploads/Email/2 - Advanced setup.png differ
blob - /dev/null
blob + ec043fc7d928a754cec548e075e0c7b9330a4d2f (mode 644)
Binary files /dev/null and uploads/Email/3 - Internet email.png differ
blob - /dev/null
blob + e40cc73b952974c2065442f570d22aabdd67701b (mode 644)
Binary files /dev/null and uploads/Email/4 - setup.png differ
blob - /dev/null
blob + 7fdc1ceb1489dfe9d6678d6380dcc43f7ef0c463 (mode 644)
Binary files /dev/null and uploads/Email/5 - Setup.png differ
blob - /dev/null
blob + 2484a2ba8c01200b17ea5129835c97429b8cdd1d (mode 644)
Binary files /dev/null and uploads/Email/6 - Check and Sign in.png differ
blob - /dev/null
blob + e40cc73b952974c2065442f570d22aabdd67701b (mode 644)
Binary files /dev/null and uploads/Email/Setup.png differ
blob - /dev/null
blob + dec085d7b0e94c46434d2ca6d94effa13c01f746 (mode 644)
Binary files /dev/null and uploads/Email/addAccount.png differ
blob - /dev/null
blob + 239ff46b1d7a09f7214ab894668c5a01628db7cf (mode 644)
Binary files /dev/null and uploads/Email/advancedSetup.png differ
blob - /dev/null
blob + 2484a2ba8c01200b17ea5129835c97429b8cdd1d (mode 644)
Binary files /dev/null and uploads/Email/checkandSignIn.png differ
blob - /dev/null
blob + ec043fc7d928a754cec548e075e0c7b9330a4d2f (mode 644)
Binary files /dev/null and uploads/Email/internetEmail.png differ
blob - /dev/null
blob + 7fdc1ceb1489dfe9d6678d6380dcc43f7ef0c463 (mode 644)
Binary files /dev/null and uploads/Email/setupServers.png differ
blob - /dev/null
blob + e562c3c38b425b59bf626f07fdcc736b6171fe04 (mode 644)
Binary files /dev/null and uploads/EmailTray/EmailTray-account-login differ
blob - /dev/null
blob + e562c3c38b425b59bf626f07fdcc736b6171fe04 (mode 644)
Binary files /dev/null and uploads/EmailTray/EmailTray-account-login.png differ
blob - /dev/null
blob + ffdecc6edf2fc4e4c4553ca759f8adcbfb9626f0 (mode 644)
Binary files /dev/null and uploads/EthicalSource/kinggeorge.jpg differ
blob - /dev/null
blob + 4d5b9484aaa33302e19fc3ef8f2a06c6cbdcde98 (mode 644)
Binary files /dev/null and uploads/Fdroid/f-droid-chrome-unknown.png differ
blob - /dev/null
blob + 63652ed8f7a420b87e11aa7aa1470c8859d7cba2 (mode 644)
Binary files /dev/null and uploads/Fdroid/f-droid-install.png differ
blob - /dev/null
blob + c386332364ed18d560272985a8c2d0bb66a0e20b (mode 644)
Binary files /dev/null and uploads/Fdroid/f-droid-main.png differ
blob - /dev/null
blob + 289e2b06ad4343a0c63b82b08d73c02b690a288c (mode 644)
Binary files /dev/null and uploads/Fdroid/f-droid-update-repos.png differ
blob - /dev/null
blob + 1b8853f6e7b9ea3cad2b56831791e68009dcd7dd (mode 644)
Binary files /dev/null and uploads/Fdroid/f-droid-web.png differ
blob - /dev/null
blob + 1d597a430fc502188686b29ca085a5d5d6532628 (mode 644)
Binary files /dev/null and uploads/Freedom/laurel.png differ
blob - /dev/null
blob + 8025068428e6f511d18adf5aa170ee8ad84a77d3 (mode 644)
Binary files /dev/null and uploads/Freedom/radiofreedom.png differ
blob - /dev/null
blob + 24baa81c847c20e10a1eaecf18d54b1c43ce54e0 (mode 644)
Binary files /dev/null and uploads/Freedom/techs-should-factor differ
blob - /dev/null
blob + 24baa81c847c20e10a1eaecf18d54b1c43ce54e0 (mode 644)
Binary files /dev/null and uploads/Freedom/techs-should-factor.png differ
blob - /dev/null
blob + b367e015cd32d68586e5ada68998f2c165f4402f (mode 644)
Binary files /dev/null and uploads/Freedom/torch.png differ
blob - /dev/null
blob + 9a9b724e51546b1d9360f1abacac835f7247ff80 (mode 644)
Binary files /dev/null and uploads/Gajim/gajim-accountadded.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + d319a6a2385050d11a8fa33f68afbcb1e88950ec (mode 644)
Binary files /dev/null and uploads/Gajim/gajim-channel.png differ
blob - /dev/null
blob + 70407b8fd887713354ac156e8b1af612ff00bc57 (mode 644)
Binary files /dev/null and uploads/Gajim/gajim-createaccount.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 70407b8fd887713354ac156e8b1af612ff00bc57 (mode 644)
Binary files /dev/null and uploads/Gajim/gajim-createaccount.png,1637134159 differ
blob - /dev/null
blob + 314b675d99166f6dcebb7970e5d1d761b087f673 (mode 644)
Binary files /dev/null and uploads/Gajim/gajim-menu.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 1b9792c70eca74684833bf55189b97c36c4fd3dd (mode 644)
Binary files /dev/null and uploads/Gajim/gajim-muc.png differ
blob - /dev/null
blob + e1923037f919bc980debb2b903b2776af36daf1b (mode 644)
Binary files /dev/null and uploads/Gajim/gajim-signup.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 5cdf69f691d05258b9734819803356093c2d6965 (mode 644)
Binary files /dev/null and uploads/Gajim/gajim-startjoinchat.png differ
blob - /dev/null
blob + 9528c8b2aaf00dc9ba3011468a845b6a0c940592 (mode 644)
Binary files /dev/null and uploads/Gajim/gajim-welcome.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 314b675d99166f6dcebb7970e5d1d761b087f673 (mode 644)
Binary files /dev/null and uploads/Gajim/gajim_menu.png differ
blob - /dev/null
blob + 23782814ebdc3fc65564daf62b5cc4e6b63f2447 (mode 644)
--- /dev/null
+++ uploads/Hardware/PS2.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="455" height="455" viewBox="-9.302 -9.782 455 455" id="Layer_1" xml:space="preserve"><defs id="defs60"/>
+<path d="M 19.581,217.723 C 19.578,327.416 108.502,416.339 218.195,416.338 C 327.886,416.338 416.815,327.417 416.815,217.723 C 416.812,108.03 327.885,19.098 218.194,19.098 C 108.501,19.099 19.58,108.03 19.581,217.723 z " style="fill:white;stroke:black;stroke-width:6.91480017" id="path3"/>
+<path d="M 344.022,91.413 C 318.213,65.607 286.474,49.358 253.196,42.644 L 253.196,74.218 L 252.196,74.218 L 183.197,74.218 L 182.196,74.218 L 182.196,42.647 C 148.916,49.364 117.179,65.615 91.376,91.421 C 32.347,150.449 23.283,240.5 64.146,309.077 L 126.331,309.077 L 126.331,371.282 C 182.447,404.727 252.939,404.728 309.056,371.284 L 309.056,309.081 L 371.244,309.081 C 412.112,240.499 403.053,150.442 344.022,91.413 z " style="fill:none;stroke:black;stroke-width:6.91480017" id="path5"/>
+<rect width="62.341999" height="110.828" x="186.466" y="122.695" style="fill:none;stroke:black;stroke-width:6.91480017" id="rect7"/>
+<g id="g9">
+	<circle cx="126.093" cy="141.746" r="19.554001" style="fill:none;stroke:black;stroke-width:6.91480017" id="circle11"/>
+	<circle cx="102.949" cy="233.33099" r="19.554001" style="fill:none;stroke:black;stroke-width:6.91480017" id="circle13"/>
+	<circle cx="332.33099" cy="233.33099" r="19.554001" style="fill:none;stroke:black;stroke-width:6.91480017" id="circle15"/>
+	<circle cx="170.961" cy="324.452" r="19.554001" style="fill:none;stroke:black;stroke-width:6.91480017" id="circle17"/>
+	<circle cx="309.18301" cy="141.745" r="19.554001" style="fill:none;stroke:black;stroke-width:6.91480017" id="circle19"/>
+	<circle cx="264.315" cy="324.45099" r="19.554001" style="fill:none;stroke:black;stroke-width:6.91480017" id="circle21"/>
+</g>
+<g id="g23">
+	<rect width="42" height="42" x="144.198" y="102.218" style="fill:none" id="rect25"/>
+	<path d="M 172.854,108.025 C 171.99,107.977 170.886,108.073 169.686,108.265 C 163.014,109.321 159.558,114.169 158.838,119.353 L 158.934,119.353 C 160.422,117.337 163.062,115.705 166.518,115.705 C 172.038,115.705 175.926,119.737 175.926,125.785 C 175.926,131.545 172.038,136.825 165.51,136.825 C 158.886,136.825 154.518,131.641 154.518,123.529 C 154.518,117.385 156.678,112.537 159.798,109.417 C 162.39,106.873 165.846,105.289 169.782,104.809 C 171.03,104.617 172.086,104.569 172.854,104.569 L 172.854,108.025 L 172.854,108.025 z M 165.606,133.561 C 169.206,133.561 171.654,130.537 171.654,126.073 C 171.654,121.609 169.11,118.921 165.222,118.921 C 162.678,118.921 160.278,120.457 159.126,122.761 C 158.886,123.241 158.694,123.817 158.694,124.585 C 158.742,129.721 161.142,133.561 165.558,133.561 L 165.606,133.561 z " id="path27"/>
+</g>
+<g id="g29">
+	<rect width="42" height="42" x="249.19701" y="102.218" style="fill:none" id="rect31"/>
+	<path d="M 278.669,108.649 L 266.766,108.649 L 265.566,116.569 C 266.286,116.473 266.958,116.377 268.11,116.377 C 270.558,116.377 272.91,116.905 274.83,118.057 C 277.278,119.401 279.294,122.137 279.294,126.169 C 279.294,132.265 274.446,136.825 267.679,136.825 C 264.271,136.825 261.439,135.865 259.903,134.905 L 260.959,131.689 C 262.255,132.457 264.799,133.417 267.68,133.417 C 271.616,133.417 275.072,130.825 275.024,126.601 C 275.024,122.473 272.288,119.641 266.096,119.641 C 264.272,119.641 262.879,119.785 261.728,119.977 L 263.744,105.097 L 278.672,105.097 L 278.672,108.649 L 278.669,108.649 z " id="path33"/>
+</g>
+<g id="g35">
+	<rect width="42" height="42" x="149.198" y="260.21799" style="fill:none" id="rect37"/>
+	<path d="M 160.046,294.297 L 160.046,291.705 L 163.358,288.489 C 171.326,280.904 174.974,276.873 174.974,272.169 C 174.974,269.001 173.486,266.072 168.83,266.072 C 165.998,266.072 163.646,267.512 162.206,268.713 L 160.862,265.736 C 162.974,263.961 166.094,262.568 169.694,262.568 C 176.366,262.568 179.198,267.176 179.198,271.64 C 179.198,277.4 175.022,282.056 168.446,288.392 L 165.998,290.697 L 165.998,290.793 L 179.966,290.793 L 179.966,294.297 L 160.046,294.297 L 160.046,294.297 z " id="path39"/>
+</g>
+<g id="g41">
+	<rect width="42" height="42" x="244.19701" y="260.21799" style="fill:none" id="rect43"/>
+	<path d="M 264.213,267.032 L 264.117,267.032 L 258.693,269.961 L 257.877,266.745 L 264.693,263.097 L 268.293,263.097 L 268.293,294.297 L 264.213,294.297 L 264.213,267.032 L 264.213,267.032 z " id="path45"/>
+</g>
+<g id="g47">
+	<rect width="42" height="42" x="124.198" y="193.218" style="fill:none" id="rect49"/>
+	<path d="M 148.102,227.297 L 148.102,218.801 L 133.606,218.801 L 133.606,216.065 L 147.526,196.097 L 152.086,196.097 L 152.086,215.537 L 156.454,215.537 L 156.454,218.801 L 152.086,218.801 L 152.086,227.297 L 148.102,227.297 L 148.102,227.297 z M 148.102,215.537 L 148.102,205.073 C 148.102,203.441 148.15,201.809 148.246,200.177 L 148.102,200.177 C 147.142,202.001 146.374,203.345 145.51,204.833 L 137.878,215.441 L 137.878,215.537 L 148.102,215.537 L 148.102,215.537 z " id="path51"/>
+</g>
+<g id="g53">
+	<rect width="42" height="42" x="269.19699" y="193.218" style="fill:none" id="rect55"/>
+	<path d="M 281.053,222.497 C 282.252,223.217 284.989,224.417 287.964,224.417 C 293.341,224.417 295.068,221.009 295.021,218.369 C 294.973,214.001 291.037,212.129 286.957,212.129 L 284.605,212.129 L 284.605,208.961 L 286.957,208.961 C 290.029,208.961 293.917,207.377 293.917,203.681 C 293.917,201.185 292.333,198.977 288.445,198.977 C 285.949,198.977 283.549,200.081 282.205,201.041 L 281.054,197.969 C 282.734,196.769 285.902,195.569 289.262,195.569 C 295.406,195.569 298.19,199.217 298.19,203.009 C 298.19,206.273 296.222,209.009 292.43,210.401 L 292.43,210.497 C 296.27,211.217 299.39,214.097 299.39,218.465 C 299.39,223.457 295.453,227.825 288.014,227.825 C 284.51,227.825 281.438,226.721 279.902,225.713 L 281.053,222.497 z " id="path57"/>
+</g>
+</svg>
\ No newline at end of file
blob - /dev/null
blob + b47fbd9b43273ae3f96544d1529105e5882da88b (mode 644)
Binary files /dev/null and uploads/Hunchentoot/emacs-001.png differ
blob - /dev/null
blob + ef9160a26de706f102d3ae1b5b39b13952872737 (mode 644)
Binary files /dev/null and uploads/Hunchentoot/emacs-002.png differ
blob - /dev/null
blob + 0af517043c68896c08c90fbe0cfd556727cfce25 (mode 644)
Binary files /dev/null and uploads/Hunchentoot/emacs-003.png differ
blob - /dev/null
blob + 8f9ee7cea94321e66995682d42c351ee4730e1d9 (mode 644)
Binary files /dev/null and uploads/Hunchentoot/emacs-004.png differ
blob - /dev/null
blob + 37a600ce143b9a815e80f3704fade5e792513a4b (mode 644)
Binary files /dev/null and uploads/Hunchentoot/emacs-005.png differ
blob - /dev/null
blob + f262f7d9e77acb902af9be5da5e1713d756152dd (mode 644)
Binary files /dev/null and uploads/Hunchentoot/firefox-001.png differ
blob - /dev/null
blob + 034be8e35cf3dfabb3487b96108544f397507dd6 (mode 644)
Binary files /dev/null and uploads/IPv4/IPV4-Subnets differ
blob - /dev/null
blob + 034be8e35cf3dfabb3487b96108544f397507dd6 (mode 644)
Binary files /dev/null and uploads/IPv4/IPV4.gif differ
blob - /dev/null
blob + 329e0c3d767c6425c624a0fe47dfa6356cb835a1 (mode 644)
Binary files /dev/null and uploads/Iked/cero.jpg differ
blob - /dev/null
blob + 943c5d0a8c8b1efe6405c1fcd870ecc22f60cf86 (mode 644)
Binary files /dev/null and uploads/Iked/cuarto differ
blob - /dev/null
blob + a031e001629c12ba586efef16b0265f798766fc9 (mode 644)
Binary files /dev/null and uploads/Iked/cuarto.jpg differ
blob - /dev/null
blob + 943c5d0a8c8b1efe6405c1fcd870ecc22f60cf86 (mode 644)
Binary files /dev/null and uploads/Iked/cuarto4.jpg differ
blob - /dev/null
blob + 159daa36970335532831e7aa3018b5f57a0ed60a (mode 644)
Binary files /dev/null and uploads/Iked/primero differ
blob - /dev/null
blob + b55c8b24a34907591a6152380ad80b26810ab886 (mode 644)
Binary files /dev/null and uploads/Iked/primero.jpg differ
blob - /dev/null
blob + 159daa36970335532831e7aa3018b5f57a0ed60a (mode 644)
Binary files /dev/null and uploads/Iked/primero1.jpg differ
blob - /dev/null
blob + 8078c3b00119f96bd634613be6ad1631e3d0dff1 (mode 644)
Binary files /dev/null and uploads/Iked/quinto differ
blob - /dev/null
blob + 91d849eb51c525ff148a33a06e5fac82ba4fba44 (mode 644)
Binary files /dev/null and uploads/Iked/quinto.jpg differ
blob - /dev/null
blob + 8078c3b00119f96bd634613be6ad1631e3d0dff1 (mode 644)
Binary files /dev/null and uploads/Iked/quinto5.jpg differ
blob - /dev/null
blob + 0c8e7c98361738c62320e448d3759a03cf744e57 (mode 644)
Binary files /dev/null and uploads/Iked/segundo differ
blob - /dev/null
blob + 0fa43f489d76fea0bb39cb2f934bf27eaf31fca9 (mode 644)
Binary files /dev/null and uploads/Iked/segundo.jpg differ
blob - /dev/null
blob + 0c8e7c98361738c62320e448d3759a03cf744e57 (mode 644)
Binary files /dev/null and uploads/Iked/segundo2.jpg differ
blob - /dev/null
blob + 270e8baef64f7618db5c4c29ad8d2627e11ede24 (mode 644)
Binary files /dev/null and uploads/Iked/septimo differ
blob - /dev/null
blob + 270e8baef64f7618db5c4c29ad8d2627e11ede24 (mode 644)
Binary files /dev/null and uploads/Iked/septimo7.jpg differ
blob - /dev/null
blob + f0d9fa114ee63ea2b968add1fd2e1ddd578021c6 (mode 644)
Binary files /dev/null and uploads/Iked/sexto differ
blob - /dev/null
blob + 5b6351e7cec6f9d76afad037bc6915cbd918bc95 (mode 644)
Binary files /dev/null and uploads/Iked/sexto.jpg differ
blob - /dev/null
blob + f0d9fa114ee63ea2b968add1fd2e1ddd578021c6 (mode 644)
Binary files /dev/null and uploads/Iked/sexto6.jpg differ
blob - /dev/null
blob + 02d4924afec46bebfcaf5a757afd9e3b9798242b (mode 644)
Binary files /dev/null and uploads/Iked/strongswanaddvpnprofile.jpg differ
blob - /dev/null
blob + 918ce84e7bafd8f031583de554059cff6b3c4a18 (mode 644)
Binary files /dev/null and uploads/Iked/strongswanaddvpnprofile.jpg,1722014544 differ
blob - /dev/null
blob + 9270f5989a291c118322ec95ff1bbbd9df11da67 (mode 644)
Binary files /dev/null and uploads/Iked/strongswancacrt.jpg differ
blob - /dev/null
blob + 5cfdbc53d2f1d57a14d8847c9c1185729d5440b6 (mode 644)
Binary files /dev/null and uploads/Iked/strongswanconnected.jpg differ
blob - /dev/null
blob + 5ed656ad7b4536cda0f00386ca70950d0fda0537 (mode 644)
Binary files /dev/null and uploads/Iked/strongswanconnectionrequest.jpg differ
blob - /dev/null
blob + 39e330b603d0870923837d41ed792a58329ddf05 (mode 644)
Binary files /dev/null and uploads/Iked/strongswanimportcrt.jpg differ
blob - /dev/null
blob + 17644cba76c160ef6062c7f951e8079d776e1a58 (mode 644)
Binary files /dev/null and uploads/Iked/strongswanrunbackground.jpg differ
blob - /dev/null
blob + 02d4924afec46bebfcaf5a757afd9e3b9798242b (mode 644)
Binary files /dev/null and uploads/Iked/strongswanselectcacert.jpg differ
blob - /dev/null
blob + 969fd4e6d8126c90d458489b74e6d6f6e2933ebc (mode 644)
Binary files /dev/null and uploads/Iked/strongswanvpnprofile.jpg differ
blob - /dev/null
blob + 4580f03e66f1094f63b0c5ac57b5e5f36fe9c057 (mode 644)
Binary files /dev/null and uploads/Iked/tercero differ
blob - /dev/null
blob + 2657815492fd9732414198a5846aa06046ef92a2 (mode 644)
Binary files /dev/null and uploads/Iked/tercero.jpg differ
blob - /dev/null
blob + 4580f03e66f1094f63b0c5ac57b5e5f36fe9c057 (mode 644)
Binary files /dev/null and uploads/Iked/tercero3.jpg differ
blob - /dev/null
blob + 8c6e99094f9d313850e93a0b5ff3d2d7005e816c (mode 644)
Binary files /dev/null and uploads/Ikiwiki/ikiwiki-markdown.tgz differ
blob - /dev/null
blob + 9338a5b19cc379e652b5c912b71bdee9c6089cd4 (mode 644)
--- /dev/null
+++ uploads/Ipmi/java.security.txt
@@ -0,0 +1,1343 @@
+#

+# This is the "master security properties file".

+#

+# An alternate java.security properties file may be specified

+# from the command line via the system property

+#

+#    -Djava.security.properties=<URL>

+#

+# This properties file appends to the master security properties file.

+# If both properties files specify values for the same key, the value

+# from the command-line properties file is selected, as it is the last

+# one loaded.

+#

+# Also, if you specify

+#

+#    -Djava.security.properties==<URL> (2 equals),

+#

+# then that properties file completely overrides the master security

+# properties file.

+#

+# To disable the ability to specify an additional properties file from

+# the command line, set the key security.overridePropertiesFile

+# to false in the master security properties file. It is set to true

+# by default.

+#

+# If this properties file fails to load, the JDK implementation will throw

+# an unspecified error when initializing the java.security.Security class.

+

+# In this file, various security properties are set for use by

+# java.security classes. This is where users can statically register

+# Cryptography Package Providers ("providers" for short). The term

+# "provider" refers to a package or set of packages that supply a

+# concrete implementation of a subset of the cryptography aspects of

+# the Java Security API. A provider may, for example, implement one or

+# more digital signature algorithms or message digest algorithms.

+#

+# Each provider must implement a subclass of the Provider class.

+# To register a provider in this master security properties file,

+# specify the Provider subclass name and priority in the format

+#

+#    security.provider.<n>=<className>

+#

+# This declares a provider, and specifies its preference

+# order n. The preference order is the order in which providers are

+# searched for requested algorithms (when no specific provider is

+# requested). The order is 1-based; 1 is the most preferred, followed

+# by 2, and so on.

+#

+# <className> must specify the subclass of the Provider class whose

+# constructor sets the values of various properties that are required

+# for the Java Security API to look up the algorithms or other

+# facilities implemented by the provider.

+#

+# There must be at least one provider specification in java.security.

+# There is a default provider that comes standard with the JDK. It

+# is called the "SUN" provider, and its Provider subclass

+# named Sun appears in the sun.security.provider package. Thus, the

+# "SUN" provider is registered via the following:

+#

+#    security.provider.1=sun.security.provider.Sun

+#

+# (The number 1 is used for the default provider.)

+#

+# Note: Providers can be dynamically registered instead by calls to

+# either the addProvider or insertProviderAt method in the Security

+# class.

+

+#

+# List of providers and their preference orders (see above):

+#

+security.provider.1=sun.security.provider.Sun

+security.provider.2=sun.security.rsa.SunRsaSign

+security.provider.3=sun.security.ec.SunEC

+security.provider.4=com.sun.net.ssl.internal.ssl.Provider

+security.provider.5=com.sun.crypto.provider.SunJCE

+security.provider.6=sun.security.jgss.SunProvider

+security.provider.7=com.sun.security.sasl.Provider

+security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI

+security.provider.9=sun.security.smartcardio.SunPCSC

+security.provider.10=sun.security.mscapi.SunMSCAPI

+

+#

+# Support for the here() function

+#

+# This security property determines whether the here() XPath function is

+# supported in XML Signature generation and verification.

+#

+# If this property is set to false, the here() function is not supported.

+# Generating an XML Signature that uses the here() function will throw an

+# XMLSignatureException. Validating an existing XML Signature that uses the

+# here() function will also throw an XMLSignatureException.

+#

+# The default value for this property is true.

+#

+# Note: This property is currently used by the JDK Reference implementation.

+# It is not guaranteed to be examined and used by other implementations.

+#

+#jdk.xml.dsig.hereFunctionSupported=true

+

+#

+# Sun Provider SecureRandom seed source.

+#

+# Select the primary source of seed data for the "SHA1PRNG" and

+# "NativePRNG" SecureRandom implementations in the "Sun" provider.

+# (Other SecureRandom implementations might also use this property.)

+#

+# On Unix-like systems (for example, Solaris/Linux/MacOS), the

+# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from

+# special device files such as file:/dev/random.

+#

+# On Windows systems, specifying the URLs "file:/dev/random" or

+# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding

+# mechanism for SHA1PRNG.

+#

+# By default, an attempt is made to use the entropy gathering device

+# specified by the "securerandom.source" Security property.  If an

+# exception occurs while accessing the specified URL:

+#

+#     SHA1PRNG:

+#         the traditional system/thread activity algorithm will be used.

+#

+#     NativePRNG:

+#         a default value of /dev/random will be used.  If neither

+#         are available, the implementation will be disabled.

+#         "file" is the only currently supported protocol type.

+#

+# The entropy gathering device can also be specified with the System

+# property "java.security.egd". For example:

+#

+#   % java -Djava.security.egd=file:/dev/random MainClass

+#

+# Specifying this System property will override the

+# "securerandom.source" Security property.

+#

+# In addition, if "file:/dev/random" or "file:/dev/urandom" is

+# specified, the "NativePRNG" implementation will be more preferred than

+# SHA1PRNG in the Sun provider.

+#

+securerandom.source=file:/dev/random

+

+#

+# A list of known strong SecureRandom implementations.

+#

+# To help guide applications in selecting a suitable strong

+# java.security.SecureRandom implementation, Java distributions should

+# indicate a list of known strong implementations using the property.

+#

+# This is a comma-separated list of algorithm and/or algorithm:provider

+# entries.

+#

+securerandom.strongAlgorithms=Windows-PRNG:SunMSCAPI,SHA1PRNG:SUN

+

+#

+# Class to instantiate as the javax.security.auth.login.Configuration

+# provider.

+#

+login.configuration.provider=sun.security.provider.ConfigFile

+

+#

+# Default login configuration file

+#

+#login.config.url.1=file:${user.home}/.java.login.config

+

+#

+# Class to instantiate as the system Policy. This is the name of the class

+# that will be used as the Policy object.

+#

+policy.provider=sun.security.provider.PolicyFile

+

+# The default is to have a single system-wide policy file,

+# and a policy file in the user's home directory.

+policy.url.1=file:${java.home}/lib/security/java.policy

+policy.url.2=file:${user.home}/.java.policy

+

+# whether or not we expand properties in the policy file

+# if this is set to false, properties (${...}) will not be expanded in policy

+# files.

+policy.expandProperties=true

+

+# whether or not we allow an extra policy to be passed on the command line

+# with -Djava.security.policy=somefile. Comment out this line to disable

+# this feature.

+policy.allowSystemProperty=true

+

+# whether or not we look into the IdentityScope for trusted Identities

+# when encountering a 1.1 signed JAR file. If the identity is found

+# and is trusted, we grant it AllPermission.

+policy.ignoreIdentityScope=false

+

+#

+# Default keystore type.

+#

+keystore.type=jks

+

+#

+# Controls compatibility mode for the JKS keystore type.

+#

+# When set to 'true', the JKS keystore type supports loading

+# keystore files in either JKS or PKCS12 format. When set to 'false'

+# it supports loading only JKS keystore files.

+#

+keystore.type.compat=true

+

+#

+# List of comma-separated packages that start with or equal this string

+# will cause a security exception to be thrown when

+# passed to checkPackageAccess unless the

+# corresponding RuntimePermission ("accessClassInPackage."+package) has

+# been granted.

+package.access=sun.,\

+               com.sun.xml.internal.,\

+               com.sun.imageio.,\

+               com.sun.istack.internal.,\

+               com.sun.jmx.,\

+               com.sun.media.sound.,\

+               com.sun.naming.internal.,\

+               com.sun.proxy.,\

+               com.sun.corba.se.,\

+               com.sun.org.apache.bcel.internal.,\

+               com.sun.org.apache.regexp.internal.,\

+               com.sun.org.apache.xerces.internal.,\

+               com.sun.org.apache.xpath.internal.,\

+               com.sun.org.apache.xalan.internal.extensions.,\

+               com.sun.org.apache.xalan.internal.lib.,\

+               com.sun.org.apache.xalan.internal.res.,\

+               com.sun.org.apache.xalan.internal.templates.,\

+               com.sun.org.apache.xalan.internal.utils.,\

+               com.sun.org.apache.xalan.internal.xslt.,\

+               com.sun.org.apache.xalan.internal.xsltc.cmdline.,\

+               com.sun.org.apache.xalan.internal.xsltc.compiler.,\

+               com.sun.org.apache.xalan.internal.xsltc.trax.,\

+               com.sun.org.apache.xalan.internal.xsltc.util.,\

+               com.sun.org.apache.xml.internal.res.,\

+               com.sun.org.apache.xml.internal.resolver.helpers.,\

+               com.sun.org.apache.xml.internal.resolver.readers.,\

+               com.sun.org.apache.xml.internal.security.,\

+               com.sun.org.apache.xml.internal.serializer.utils.,\

+               com.sun.org.apache.xml.internal.utils.,\

+               com.sun.org.glassfish.,\

+               com.oracle.xmlns.internal.,\

+               com.oracle.webservices.internal.,\

+               oracle.jrockit.jfr.,\

+               org.jcp.xml.dsig.internal.,\

+               jdk.internal.,\

+               jdk.nashorn.internal.,\

+               jdk.nashorn.tools.,\

+               jdk.xml.internal.,\

+               com.sun.activation.registries.,\

+               com.sun.java.accessibility.,\

+               com.sun.browser.,\

+               com.sun.glass.,\

+               com.sun.javafx.,\

+               com.sun.media.,\

+               com.sun.openpisces.,\

+               com.sun.prism.,\

+               com.sun.scenario.,\

+               com.sun.t2k.,\

+               com.sun.pisces.,\

+               com.sun.webkit.,\

+               jdk.management.resource.internal.

+

+#

+# List of comma-separated packages that start with or equal this string

+# will cause a security exception to be thrown when

+# passed to checkPackageDefinition unless the

+# corresponding RuntimePermission ("defineClassInPackage."+package) has

+# been granted.

+#

+# by default, none of the class loaders supplied with the JDK call

+# checkPackageDefinition.

+#

+package.definition=sun.,\

+                   com.sun.xml.internal.,\

+                   com.sun.imageio.,\

+                   com.sun.istack.internal.,\

+                   com.sun.jmx.,\

+                   com.sun.media.sound.,\

+                   com.sun.naming.internal.,\

+                   com.sun.proxy.,\

+                   com.sun.corba.se.,\

+                   com.sun.org.apache.bcel.internal.,\

+                   com.sun.org.apache.regexp.internal.,\

+                   com.sun.org.apache.xerces.internal.,\

+                   com.sun.org.apache.xpath.internal.,\

+                   com.sun.org.apache.xalan.internal.extensions.,\

+                   com.sun.org.apache.xalan.internal.lib.,\

+                   com.sun.org.apache.xalan.internal.res.,\

+                   com.sun.org.apache.xalan.internal.templates.,\

+                   com.sun.org.apache.xalan.internal.utils.,\

+                   com.sun.org.apache.xalan.internal.xslt.,\

+                   com.sun.org.apache.xalan.internal.xsltc.cmdline.,\

+                   com.sun.org.apache.xalan.internal.xsltc.compiler.,\

+                   com.sun.org.apache.xalan.internal.xsltc.trax.,\

+                   com.sun.org.apache.xalan.internal.xsltc.util.,\

+                   com.sun.org.apache.xml.internal.res.,\

+                   com.sun.org.apache.xml.internal.resolver.helpers.,\

+                   com.sun.org.apache.xml.internal.resolver.readers.,\

+                   com.sun.org.apache.xml.internal.security.,\

+                   com.sun.org.apache.xml.internal.serializer.utils.,\

+                   com.sun.org.apache.xml.internal.utils.,\

+                   com.sun.org.glassfish.,\

+                   com.oracle.xmlns.internal.,\

+                   com.oracle.webservices.internal.,\

+                   oracle.jrockit.jfr.,\

+                   org.jcp.xml.dsig.internal.,\

+                   jdk.internal.,\

+                   jdk.nashorn.internal.,\

+                   jdk.nashorn.tools.,\

+                   jdk.xml.internal.,\

+                   com.sun.activation.registries.,\

+                   com.sun.java.accessibility.,\

+                   com.sun.browser.,\

+                   com.sun.glass.,\

+                   com.sun.javafx.,\

+                   com.sun.media.,\

+                   com.sun.openpisces.,\

+                   com.sun.prism.,\

+                   com.sun.scenario.,\

+                   com.sun.t2k.,\

+                   com.sun.pisces.,\

+                   com.sun.webkit.,\

+                   jdk.management.resource.internal.

+

+#

+# Determines whether this properties file can be appended to

+# or overridden on the command line via -Djava.security.properties

+#

+security.overridePropertiesFile=true

+

+#

+# Determines the default key and trust manager factory algorithms for

+# the javax.net.ssl package.

+#

+ssl.KeyManagerFactory.algorithm=SunX509

+ssl.TrustManagerFactory.algorithm=PKIX

+

+#

+# The Java-level namelookup cache policy for successful lookups:

+#

+# any negative value: caching forever

+# any positive value: the number of seconds to cache an address for

+# zero: do not cache

+#

+# default value is forever (FOREVER). For security reasons, this

+# caching is made forever when a security manager is set. When a security

+# manager is not set, the default behavior in this implementation

+# is to cache for 30 seconds.

+#

+# NOTE: setting this to anything other than the default value can have

+#       serious security implications. Do not set it unless

+#       you are sure you are not exposed to DNS spoofing attack.

+#

+#networkaddress.cache.ttl=-1

+

+# The Java-level namelookup cache policy for failed lookups:

+#

+# any negative value: cache forever

+# any positive value: the number of seconds to cache negative lookup results

+# zero: do not cache

+#

+# In some Microsoft Windows networking environments that employ

+# the WINS name service in addition to DNS, name service lookups

+# that fail may take a noticeably long time to return (approx. 5 seconds).

+# For this reason the default caching policy is to maintain these

+# results for 10 seconds.

+#

+#

+networkaddress.cache.negative.ttl=10

+

+#

+# Properties to configure OCSP for certificate revocation checking

+#

+

+# Enable OCSP

+#

+# By default, OCSP is not used for certificate revocation checking.

+# This property enables the use of OCSP when set to the value "true".

+#

+# NOTE: SocketPermission is required to connect to an OCSP responder.

+#

+# Example,

+#   ocsp.enable=true

+

+#

+# Location of the OCSP responder

+#

+# By default, the location of the OCSP responder is determined implicitly

+# from the certificate being validated. This property explicitly specifies

+# the location of the OCSP responder. The property is used when the

+# Authority Information Access extension (defined in RFC 3280) is absent

+# from the certificate or when it requires overriding.

+#

+# Example,

+#   ocsp.responderURL=http://ocsp.example.net:80

+

+#

+# Subject name of the OCSP responder's certificate

+#

+# By default, the certificate of the OCSP responder is that of the issuer

+# of the certificate being validated. This property identifies the certificate

+# of the OCSP responder when the default does not apply. Its value is a string

+# distinguished name (defined in RFC 2253) which identifies a certificate in

+# the set of certificates supplied during cert path validation. In cases where

+# the subject name alone is not sufficient to uniquely identify the certificate

+# then both the "ocsp.responderCertIssuerName" and

+# "ocsp.responderCertSerialNumber" properties must be used instead. When this

+# property is set then those two properties are ignored.

+#

+# Example,

+#   ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"

+

+#

+# Issuer name of the OCSP responder's certificate

+#

+# By default, the certificate of the OCSP responder is that of the issuer

+# of the certificate being validated. This property identifies the certificate

+# of the OCSP responder when the default does not apply. Its value is a string

+# distinguished name (defined in RFC 2253) which identifies a certificate in

+# the set of certificates supplied during cert path validation. When this

+# property is set then the "ocsp.responderCertSerialNumber" property must also

+# be set. When the "ocsp.responderCertSubjectName" property is set then this

+# property is ignored.

+#

+# Example,

+#   ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"

+

+#

+# Serial number of the OCSP responder's certificate

+#

+# By default, the certificate of the OCSP responder is that of the issuer

+# of the certificate being validated. This property identifies the certificate

+# of the OCSP responder when the default does not apply. Its value is a string

+# of hexadecimal digits (colon or space separators may be present) which

+# identifies a certificate in the set of certificates supplied during cert path

+# validation. When this property is set then the "ocsp.responderCertIssuerName"

+# property must also be set. When the "ocsp.responderCertSubjectName" property

+# is set then this property is ignored.

+#

+# Example,

+#   ocsp.responderCertSerialNumber=2A:FF:00

+

+#

+# Policy for failed Kerberos KDC lookups:

+#

+# When a KDC is unavailable (network error, service failure, etc), it is

+# put inside a blacklist and accessed less often for future requests. The

+# value (case-insensitive) for this policy can be:

+#

+# tryLast

+#    KDCs in the blacklist are always tried after those not on the list.

+#

+# tryLess[:max_retries,timeout]

+#    KDCs in the blacklist are still tried by their order in the configuration,

+#    but with smaller max_retries and timeout values. max_retries and timeout

+#    are optional numerical parameters (default 1 and 5000, which means once

+#    and 5 seconds). Please notes that if any of the values defined here is

+#    more than what is defined in krb5.conf, it will be ignored.

+#

+# Whenever a KDC is detected as available, it is removed from the blacklist.

+# The blacklist is reset when krb5.conf is reloaded. You can add

+# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is

+# reloaded whenever a JAAS authentication is attempted.

+#

+# Example,

+#   krb5.kdc.bad.policy = tryLast

+#   krb5.kdc.bad.policy = tryLess:2,2000

+krb5.kdc.bad.policy = tryLast

+

+#

+# This property contains a list of disabled EC Named Curves that can be included

+# in the jdk.[tls|certpath|jar].disabledAlgorithms properties.  To include this

+# list in any of the disabledAlgorithms properties, add the property name as

+# an entry.

+jdk.disabled.namedCurves = secp112r1, secp112r2, secp128r1, secp128r2, \

+    secp160k1, secp160r1, secp160r2, secp192k1, secp192r1, secp224k1, \

+    secp224r1, secp256k1, sect113r1, sect113r2, sect131r1, sect131r2, \

+    sect163k1, sect163r1, sect163r2, sect193r1, sect193r2, sect233k1, \

+    sect233r1, sect239k1, sect283k1, sect283r1, sect409k1, sect409r1, \

+    sect571k1, sect571r1, X9.62 c2tnb191v1, X9.62 c2tnb191v2, \

+    X9.62 c2tnb191v3, X9.62 c2tnb239v1, X9.62 c2tnb239v2, X9.62 c2tnb239v3, \

+    X9.62 c2tnb359v1, X9.62 c2tnb431r1, X9.62 prime192v2, X9.62 prime192v3, \

+    X9.62 prime239v1, X9.62 prime239v2, X9.62 prime239v3, brainpoolP256r1, \

+    brainpoolP320r1, brainpoolP384r1, brainpoolP512r1

+

+#

+# Kerberos cross-realm referrals (RFC 6806)

+#

+# OpenJDK's Kerberos client supports cross-realm referrals as defined in

+# RFC 6806. This allows to setup more dynamic environments in which clients

+# do not need to know in advance how to reach the realm of a target principal

+# (either a user or service).

+#

+# When a client issues an AS or a TGS request, the "canonicalize" option

+# is set to announce support of this feature. A KDC server may fulfill the

+# request or reply referring the client to a different one. If referred,

+# the client will issue a new request and the cycle repeats.

+#

+# In addition to referrals, the "canonicalize" option allows the KDC server

+# to change the client name in response to an AS request. For security reasons,

+# RFC 6806 (section 11) FAST scheme is enforced.

+#

+# Disable Kerberos cross-realm referrals. Value may be overwritten with a

+# System property (-Dsun.security.krb5.disableReferrals).

+sun.security.krb5.disableReferrals=false

+

+# Maximum number of AS or TGS referrals to avoid infinite loops. Value may

+# be overwritten with a System property (-Dsun.security.krb5.maxReferrals).

+sun.security.krb5.maxReferrals=5

+

+#

+# Algorithm restrictions for certification path (CertPath) processing

+#

+# In some environments, certain algorithms or key lengths may be undesirable

+# for certification path building and validation.  For example, "MD2" is

+# generally no longer considered to be a secure hash algorithm.  This section

+# describes the mechanism for disabling algorithms based on algorithm name

+# and/or key length.  This includes algorithms used in certificates, as well

+# as revocation information such as CRLs and signed OCSP Responses.

+# The syntax of the disabled algorithm string is described as follows:

+#   DisabledAlgorithms:

+#       " DisabledAlgorithm { , DisabledAlgorithm } "

+#

+#   DisabledAlgorithm:

+#       AlgorithmName [Constraint] { '&' Constraint } | IncludeProperty

+#

+#   AlgorithmName:

+#       (see below)

+#

+#   Constraint:

+#       KeySizeConstraint | CAConstraint | DenyAfterConstraint |

+#       UsageConstraint

+#

+#   KeySizeConstraint:

+#       keySize Operator KeyLength

+#

+#   Operator:

+#       <= | < | == | != | >= | >

+#

+#   KeyLength:

+#       Integer value of the algorithm's key length in bits

+#

+#   CAConstraint:

+#       jdkCA

+#

+#   DenyAfterConstraint:

+#       denyAfter YYYY-MM-DD

+#

+#   UsageConstraint:

+#       usage [TLSServer] [TLSClient] [SignedJAR]

+#

+#   IncludeProperty:

+#       include <security property>

+#

+# The "AlgorithmName" is the standard algorithm name of the disabled

+# algorithm. See "Java Cryptography Architecture Standard Algorithm Name

+# Documentation" for information about Standard Algorithm Names.  Matching

+# is performed using a case-insensitive sub-element matching rule.  (For

+# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and

+# "ECDSA" for signatures.)  If the assertion "AlgorithmName" is a

+# sub-element of the certificate algorithm name, the algorithm will be

+# rejected during certification path building and validation.  For example,

+# the assertion algorithm name "DSA" will disable all certificate algorithms

+# that rely on DSA, such as NONEwithDSA, SHA1withDSA.  However, the assertion

+# will not disable algorithms related to "ECDSA".

+#

+# The "IncludeProperty" allows a implementation-defined security property that

+# can be included in the disabledAlgorithms properties.  These properties are

+# to help manage common actions easier across multiple disabledAlgorithm

+# properties.

+# There is one defined security property:  jdk.disabled.NamedCurves

+# See the property for more specific details.

+#

+#

+# A "Constraint" defines restrictions on the keys and/or certificates for

+# a specified AlgorithmName:

+#

+#   KeySizeConstraint:

+#     keySize Operator KeyLength

+#       The constraint requires a key of a valid size range if the

+#       "AlgorithmName" is of a key algorithm.  The "KeyLength" indicates

+#       the key size specified in number of bits.  For example,

+#       "RSA keySize <= 1024" indicates that any RSA key with key size less

+#       than or equal to 1024 bits should be disabled, and

+#       "RSA keySize < 1024, RSA keySize > 2048" indicates that any RSA key

+#       with key size less than 1024 or greater than 2048 should be disabled.

+#       This constraint is only used on algorithms that have a key size.

+#

+#   CAConstraint:

+#     jdkCA

+#       This constraint prohibits the specified algorithm only if the

+#       algorithm is used in a certificate chain that terminates at a marked

+#       trust anchor in the lib/security/cacerts keystore.  If the jdkCA

+#       constraint is not set, then all chains using the specified algorithm

+#       are restricted.  jdkCA may only be used once in a DisabledAlgorithm

+#       expression.

+#       Example:  To apply this constraint to SHA-1 certificates, include

+#       the following:  "SHA1 jdkCA"

+#

+#   DenyAfterConstraint:

+#     denyAfter YYYY-MM-DD

+#       This constraint prohibits a certificate with the specified algorithm

+#       from being used after the date regardless of the certificate's

+#       validity.  JAR files that are signed and timestamped before the

+#       constraint date with certificates containing the disabled algorithm

+#       will not be restricted.  The date is processed in the UTC timezone.

+#       This constraint can only be used once in a DisabledAlgorithm

+#       expression.

+#       Example:  To deny usage of RSA 2048 bit certificates after Feb 3 2020,

+#       use the following:  "RSA keySize == 2048 & denyAfter 2020-02-03"

+#

+#   UsageConstraint:

+#     usage [TLSServer] [TLSClient] [SignedJAR]

+#       This constraint prohibits the specified algorithm for

+#       a specified usage.  This should be used when disabling an algorithm

+#       for all usages is not practical. 'TLSServer' restricts the algorithm

+#       in TLS server certificate chains when server authentication is

+#       performed. 'TLSClient' restricts the algorithm in TLS client

+#       certificate chains when client authentication is performed.

+#       'SignedJAR' constrains use of certificates in signed jar files.

+#       The usage type follows the keyword and more than one usage type can

+#       be specified with a whitespace delimiter.

+#       Example:  "SHA1 usage TLSServer TLSClient"

+#

+# When an algorithm must satisfy more than one constraint, it must be

+# delimited by an ampersand '&'.  For example, to restrict certificates in a

+# chain that terminate at a distribution provided trust anchor and contain

+# RSA keys that are less than or equal to 1024 bits, add the following

+# constraint:  "RSA keySize <= 1024 & jdkCA".

+#

+# All DisabledAlgorithms expressions are processed in the order defined in the

+# property.  This requires lower keysize constraints to be specified

+# before larger keysize constraints of the same algorithm.  For example:

+# "RSA keySize < 1024 & jdkCA, RSA keySize < 2048".

+#

+# Note: The algorithm restrictions do not apply to trust anchors or

+# self-signed certificates.

+#

+# Note: This property is currently used by Oracle's PKIX implementation. It

+# is not guaranteed to be examined and used by other implementations.

+#

+# Example:

+#   jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048

+#

+#

+###jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \

+###    RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224, \

+###    include jdk.disabled.namedCurves, \

+###    SHA1 usage SignedJAR & denyAfter 2019-01-01

+###

+#

+# Legacy algorithms for certification path (CertPath) processing and

+# signed JAR files.

+#

+# In some environments, a certain algorithm or key length may be undesirable

+# but is not yet disabled.

+#

+# Tools such as keytool and jarsigner may emit warnings when these legacy

+# algorithms are used. See the man pages for those tools for more information.

+#

+# The syntax is the same as the "jdk.certpath.disabledAlgorithms" and

+# "jdk.jar.disabledAlgorithms" security properties.

+#

+# Note: This property is currently used by the JDK Reference

+# implementation. It is not guaranteed to be examined and used by other

+# implementations.

+

+jdk.security.legacyAlgorithms=SHA1, \

+    RSA keySize < 2048, DSA keySize < 2048

+

+#

+# Algorithm restrictions for signed JAR files

+#

+# In some environments, certain algorithms or key lengths may be undesirable

+# for signed JAR validation.  For example, "MD2" is generally no longer

+# considered to be a secure hash algorithm.  This section describes the

+# mechanism for disabling algorithms based on algorithm name and/or key length.

+# JARs signed with any of the disabled algorithms or key sizes will be treated

+# as unsigned.

+#

+# The syntax of the disabled algorithm string is described as follows:

+#   DisabledAlgorithms:

+#       " DisabledAlgorithm { , DisabledAlgorithm } "

+#

+#   DisabledAlgorithm:

+#       AlgorithmName [Constraint] { '&' Constraint }

+#

+#   AlgorithmName:

+#       (see below)

+#

+#   Constraint:

+#       KeySizeConstraint | DenyAfterConstraint

+#

+#   KeySizeConstraint:

+#       keySize Operator KeyLength

+#

+#   DenyAfterConstraint:

+#       denyAfter YYYY-MM-DD

+#

+#   Operator:

+#       <= | < | == | != | >= | >

+#

+#   KeyLength:

+#       Integer value of the algorithm's key length in bits

+#

+# Note: This property is currently used by the JDK Reference

+# implementation. It is not guaranteed to be examined and used by other

+# implementations.

+#

+# See "jdk.certpath.disabledAlgorithms" for syntax descriptions.

+#

+###jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \

+###      DSA keySize < 1024, include jdk.disabled.namedCurves, \

+###      SHA1 denyAfter 2019-01-01

+###

+#

+# Algorithm restrictions for Secure Socket Layer/Transport Layer Security

+# (SSL/TLS) processing

+#

+# In some environments, certain algorithms or key lengths may be undesirable

+# when using SSL/TLS.  This section describes the mechanism for disabling

+# algorithms during SSL/TLS security parameters negotiation, including

+# protocol version negotiation, cipher suites selection, signature schemes

+# selection, peer authentication and key exchange mechanisms.

+#

+# Disabled algorithms will not be negotiated for SSL/TLS connections, even

+# if they are enabled explicitly in an application.

+#

+# For PKI-based peer authentication and key exchange mechanisms, this list

+# of disabled algorithms will also be checked during certification path

+# building and validation, including algorithms used in certificates, as

+# well as revocation information such as CRLs and signed OCSP Responses.

+# This is in addition to the jdk.certpath.disabledAlgorithms property above.

+#

+# See the specification of "jdk.certpath.disabledAlgorithms" for the

+# syntax of the disabled algorithm string.

+#

+# Note: The algorithm restrictions do not apply to trust anchors or

+# self-signed certificates.

+#

+# Note: This property is currently used by the JDK Reference implementation.

+# It is not guaranteed to be examined and used by other implementations.

+#

+# Example:

+#   jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048, \

+#       rsa_pkcs1_sha1

+jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \

+    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \

+    include jdk.disabled.namedCurves

+

+# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)

+# processing in JSSE implementation.

+#

+# In some environments, a certain algorithm may be undesirable but it

+# cannot be disabled because of its use in legacy applications.  Legacy

+# algorithms may still be supported, but applications should not use them

+# as the security strength of legacy algorithms are usually not strong enough

+# in practice.

+#

+# During SSL/TLS security parameters negotiation, legacy algorithms will

+# not be negotiated unless there are no other candidates.

+#

+# The syntax of the legacy algorithms string is described as this Java

+# BNF-style:

+#   LegacyAlgorithms:

+#       " LegacyAlgorithm { , LegacyAlgorithm } "

+#

+#   LegacyAlgorithm:

+#       AlgorithmName (standard JSSE algorithm name)

+#

+# See the specification of security property "jdk.certpath.disabledAlgorithms"

+# for the syntax and description of the "AlgorithmName" notation.

+#

+# Per SSL/TLS specifications, cipher suites have the form:

+#       SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg

+# or

+#       TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg

+#

+# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the

+# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC

+# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest

+# algorithm for HMAC.

+#

+# The LegacyAlgorithm can be one of the following standard algorithm names:

+#     1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA

+#     2. JSSE key exchange algorithm name, e.g., RSA

+#     3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC

+#     4. JSSE message digest algorithm name, e.g., SHA

+#

+# See SSL/TLS specifications and "Java Cryptography Architecture Standard

+# Algorithm Name Documentation" for information about the algorithm names.

+#

+# Note: This property is currently used by the JDK Reference implementation.

+# It is not guaranteed to be examined and used by other implementations.

+# There is no guarantee the property will continue to exist or be of the

+# same syntax in future releases.

+#

+# Example:

+#   jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5

+#

+jdk.tls.legacyAlgorithms= \

+        K_NULL, C_NULL, M_NULL, \

+        DH_anon, ECDH_anon, \

+        RC4_128, RC4_40, DES_CBC, DES40_CBC, \

+        3DES_EDE_CBC

+

+# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)

+# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.

+#

+# In traditional SSL/TLS/DTLS connections where finite field DHE parameters

+# negotiation mechanism is not used, the server offers the client group

+# parameters, base generator g and prime modulus p, for DHE key exchange.

+# It is recommended to use dynamic group parameters.  This property defines

+# a mechanism that allows you to specify custom group parameters.

+#

+# The syntax of this property string is described as this Java BNF-style:

+#   DefaultDHEParameters:

+#       DefinedDHEParameters { , DefinedDHEParameters }

+#

+#   DefinedDHEParameters:

+#       "{" DHEPrimeModulus , DHEBaseGenerator "}"

+#

+#   DHEPrimeModulus:

+#       HexadecimalDigits

+#

+#   DHEBaseGenerator:

+#       HexadecimalDigits

+#

+#   HexadecimalDigits:

+#       HexadecimalDigit { HexadecimalDigit }

+#

+#   HexadecimalDigit: one of

+#       0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f

+#

+# Whitespace characters are ignored.

+#

+# The "DefinedDHEParameters" defines the custom group parameters, prime

+# modulus p and base generator g, for a particular size of prime modulus p.

+# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the

+# "DHEBaseGenerator" defines the hexadecimal base generator g of a group

+# parameter.  It is recommended to use safe primes for the custom group

+# parameters.

+#

+# If this property is not defined or the value is empty, the underlying JSSE

+# provider's default group parameter is used for each connection.

+#

+# If the property value does not follow the grammar, or a particular group

+# parameter is not valid, the connection will fall back and use the

+# underlying JSSE provider's default group parameter.

+#

+# Note: This property is currently used by OpenJDK's JSSE implementation. It

+# is not guaranteed to be examined and used by other implementations.

+#

+# Example:

+#   jdk.tls.server.defaultDHEParameters=

+#       { \

+#       FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \

+#       29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \

+#       EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \

+#       E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \

+#       EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \

+#       FFFFFFFF FFFFFFFF, 2}

+

+#

+# TLS key limits on symmetric cryptographic algorithms

+#

+# This security property sets limits on algorithms key usage in TLS 1.3.

+# When the amount of data encrypted exceeds the algorithm value listed below,

+# a KeyUpdate message will trigger a key change.  This is for symmetric ciphers

+# with TLS 1.3 only.

+#

+# The syntax for the property is described below:

+#   KeyLimits:

+#       " KeyLimit { , KeyLimit } "

+#

+#   WeakKeyLimit:

+#       AlgorithmName Action Length

+#

+#   AlgorithmName:

+#       A full algorithm transformation.

+#

+#   Action:

+#       KeyUpdate

+#

+#   Length:

+#       The amount of encrypted data in a session before the Action occurs

+#       This value may be an integer value in bytes, or as a power of two, 2^29.

+#

+#   KeyUpdate:

+#       The TLS 1.3 KeyUpdate handshake process begins when the Length amount

+#       is fulfilled.

+#

+# Note: This property is currently used by OpenJDK's JSSE implementation. It

+# is not guaranteed to be examined and used by other implementations.

+#

+jdk.tls.keyLimits=AES/GCM/NoPadding KeyUpdate 2^37

+

+#

+# Cryptographic Jurisdiction Policy defaults

+#

+# Import and export control rules on cryptographic software vary from

+# country to country.  By default, the JDK provides two different sets of

+# cryptographic policy files:

+#

+#     unlimited:  These policy files contain no restrictions on cryptographic

+#                 strengths or algorithms.

+#

+#     limited:    These policy files contain more restricted cryptographic

+#                 strengths, and are still available if your country or

+#                 usage requires the traditional restrictive policy.

+#

+# The JDK JCE framework uses the unlimited policy files by default.

+# However the user may explicitly choose a set either by defining the

+# "crypto.policy" Security property or by installing valid JCE policy

+# jar files into the traditional JDK installation location.  To better

+# support older JDK Update releases, the "crypto.policy" property is not

+# defined by default.  See below for more information.

+#

+# The following logic determines which policy files are used:

+#

+#         <java-home> refers to the directory where the JRE was

+#         installed and may be determined using the "java.home"

+#         System property.

+#

+# 1.  If the Security property "crypto.policy" has been defined,

+#     then the following mechanism is used:

+#

+#     The policy files are stored as jar files in subdirectories of

+# <java-home>/lib/security/policy.  Each directory contains a complete

+# set of policy files.

+#

+#     The "crypto.policy" Security property controls the directory

+#     selection, and thus the effective cryptographic policy.

+#

+# The default set of directories is:

+#

+#     limited | unlimited

+#

+# 2.  If the "crypto.policy" property is not set and the traditional

+#     US_export_policy.jar and local_policy.jar files

+#     (e.g. limited/unlimited) are found in the legacy

+#     <java-home>/lib/security directory, then the rules embedded within

+#     those jar files will be used. This helps preserve compatibility

+# for users upgrading from an older installation.

+#

+# 3.  If the jar files are not present in the legacy location

+#     and the "crypto.policy" Security property is not defined,

+#     then the JDK will use the unlimited settings (equivalent to

+#     crypto.policy=unlimited)

+#

+# Please see the JCA documentation for additional information on these

+# files and formats.

+#

+# YOU ARE ADVISED TO CONSULT YOUR EXPORT/IMPORT CONTROL COUNSEL OR ATTORNEY

+# TO DETERMINE THE EXACT REQUIREMENTS.

+#

+# Please note that the JCE for Java SE, including the JCE framework,

+# cryptographic policy files, and standard JCE providers provided with

+# the Java SE, have been reviewed and approved for export as mass market

+# encryption item by the US Bureau of Industry and Security.

+#

+# Note: This property is currently used by the JDK Reference implementation.

+# It is not guaranteed to be examined and used by other implementations.

+#

+#crypto.policy=unlimited

+

+#

+# The policy for the XML Signature secure validation mode. Validation of

+# XML Signatures that violate any of these constraints will fail.

+# The mode can be enabled or disabled by setting the property

+# "org.jcp.xml.dsig.secureValidation" to Boolean.TRUE or Boolean.FALSE with

+# the javax.xml.crypto.XMLCryptoContext.setProperty() method, or by setting

+# the system property "org.jcp.xml.dsig.secureValidation" to "true" or

+# "false". Any other value for the system property is also treated as "false".

+# If the system property is set, it supersedes the XMLCryptoContext property

+# value.

+#

+# The secure validation mode is enabled by default if you are running code with

+# a SecurityManager, otherwise it is disabled by default.

+#

+#   Policy:

+#       Constraint {"," Constraint }

+#   Constraint:

+#       AlgConstraint | MaxTransformsConstraint | MaxReferencesConstraint |

+#       ReferenceUriSchemeConstraint | KeySizeConstraint | OtherConstraint

+#   AlgConstraint

+#       "disallowAlg" Uri

+#   MaxTransformsConstraint:

+#       "maxTransforms" Integer

+#   MaxReferencesConstraint:

+#       "maxReferences" Integer

+#   ReferenceUriSchemeConstraint:

+#       "disallowReferenceUriSchemes" String { String }

+#   KeySizeConstraint:

+#       "minKeySize" KeyAlg Integer

+#   OtherConstraint:

+#       "noDuplicateIds" | "noRetrievalMethodLoops"

+#

+# For AlgConstraint, Uri is the algorithm URI String that is not allowed.

+# See the XML Signature Recommendation for more information on algorithm

+# URI Identifiers. For KeySizeConstraint, KeyAlg is the standard algorithm

+# name of the key type (ex: "RSA"). If the MaxTransformsConstraint,

+# MaxReferencesConstraint or KeySizeConstraint (for the same key type) is

+# specified more than once, only the last entry is enforced.

+#

+# Note: This property is currently used by the JDK Reference implementation. It

+# is not guaranteed to be examined and used by other implementations.

+#

+jdk.xml.dsig.secureValidationPolicy=\

+    disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\

+    disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\

+    disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\

+    disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\

+    maxTransforms 5,\

+    maxReferences 30,\

+    disallowReferenceUriSchemes file http https,\

+    minKeySize RSA 1024,\

+    minKeySize DSA 1024,\

+    minKeySize EC 224,\

+    noDuplicateIds,\

+    noRetrievalMethodLoops

+

+#

+# Deserialization system-wide filter factory

+#

+# A filter factory class name is used to configure the system-wide filter factory.

+# The filter factory selects the sun.misc.ObjectInputFilter to use for each

+# ObjectInputStream when invoked with a current and a requested filter.

+# The class must be public, must have a public zero-argument constructor, implement the

+# java.util.function.BinaryOperator<sun.misc.ObjectInputFilter> interface,

+# provide its implementation and be accessible via the application class loader.

+# See the release notes for more details.

+#

+# If the system property jdk.serialFilterFactory is also specified, it supersedes

+# the security property value defined here.

+#

+#jdk.serialFilterFactory=<classname>

+

+#

+# Serialization process-wide filter

+#

+# A filter, if configured, is used by java.io.ObjectInputStream during

+# deserialization to check the contents of the stream.

+# A filter is configured as a sequence of patterns, each pattern is either

+# matched against the name of a class in the stream or defines a limit.

+# Patterns are separated by ";" (semicolon).

+# Whitespace is significant and is considered part of the pattern.

+#

+# If the system property jdk.serialFilter is also specified on the command

+# line, it supersedes the security property value defined here.

+#

+# If a pattern includes a "=", it sets a limit.

+# If a limit appears more than once the last value is used.

+# Limits are checked before classes regardless of the order in the sequence of patterns.

+# If any of the limits are exceeded, the filter status is REJECTED.

+#

+#   maxdepth=value - the maximum depth of a graph

+#   maxrefs=value  - the maximum number of internal references

+#   maxbytes=value - the maximum number of bytes in the input stream

+#   maxarray=value - the maximum array length allowed

+#

+# Other patterns, from left to right, match the class or package name as

+# returned from Class.getName.

+# If the class is an array type, the class or package to be matched is the element type.

+# Arrays of any number of dimensions are treated the same as the element type.

+# For example, a pattern of "!example.Foo", rejects creation of any instance or

+# array of example.Foo.

+#

+# If the pattern starts with "!", the status is REJECTED if the remaining pattern

+#   is matched; otherwise the status is ALLOWED if the pattern matches.

+# If the pattern ends with ".**" it matches any class in the package and all subpackages.

+# If the pattern ends with ".*" it matches any class in the package.

+# If the pattern ends with "*", it matches any class with the pattern as a prefix.

+# If the pattern is equal to the class name, it matches.

+# Otherwise, the status is UNDECIDED.

+#

+#jdk.serialFilter=pattern;pattern

+

+#

+# RMI Registry Serial Filter

+#

+# The filter pattern uses the same format as jdk.serialFilter.

+# This filter can override the builtin filter if additional types need to be

+# allowed or rejected from the RMI Registry or to decrease limits but not

+# to increase limits.

+# If the limits (maxdepth, maxrefs, or maxbytes) are exceeded, the object is rejected.

+#

+# Each non-array type is allowed or rejected if it matches one of the patterns,

+# evaluated from left to right, and is otherwise allowed. Arrays of any

+# component type, including subarrays and arrays of primitives, are allowed.

+#

+# Array construction of any component type, including subarrays and arrays of

+# primitives, are allowed unless the length is greater than the maxarray limit.

+# The filter is applied to each array element.

+#

+# The built-in filter allows subclasses of allowed classes and

+# can approximately be represented as the pattern:

+#

+#sun.rmi.registry.registryFilter=\

+#    maxarray=1000000;\

+#    maxdepth=20;\

+#    java.lang.String;\

+#    java.lang.Number;\

+#    java.lang.reflect.Proxy;\

+#    java.rmi.Remote;\

+#    sun.rmi.server.UnicastRef;\

+#    sun.rmi.server.RMIClientSocketFactory;\

+#    sun.rmi.server.RMIServerSocketFactory;\

+#    java.rmi.activation.ActivationID;\

+#    java.rmi.server.UID

+#

+# RMI Distributed Garbage Collector (DGC) Serial Filter

+#

+# The filter pattern uses the same format as jdk.serialFilter.

+# This filter can override the builtin filter if additional types need to be

+# allowed or rejected from the RMI DGC.

+#

+# The builtin DGC filter can approximately be represented as the filter pattern:

+#

+#sun.rmi.transport.dgcFilter=\

+#    java.rmi.server.ObjID;\

+#    java.rmi.server.UID;\

+#    java.rmi.dgc.VMID;\

+#    java.rmi.dgc.Lease;\

+#    maxdepth=5;maxarray=10000

+

+# CORBA ORBIorTypeCheckRegistryFilter

+# Type check enhancement for ORB::string_to_object processing

+#

+# An IOR type check filter, if configured, is used by an ORB during

+# an ORB::string_to_object invocation to check the veracity of the type encoded

+# in the ior string.

+#

+# The filter pattern consists of a semi-colon separated list of class names.

+# The configured list contains the binary class names of the IDL interface types

+# corresponding to the IDL stub class to be instantiated.

+# As such, a filter specifies a list of IDL stub classes that will be

+# allowed by an ORB when an ORB::string_to_object is invoked.

+# It is used to specify a white list configuration of acceptable

+# IDL stub types which may be contained in a stringified IOR

+# parameter passed as input to an ORB::string_to_object method.

+#

+# Note: This property is currently used by the JDK Reference implementation.

+# It is not guaranteed to be examined and used by other implementations.

+#

+#com.sun.CORBA.ORBIorTypeCheckRegistryFilter=binary_class_name;binary_class_name

+

+#

+# JCEKS Encrypted Key Serial Filter

+#

+# This filter, if configured, is used by the JCEKS KeyStore during the

+# deserialization of the encrypted Key object stored inside a key entry.

+# If not configured or the filter result is UNDECIDED (i.e. none of the patterns

+# matches), the filter configured by jdk.serialFilter will be consulted.

+#

+# If the system property jceks.key.serialFilter is also specified, it supersedes

+# the security property value defined here.

+#

+# The filter pattern uses the same format as jdk.serialFilter. The default

+# pattern allows java.lang.Enum, java.security.KeyRep, java.security.KeyRep$Type,

+# and javax.crypto.spec.SecretKeySpec and rejects all the others.

+jceks.key.serialFilter = java.lang.Enum;java.security.KeyRep;\

+  java.security.KeyRep$Type;javax.crypto.spec.SecretKeySpec;!*

+

+#

+# Disabled mechanisms for the Simple Authentication and Security Layer (SASL)

+#

+# Disabled mechanisms will not be negotiated by both SASL clients and servers.

+# These mechanisms will be ignored if they are specified in the "mechanisms"

+# argument of "Sasl.createSaslClient" or the "mechanism" argument of

+# "Sasl.createSaslServer".

+#

+# The value of this property is a comma-separated list of SASL mechanisms.

+# The mechanisms are case-sensitive. Whitespaces around the commas are ignored.

+#

+# Note: This property is currently used by the JDK Reference implementation.

+# It is not guaranteed to be examined and used by other implementations.

+#

+# Example:

+#   jdk.sasl.disabledMechanisms=PLAIN, CRAM-MD5, DIGEST-MD5

+jdk.sasl.disabledMechanisms=

+

+#

+# Policies for distrusting Certificate Authorities (CAs).

+#

+# This is a comma separated value of one or more case-sensitive strings, each

+# of which represents a policy for determining if a CA should be distrusted.

+# The supported values are:

+#

+#   SYMANTEC_TLS : Distrust TLS Server certificates anchored by a Symantec

+#   root CA and issued after April 16, 2019 unless issued by one of the

+#   following subordinate CAs which have a later distrust date:

+#     1. Apple IST CA 2 - G1, SHA-256 fingerprint:

+#        AC2B922ECFD5E01711772FEA8ED372DE9D1E2245FCE3F57A9CDBEC77296A424B

+#        Distrust after December 31, 2019.

+#     2. Apple IST CA 8 - G1, SHA-256 fingerprint:

+#        A4FE7C7F15155F3F0AEF7AAA83CF6E06DEB97CA3F909DF920AC1490882D488ED

+#        Distrust after December 31, 2019.

+#

+# Leading and trailing whitespace surrounding each value are ignored.

+# Unknown values are ignored. If the property is commented out or set to the

+# empty String, no policies are enforced.

+#

+# Note: This property is currently used by the JDK Reference implementation.

+# It is not guaranteed to be supported by other SE implementations. Also, this

+# property does not override other security properties which can restrict

+# certificates such as jdk.tls.disabledAlgorithms or

+# jdk.certpath.disabledAlgorithms; those restrictions are still enforced even

+# if this property is not enabled.

+#

+jdk.security.caDistrustPolicies=SYMANTEC_TLS

+

+#

+# Policies for the proxy_impersonator Kerberos ccache configuration entry

+#

+# The proxy_impersonator ccache configuration entry indicates that the ccache

+# is a synthetic delegated credential for use with S4U2Proxy by an intermediate

+# server. The ccache file should also contain the TGT of this server and

+# an evidence ticket from the default principal of the ccache to this server.

+#

+# This security property determines how Java uses this configuration entry.

+# There are 3 possible values:

+#

+#  no-impersonate     - Ignore this configuration entry, and always act as

+#                       the owner of the TGT (if it exists).

+#

+#  try-impersonate    - Try impersonation when this configuration entry exists.

+#                       If no matching TGT or evidence ticket is found,

+#                       fallback to no-impersonate.

+#

+#  always-impersonate - Always impersonate when this configuration entry exists.

+#                       If no matching TGT or evidence ticket is found,

+#                       no initial credential is read from the ccache.

+#

+# The default value is "always-impersonate".

+#

+# If a system property of the same name is also specified, it supersedes the

+# security property value defined here.

+#

+#jdk.security.krb5.default.initiate.credential=always-impersonate

+

+#

+# JNDI Object Factories Filter

+#

+# This filter is used by the JNDI runtime to control the set of object factory classes

+# which will be allowed to instantiate objects from object references returned by

+# naming/directory systems. The factory class named by the reference instance will be

+# matched against this filter. The filter property supports pattern-based filter syntax

+# with the same format as jdk.serialFilter.

+#

+# Each pattern is matched against the factory class name to allow or disallow it's

+# instantiation. The access to a factory class is allowed unless the filter returns

+# REJECTED.

+#

+# Note: This property is currently used by the JDK Reference implementation.

+# It is not guaranteed to be examined and used by other implementations.

+#

+# If the system property jdk.jndi.object.factoriesFilter is also specified, it supersedes

+# the security property value defined here. The default value of the property is "*".

+#

+# The default pattern value allows any object factory class specified by the reference

+# instance to recreate the referenced object.

+#jdk.jndi.object.factoriesFilter=*

+

+#

+# The default Character set name (java.nio.charset.Charset.forName())

+# for converting TLS ALPN values between byte arrays and Strings.

+# Prior versions of the JDK may use UTF-8 as the default charset. If

+# you experience interoperability issues, setting this property to UTF-8

+# may help.

+#

+# jdk.tls.alpnCharset=UTF-8

+jdk.tls.alpnCharset=ISO_8859_1

+

+#

+# PKCS12 KeyStore properties

+#

+# The following properties, if configured, are used by the PKCS12 KeyStore

+# implementation during the creation of a new keystore. Several of the

+# properties may also be used when modifying an existing keystore. The

+# properties can be overridden by a KeyStore API that specifies its own

+# algorithms and parameters.

+#

+# If an existing PKCS12 keystore is loaded and then stored, the algorithm and

+# parameter used to generate the existing Mac will be reused. If the existing

+# keystore does not have a Mac, no Mac will be created while storing. If there

+# is at least one certificate in the existing keystore, the algorithm and

+# parameters used to encrypt the last certificate in the existing keystore will

+# be reused to encrypt all certificates while storing. If the last certificate

+# in the existing keystore is not encrypted, all certificates will be stored

+# unencrypted. If there is no certificate in the existing keystore, any newly

+# added certificate will be encrypted (or stored unencrypted if algorithm

+# value is "NONE") using the "keystore.pkcs12.certProtectionAlgorithm" and

+# "keystore.pkcs12.certPbeIterationCount" values defined here. Existing private

+# and secret key(s) are not changed. Newly set private and secret key(s) will

+# be encrypted using the "keystore.pkcs12.keyProtectionAlgorithm" and

+# "keystore.pkcs12.keyPbeIterationCount" values defined here.

+#

+# In order to apply new algorithms and parameters to all entries in an

+# existing keystore, one can create a new keystore and add entries in the

+# existing keystore into the new keystore. This can be achieved by calling the

+# "keytool -importkeystore" command.

+#

+# If a system property of the same name is also specified, it supersedes the

+# security property value defined here.

+#

+# If the property is set to an illegal value,

+# an iteration count that is not a positive integer, or an unknown algorithm

+# name, an exception will be thrown when the property is used.

+# If the property is not set or empty, a default value will be used.

+#

+# Note: These properties are currently used by the JDK Reference implementation.

+# They are not guaranteed to be examined and used by other implementations.

+

+# The algorithm used to encrypt a certificate. This can be any non-Hmac PBE

+# algorithm defined in the Cipher section of the Java Security Standard

+# Algorithm Names Specification. When set to "NONE", the certificate

+# is not encrypted. The default value is "PBEWithHmacSHA256AndAES_256".

+#keystore.pkcs12.certProtectionAlgorithm = PBEWithHmacSHA256AndAES_256

+

+# The iteration count used by the PBE algorithm when encrypting a certificate.

+# This value must be a positive integer. The default value is 10000.

+#keystore.pkcs12.certPbeIterationCount = 10000

+

+# The algorithm used to encrypt a private key or secret key. This can be

+# any non-Hmac PBE algorithm defined in the Cipher section of the Java

+# Security Standard Algorithm Names Specification. The value must not be "NONE".

+# The default value is "PBEWithHmacSHA256AndAES_256".

+#keystore.pkcs12.keyProtectionAlgorithm = PBEWithHmacSHA256AndAES_256

+

+# The iteration count used by the PBE algorithm when encrypting a private key

+# or a secret key. This value must be a positive integer. The default value

+# is 10000.

+#keystore.pkcs12.keyPbeIterationCount = 10000

+

+# The algorithm used to calculate the optional MacData at the end of a PKCS12

+# file. This can be any HmacPBE algorithm defined in the Mac section of the

+# Java Security Standard Algorithm Names Specification. When set to "NONE",

+# no Mac is generated. The default value is "HmacPBESHA256".

+#keystore.pkcs12.macAlgorithm = HmacPBESHA256

+

+# The iteration count used by the MacData algorithm. This value must be a

+# positive integer. The default value is 10000.

+#keystore.pkcs12.macIterationCount = 10000

blob - /dev/null
blob + bccafdeaab7bc484542f3ffb1b297c8064be2291 (mode 644)
Binary files /dev/null and uploads/Ircnow/irc-network-map.png differ
blob - /dev/null
blob + 751e5003364f8d5342b1bed63006c9cca36b0227 (mode 644)
Binary files /dev/null and uploads/Ircnow/ircnow-wants-you.png differ
blob - /dev/null
blob + 0e4112819fd36509efaaae0f94155c9276efea21 (mode 644)
Binary files /dev/null and uploads/Ircnow/libreplanet2022.pdf differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 32935c718c48b62720ab781ca6f491778a184f95 (mode 644)
Binary files /dev/null and uploads/Ircnow/plan9-desktop.png differ
blob - /dev/null
blob + 5c7cbfdeadb1670986a768741af407763eb87227 (mode 644)
Binary files /dev/null and uploads/Ircnow/rosie-1.png differ
blob - /dev/null
blob + a1ff42e7d00407737dfcaeaf7ff20455df7a27f9 (mode 644)
Binary files /dev/null and uploads/Ircweb/ircweb-brutalist.png differ
blob - /dev/null
blob + 4bca8bddd64601f911a460c0aff2d3a805811e42 (mode 644)
Binary files /dev/null and uploads/Jrmu/aaronlin.png differ
blob - /dev/null
blob + 4ce215c9a619be833a184d633f7df3378a94beee (mode 644)
Binary files /dev/null and uploads/Jrmu/awake.jpg differ
blob - /dev/null
blob + 5f148993a671fc445541ae6e1756572bc2a6aa58 (mode 644)
Binary files /dev/null and uploads/Jrmu/fishlinux.jpg differ
blob - /dev/null
blob + a581a9432389582de262030b54f2329c2dfb55b8 (mode 644)
--- /dev/null
+++ uploads/Jrmu/jrmu.pub.txt
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGZNbQ0BEAC4cwjZoL/V3p+FX2RbV6pTf6jogN7vMuZTId3gvCOAPp1R/Zku
+SBJJbAyzNi1iWvK6bEg/h0Z37wmeHuOSWkVtmcb55x4Kp5b85hzl1Gl0xackJYYl
+QRXgzpy60QRTdQEkfaSUiHB/RulN/iWpF5lzgLGsT0C5DPVUE0d7fDBQj1RNdP8v
+3hyd916pdVDVL9tQB0GUPgOOO6a/a65uvBRUdZspMudsOGGsqaJH2gVDJVJ1+XBG
+1QbChH6cL3SOVPXOjWUlEJA5Ifpqck5lLyKJDDPkkR4aKHijbNEYDAl9bWbJMPVh
+N8btDitltSy8DkPQATl7GWMtaBWq9nWfX+vnT0d/ZNJk546+FAAfJ42udnSx8F0R
+FgINkD62mWJrMfCEVHcV10uJYwIbc69gwUal+YiLBHsOxYks0LD0uZ4LizO4enqk
+xiF5DJaCoWR6uyQc2eQsuY2ncYCUSQvBATIzrAp2tt0FXj2H6J1vTK1YD1XnlLhK
+gNSRB+U5zyf9A/UDxLjIWtfu9w03Gz//WY2ivEl7Bj8AzMeRMACSy4xX+leRdOX+
+WaT9qh4DS8uIm3X59ab+a6vKnXnEqC9qrDLNBGLMSAxS8g/mti2vc+dmx/sQNZPc
+LUlCM1IL5ZjuuXh+LetcfWZbD35m56gjDpTTGHqrb5gfZsEnn0H+gNjPOwARAQAB
+tBtBYXJvbiBMaW4gPGpybXVAaXJjbm93Lm9yZz6JAlcEEwEIAEEWIQSQ5uouqXxc
++EsBz7LpRTs8MqiDAQUCZk1tDQIbAwUJBaOagAULCQgHAgIiAgYVCgkICwIEFgID
+AQIeBwIXgAAKCRDpRTs8MqiDAUn2D/wKCCP1ZvKsnXsuNG/MYxoawNnQ3ByziSRO
+NAWgWUsq6lDHKgjKoWIPBNw1rjZCXIVhFRgpWuoDcLFzda35SeBOaBt78CHbR6tJ
++Q5vq7sRbXmssDxofnVlxVRgahaHeqyH+cQ+eeuNw45B9a03091lOmxCsoM/Ir1K
+42Vz82TaYRbTZl3c34GZdmRwRCD+VZc81Itff+B8k+Lphm1BmGSqAO20DPpOqDNi
+T2ytt/B6soEirHsMJeggoarwcJa1BjW2tFCINHBkPTOPBCZhIFhhYPUhL/3eXqJL
+9o3IKzpN6vY44dcav6HmCTZQ1AynLx+uLK3DtkH8i2xK5XUa5h3bIsbszC1zDwIt
+CL95KlWzhZL5kqKVgAYnNaRHsPm6baE9dJ48EYVwY/lrWeTm99fjC3EZC95+IJKQ
+xxMi6frjvs1KD21KDiEwppjw4w0lhTpAN5IuAkmUhR2oiePZBoYD+/YcU5sLLHqX
+Jv9MZ5v97opJV6febNmsrXT1JgPFr9qne3GNgNiGgl1tTQj8NO8fprbWM26AR+E1
+yOzSnXjCedCD1TNftIHHd+k8x67Tdzu3P1KJ4hqEfB8h7pIwKFNWCCM2knfEPoq5
+3aUTwuIUox2WwqaF2YFkHqcx8aB0J3fZnr2oLb4G2Ybu1hVFcr+bMdFSB9jPb5TE
+OPlhuQAkQrkCDQRmTW0NARAAzOP4x0xJRj3pIaNCcTY9O084XiLX1TFY+w7drJVf
+gFIquBocLcOxjIVGsNGVnR0MIf6nTXogBdgIADfO8un9KpSuco3T54vrJhnMLfnq
+qDwaMCKgudZd8af+4p/MNQ/Hbq0tk1VEQkVVWhME9D/B3YniifaBGlCGRVD0d8Bi
+TfsBRlUy+6mwh348tp3c3Jr/RurAWA89RXh7E2/RuizuV7PJBwSa2BsA+TehyCNY
+hnwwr/gQW9qceAnXC4kR6jT//DHXJugFr2W47Xcfh7ZQZfKAWXE9xnOTRUT/hYYh
+COvX0soYDzZkYw+rAVrudA+bQHbxrJP5SBlX43liaQ19rZFZvE9lDHMBwOVnrNU9
+BkYjOzJDVb+kaFUESxMB6qiQuDEv8L5V+7Ovf1gRs6Ma4OmnJbmM5hXSLjECatsl
+TjxYZoix96/gCN7XFJfs4wgt+dyvujT/dM9KnVnjFvWRLNu3mIw3mzCx0RmKAvgw
+Jou8sjDfsa8bZk5TdGAZXu/pNUF6gEBmP834BKLbmONqS4xt1GWxskm6ZL6Ehpqh
+59iMmXw9dS5J84B65iO9EgHheZn73keM2ASkFR8CLVKcafvKtokHqOhLeTqM7bwK
+8i/BC9Q4FXCfC4sBM3XlVLMQDl8qeQroOKUr1J161hShnz/7QBlaC6DeZsHlW5E7
+hVEAEQEAAYkCPAQYAQgAJhYhBJDm6i6pfFz4SwHPsulFOzwyqIMBBQJmTW0NAhsM
+BQkFo5qAAAoJEOlFOzwyqIMBwjAP/A1b802/ijmzpFMi0FavvD5x+904q4XbVriR
+eCQ+XK7jkMMd+i/aiE3vap7GBcEzzqY98A4b3ATOuV4LR+16Gy7Otm2GNWSIFdA4
+4w7nTatx8rzry1rQJjzRU4q+Zw7cPl9bsvykmFBpjzmW54GbQfQIpHP+J8LZPxy/
+I5zI0/YvD8CnI1Yv9PwkefsNcVL2FyoWLDr6gwgV8tn3nJPUhSdrq44QggPO4kWo
+yayslGZB4a/Ou8E+P8I0OmGBojNxhRZ7v/JZRqZU5xiXIbD62oZ5V3rb4Nb+sy6o
+xNZo78lYEr8R5d3zLj/RpjHLlKG9a+58wVU4xSGkMfJyVle9+ikUyaPkx9fnFZne
+9+j2fat3tnNBYndSdyiIb/qf0rFwDZ2Ev71dzLS8Sj7MBlUcBzLI5i//poQM58Mc
+h2oEmjfrgjDco9Ina1zzukdhwoq0/hMUkr8pKeRP1TwPjM8C1347j1j1IbBdxNST
+hxg+/ZJjyVwbzumMV4TRYo0Cqm55zIRUGOHsIE13SolMPkM2v1P1kB3T2b7WUSBW
+YIcrRFE34hkSWxQZFlNr66G9D2HeGPi5Xyc5vTibk4qx5FUYs5HuwEDPYyeJ3eZt
+UCBu+8os8QvuMgs/pz3fNAuK0N+PrlqPAt/FfGD61lpyfdAp2oxDoWogaRBZVZxE
+f08vvAyI
+=b7ra
+-----END PGP PUBLIC KEY BLOCK-----
blob - /dev/null
blob + 02910e4e2af8202bbf2726a09aa910bc8715327d (mode 644)
--- /dev/null
+++ uploads/Jrmu/jrmu.pub.txt,1672950324
@@ -0,0 +1,78 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBF/vWpoBEADEkbe0MwWiXiniXLTLaAUZ2AbRPD07S5BAhAthrwej54zZROUw
+zWSpcKa0+T6U5gILi+nDev+ID1kcLWM3YoQFcY8LAfaFWKsI25qlKPi/sNDHE0p/
+QgyMIh/g5CHFLE1B1AXFyPcxL+jCG6VGwDkPOrzhayJnwJafnosxjtCV70k/AVen
+MjpZfllniF0LCLSrcCx7503ck3AIU76AtbsDaz60SBSA81jczuXQs1FF762OVIW/
+2Ov4wjm2CgXWD46bSGMbzgx6xjcuMTpCIE8t+2Vxu1+3VasjoTRreSFHpVUtnJnR
+i3KvTRCOk6aiwKnVhlFba961/v8yoVh8kFl1s6Y+xp+V44rxewJxtesUDjwqIz8X
+CGZxq8zv+zUWlLyoLH0uJNnZ2ObprG/WQjfrDZDl/M+5nQBTJI38yPsdGF6GiYS4
+aJ8qrT/aEEVwUSIHIRBz0X8md+iUoAsmji/AyRo5LNYFEksCKDjKo9QcMby8ML3D
+jNvbOp+q9JXUdU+10q5EtoV1+E5kjTVU4szqVs3sC4aPbEgXIlHDLoiZpxrIeFJF
+TCDEitvSFzCVbvvn8a194LwozNMvLdB7heXpQf7uHrbMXuS1lsgSdmk84m/S+GIy
+F8FsDaCEIjC89Irq7W0NEGk0puX8TMK+D46862gcO1V0ZqLdu6s4x/baOQARAQAB
+tDZqcm11QGlyY25vdy5vcmcgKGh0dHBzOi8vaXJjbm93Lm9yZykgPGpybXVAaXJj
+bm93Lm9yZz6JAj4EEwECACgFAl/vWpoCGwMFCQPCZwAGCwkIBwMCBhUIAgkKCwQW
+AgMBAh4BAheAAAoJEEpW2y2/jcGG7ScP+gL6ompLwMRGAQ+uo0GiHaR7opKZTVpU
+ywbB0leoq6Qim8vW6QW6RDzbQ5rP03TnyF5FJIhZx7OS6GwE6dUD24na/uk6S9Ip
+FyAkNlWMQfbyT6zW6UQJVVsQ7Pg59nP0XjqSJhCgND8Te/JTeTwqeMOjged0mHE2
+0dYuNXsIQFXmtaZ0oUNkPkVm3Gl7JExFyahrn9EfvkaYfMlB1XPCkwB6cnnYHIhJ
+z42u8xSCQiR25hq0Mp+u6mIteMt2fIB1O8V+7GXR/AOuPfrE1UFsV+7pEy8kykil
+EeVmhLainBZD13BmMAJiD6tYLKoRx2r4UY4UJukUa46tH0xR3J+jXj2y6Ncx/8bv
+pV7qf5KgtdCM8SkL9MUXTxvdWq1mj2unSJ1i7nNxEujpCfAI6be0k6lxt8fzBG87
+e4ADMCJsFpgmF8YKPRKQZf6zigFmElg5lKUw/jPJJww/L26Bkk/7MnB7bpnxU2/K
+TX5AGZ6ic5LSAnyTg45dzQdCebHiyo8OzD3gQm8kly4g7NeUZkC6/+QeVeJKFXkP
+sw7VNHZmOoaLswQU95hER878DXLALLo+JwBXiE8I+x3ryZcCIgvsNduzpEFR32iK
+BE8p2mhZ8xQdA6d3/uqiVz3DZYhca+pADEUnukL1EaolP+HxFms5Pv/Rv6wc+llr
+RvNfLJnvhSl8tDxzdXBwb3J0QGlyY25vdy5vcmcgKGh0dHBzOi8vaXJjbm93Lm9y
+ZykgPHN1cHBvcnRAaXJjbm93Lm9yZz6JAj4EEwECACgFAmAvNvgCGwMFCQPCZwAG
+CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEEpW2y2/jcGGQFsQAL3RcMW+7CTO
+Z/ANrBKdpkkADNQzsEltnpAsLGfHsLS0kmxmzAIumxg+87i4uHApV/RMu2gSdv7J
+hJDxICnpp8lHcppsSx7s7SeBXgJytGzHjPZ7uETw/ngTed/do5RGfYYXky6AvMTj
+ew0dskxxTkhxtzluZLnOjbUdMRUsWAXrIijCZ+dHYFfGlibXF15BkNmH/lZybk63
+0GsQTGlDGyVg2znbcg6Q+WCCyNi1yn02MgppnZTztL2nKtr8vk74VVOYENTOiA+o
+pUfLr/ekT43zM+5HXDeLuzH8jPQ6hnOLpr6pkPw9tg09g0G6bmgT2eyq0QoIkKrq
+GAUGlT+vrSTCnJPX86gbB1YwYAioPyNFbJR4jdN9EIqWavGEmMODTDTVKKVr2gEn
+17U4/2yOMrlPKNXBEEQNWIfb3aNOStA7y95CNLDmgZnH6AFFYyQgLnaFa+ON3sQ9
+Cs01GlAfIA0UHdYcNS7Rd+mTAvc1SZ1VL/oFfFWGMrB71q4pnr/edQGxWWJyYS3P
+b68BLvEXbECDlAj2l0Y1jg9XpNC8pr4pZlybjLwB19JWNyFaJT++ByqKzasgPmuW
+j+EGKGkZ5tgHBoCZY00XUStcORKOfbSkCrrO9vhLHHoMO3LXMWABKCHDjtd60qlK
+YJlV/ejYrWZxNlJzGcjTbC+Cteyj5QbHtDhhZG1pbkBpcmNub3cub3JnIChodHRw
+czovL2lyY25vdy5vcmcpIDxhZG1pbkBpcmNub3cub3JnPokCPgQTAQIAKAUCYC83
+GAIbAwUJA8JnAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQSlbbLb+NwYZy
+EBAAs9cCEtqaE/Q/DFHieyWl+PkzywYuPPcVSILPzZqCtVW0XCdwGvKO2FQvdyYy
+14g/itszVZmg/++Lok99n02Uo1tlrAsFpdhep91fjNukbrVCbAflU/sfeN9EIYPx
+RmMBeQLkOK4YbnxNJuyNh68D5SsscjS+0wZKBtwGQj9br/HZmiPXUFuZ5L6XSQ1V
+Ythhm6Jx8Q+8vjWvsJXzN0fwuv1tCZt9U1B2RARep4TULSMB1lR1HMjz6CV2ygf5
+vS79+0cDc6wIWszpQt4/G6RCd8jxBOj44j6k8zpSn990sYKmD7iPZrI+3+ly9nxt
+IThqjB9jr7jkFSQT0ELJwp/bpmKrE0YYSJ5Td/EbE5tY2Ql2qmAs6A5PuUq+77cH
+W5z2ljJ+Rx9+M2fWbCKyDMaIliG/hD5ytkoc8eq64JwHFTcZ2uneVoux2MVuFW9S
+TwiiLCaDwsVqKZzTcSnXPwIAe4sVymPGF1MMKgApr2SNrzTm5yf3SLowzX4lTl92
+hbvuF7BkPDT6RNWhXcpB90oIYB1aFHTQmsZG6F3UcVK9DM7gq06+de9x01TcueOc
++55N5XK1HDA9jjQ4wDMzTqrtCP7pAlts5cQ0HabX8VaGiFQk4rNlHHdZQ2T6PHzW
+WLNEzc1mkzlH+9Mb9v0GiD3NlhUived7cB/w7ULtTfO7D7O5Ag0EX+9amgEQALuG
+4vKxj7aUCDLvoA2o7xzWaTOPnObSh1ORvyDkhII0niofuAQniScqT5UMAHBeUNtO
+tGMy8mMvGf7zx7Z+BcPIavcxBlEqfvvre9v8clKm4NFoyTTk/clB+BtVhhBsLqcV
+Liv/0e0EBtBd/7jz32OGLiz/gxwRkRmjavT2TpLBt7jox5otUIjEtD4JISWf9bGT
+TbFY4i8/5EZaEBqSPG90K1GQ/SiG1D1paG4HodS9Vpah07pY/P3nqGovBg/lpJHJ
+53MgscNlwfAnpMupxEEF+dABPtmVcQOFzVE9npP93p9RKLwYVI9vigr4OZT7uVLA
+YeMmBqx93hRZRy9lsndveD2eE8oM9bLzC50cS0ntjIhtL6Rj6fmg4/cielmT2nxK
+8VUxRjg8BMxCSvblCZsUiastQesTk+tzsZTMBR8Z5TmNtfA7iEdV9aBG0aX5GaeS
+0NXS6k9Wtb0hmU3tV4Tudab+fZmoHBk9adLcI4LbKtut5zS9LBXvouvBHHZ7qotd
+/f7+hA+jg2E2fVOi29A+vJK4oC9DHTI0J1d6ZK9RUZMljU8mrzWicOMb9/FA5wd0
+RDGuijJcEVhtMOKTRp0huJhLA0uv/kbOW6CqundIcadymUKIGi/5JhY+QsznxO1u
+iXAJyZB38dEway66sOfhHdfFaXhYBzfhaEKCmfJTABEBAAGJAiUEGAECAA8FAl/v
+WpoCGwwFCQPCZwAACgkQSlbbLb+NwYauxQ//V2ObMHjHV9wXrFH9awyH06QAhN0O
+9xMp8ConCZUQc6Dw3HxJfLcippSO/Hh309Q5WX9LHcpGwRX9C8UYV1k1087lO0Mc
+RJ2RnUOiIuxz1YkwAHMkLETKIIK2VVoXKfOpNGCaZCcL75k0sT+kTHD/pN7vFsX+
+/xmFfmKNHbejTfKh2rGJGeEdVKM5DvvDpQ3VFyVt9j1Ujyn0jZZAkWD0vO1wj1GY
+BGrcDJ7jWkHJhu50Ine+ddpfAFN0Uy+lXM/zHT1r5wEnoC6+KucrKo5KcY9jcQkz
+dIvzcEOuEp4w+nvAPXvipYw03q76uo6NEU3U89a5sAnYtU582K/32CqERPi2hqtJ
+1tMj/uPju1QESmN6LFwUumvX+XncXvNcrUdy59V2MBCXA3+Jo7mwypBZTTD4+e+F
+uoG9W3ZI1OOZ+mi1SBJc516AE+UjtYDAsOnYxgPsMdk+WaBGAGXsntRZePBCkenq
+/ar/S5nT2S+zhFtU9w19B0H/WRwJaH/h7dCyqBNHYbaSZxohbPZkhs9O4pjN+0ML
+1sdUAJUwCUTn8w/v1H5XbA9DgGexZwkG4Ikt6P+OJBg9Y5cMsFdtY/O4MyrrsMj+
+MoPd8DkHAG/BQtlOwGrWOZKy1RX074YM0cbmN8wRDtj/6kp9zDjtZ3wgmwUyF637
+DSXQ67Ys3O17e/8=
+=4jV3
+-----END PGP PUBLIC KEY BLOCK-----
blob - /dev/null
blob + c52ee9d66f63f1fafdcc588ca882c530eabafbf7 (mode 644)
--- /dev/null
+++ uploads/Jrmu/jrmu.pub.txt,1672972064
@@ -0,0 +1,80 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBF/vWpoBEADEkbe0MwWiXiniXLTLaAUZ2AbRPD07S5BAhAthrwej54zZROUw
+zWSpcKa0+T6U5gILi+nDev+ID1kcLWM3YoQFcY8LAfaFWKsI25qlKPi/sNDHE0p/
+QgyMIh/g5CHFLE1B1AXFyPcxL+jCG6VGwDkPOrzhayJnwJafnosxjtCV70k/AVen
+MjpZfllniF0LCLSrcCx7503ck3AIU76AtbsDaz60SBSA81jczuXQs1FF762OVIW/
+2Ov4wjm2CgXWD46bSGMbzgx6xjcuMTpCIE8t+2Vxu1+3VasjoTRreSFHpVUtnJnR
+i3KvTRCOk6aiwKnVhlFba961/v8yoVh8kFl1s6Y+xp+V44rxewJxtesUDjwqIz8X
+CGZxq8zv+zUWlLyoLH0uJNnZ2ObprG/WQjfrDZDl/M+5nQBTJI38yPsdGF6GiYS4
+aJ8qrT/aEEVwUSIHIRBz0X8md+iUoAsmji/AyRo5LNYFEksCKDjKo9QcMby8ML3D
+jNvbOp+q9JXUdU+10q5EtoV1+E5kjTVU4szqVs3sC4aPbEgXIlHDLoiZpxrIeFJF
+TCDEitvSFzCVbvvn8a194LwozNMvLdB7heXpQf7uHrbMXuS1lsgSdmk84m/S+GIy
+F8FsDaCEIjC89Irq7W0NEGk0puX8TMK+D46862gcO1V0ZqLdu6s4x/baOQARAQAB
+tDhhZG1pbkBpcmNub3cub3JnIChodHRwczovL2lyY25vdy5vcmcpIDxhZG1pbkBp
+cmNub3cub3JnPokCVQQTAQgAPwIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AW
+IQRDzC5mk7YBGl5vP5ZKVtstv43BhgUCY7cX5QUJBajwywAKCRBKVtstv43Bhj5d
+EACaTrsWYth2peotdgdcbrZpcuib/O1WT8AK0HrxhTg4MnNY1nrSCI9USSzl+3iA
++bRNS1mYyRCTNPXlm0+EmCsXv0dDJ5g3Cjp8GCsxCj2HG/3RBxKAL7o4E7LkLjrd
+OXutC1DyOrzLrh8MXgLoF9g9y0CO1Q92hDkE4TrCRAnoSNEyyhLnSHpI0SoGYsT+
+GsfFfPiYpEw1zo3uRJmcmisMgbTntUNXPKeVkVf/b6Dc/SsMciGoovVJdqqSkoHB
+NEwtzje/QlgvTHLTif00D1QrkOs7v6sGVlh8IO9uUVD/bVYL6Tj7cxN4ReUX6UlX
+axD7QDRN8vfMf12Jb45Nmfmy8rcAQwEUcM0kvLq6iy7v8ZjnlLGYAZFpXE6rhSbY
+MaR0+TEwGwR92IkS0vVgerulAyAUtRLQnI5iJIEsnJiH7f+4I/PxTmMQaBLvkv3Q
+XMkJEXfOq3MaIhIAR3wZFMmixfbw4dzs+uMu6AG3m6iw7+fRbyHOh+ngr27JrBSH
+FIG3gGrnCoG2nX+IlYXm2VUaidL3VN89l5LJPQz+yASAiS5V0OOtThnQLpvJymzi
+ZDFjzzaM9nsPuGsmBqaeysVh1EMTM0ltfwOQZCu60HYYHFclw0c4Fyawyp2C66ku
+iqHC4Lwxa00UuJT6KvQ7HIY2+mNsNb1SPPy0eMYzPBqi/7Q2anJtdUBpcmNub3cu
+b3JnIChodHRwczovL2lyY25vdy5vcmcpIDxqcm11QGlyY25vdy5vcmc+iQJVBBMB
+CAA/AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgBYhBEPMLmaTtgEaXm8/lkpW
+2y2/jcGGBQJjtxflBQkFqPDLAAoJEEpW2y2/jcGGm+oP/ilJDiasBhPLjguBhBvu
+sJCLsWhJrB8Jaa/yW2+trGiuLyBHqV2flrkboRmnz5oTQFsEgt4mkyBMflh9GgVI
+TQ+pl6EbewfKI4whlujYi9kCHEP8PFazrw8DPZ9866CVjr0L4Or492R293TD0yJD
+ROsSxaxy2JftJ1ZGpXkOwvJC9s0kri+7B0HWGYwItK7g96m5U0IqCY22Fwc7MzEr
+tB9upEEDUV4b1AkmVSJ2XO3iZp3Kttk1/5IVevGJGRvbtTGLaijvCq1INIT1tSju
+O4MzjkvjED/Y7sRt/sBrOOC1CAdCB1uqwNKQnPssuEDUpbYRDd8qlBdKPamzGnhH
+t8pumiyuGvQMICRwVV9IJ1VCtr0hSH+uwpbMqVQQPxV32HpHD5tunV/xFMxLwCaA
+mOtg5QeBi8FfieNc2LBGwTCMJzrv+/Xc1Ufdz3OcK7sMrgSqE+6o6jrtoOqevyPY
+2r63AXEf9l28onGYAcSZskvWSEtF/PrNErKbklfLcfJ92P2ehY5mEWuj/d7FC0lB
+JXCshy5h4mWwqrXps22xJPLc4uVDYE1ANV46EIU88WHUavWteaGWlPmBmryMqFXM
+cwgKQLeis/RDQ2BRCEZCti4RiF1gSH0uAQ5sVsUhJ8QjSDbtYXP9fHAY0J0LsOrm
+TOGbX1G3yzs+teYPu6FLZ9E2tDxzdXBwb3J0QGlyY25vdy5vcmcgKGh0dHBzOi8v
+aXJjbm93Lm9yZykgPHN1cHBvcnRAaXJjbm93Lm9yZz6JAlUEEwEIAD8CGwMGCwkI
+BwMCBhUIAgkKCwQWAgMBAh4BAheAFiEEQ8wuZpO2ARpebz+WSlbbLb+NwYYFAmO3
+F+UFCQWo8MsACgkQSlbbLb+NwYZWpg//d7hN/A0D8I6fdu0wYd2wegKO/oZmWWTc
+GfOrhVaon8F4tEdiFKhyip7FEiePb6dSIq1Q1cQiU5wsgj+fmeXvjvAmitziQb2t
+6OrD7ZrC3qtEWFfycL8xUEZM94Y9Na42KXyhR5GiTA9eHOsbLMwfGQlwFLQdY5oJ
+MD1JqW1T40F5shg2EgG8BuAJE0lPQmH7GnXQlWeh5g92P6rH0/sK8eOeT+xOidmb
+ZA9P6zGLfeys1c/8W4/NEyhwYZjBOAwCroJgFxz7zOcU/t7wWxhM+O4AXlPUUSdY
+vEZi41v16mgtuTk77qWPOdPw2aGLUotfx69yfsV9XRkj/MR9uollgVqipu+dNuQL
+J7bf0VBBy0VZ8eRMeVaM00myFuzaNYODvjsyrQVify5kLf7OaMTpqzI0UGjDrmyT
+yq5lDWx+XdGnYmGndZBKEyzHpdPeOVnBnonpTkUCpK2Ss8E0Eh+5YRjrXnRJDf8T
+0jB+i7UJogr9bn4p3BBudtAWopmah7WF4X9xoaCos618oYQWxvpEwTXoX1Qf+z4a
+zHYVhz6cc3GvQJghOE8W7Ri0RL6IbFdG6LntDI33c2swud27CSLwyiAn0CeOmxmC
+CQ4oVFd5MbFLkgbBSf8ydYG0pHQYuiIM9NEaOAlvrMDkJ3T2NdImjf/VJaGFVju9
+Z4ULFdOzzhC5Ag0EX+9amgEQALuG4vKxj7aUCDLvoA2o7xzWaTOPnObSh1ORvyDk
+hII0niofuAQniScqT5UMAHBeUNtOtGMy8mMvGf7zx7Z+BcPIavcxBlEqfvvre9v8
+clKm4NFoyTTk/clB+BtVhhBsLqcVLiv/0e0EBtBd/7jz32OGLiz/gxwRkRmjavT2
+TpLBt7jox5otUIjEtD4JISWf9bGTTbFY4i8/5EZaEBqSPG90K1GQ/SiG1D1paG4H
+odS9Vpah07pY/P3nqGovBg/lpJHJ53MgscNlwfAnpMupxEEF+dABPtmVcQOFzVE9
+npP93p9RKLwYVI9vigr4OZT7uVLAYeMmBqx93hRZRy9lsndveD2eE8oM9bLzC50c
+S0ntjIhtL6Rj6fmg4/cielmT2nxK8VUxRjg8BMxCSvblCZsUiastQesTk+tzsZTM
+BR8Z5TmNtfA7iEdV9aBG0aX5GaeS0NXS6k9Wtb0hmU3tV4Tudab+fZmoHBk9adLc
+I4LbKtut5zS9LBXvouvBHHZ7qotd/f7+hA+jg2E2fVOi29A+vJK4oC9DHTI0J1d6
+ZK9RUZMljU8mrzWicOMb9/FA5wd0RDGuijJcEVhtMOKTRp0huJhLA0uv/kbOW6Cq
+undIcadymUKIGi/5JhY+QsznxO1uiXAJyZB38dEway66sOfhHdfFaXhYBzfhaEKC
+mfJTABEBAAGJAjwEGAEIACYCGwwWIQRDzC5mk7YBGl5vP5ZKVtstv43BhgUCY7cX
+hAUJBajwagAKCRBKVtstv43Bhs1rEACJ6w/NZAn2BEhs5Z76EpNzZKxcF8/ze0rD
+5erAat9dj/gMhrC4c3mdPifmz6QNwE98jQf3OUE+o5QptkgfVcx8HETDTqV/VQ46
+fLjx49O+bvw4b5LMnmqtN9WkhA3c/0AZQIhAR3t9BP1gmgzqWHgq2NChtT52mh8y
+TtZh98W0ge+fpmwAzxRSeLTWvg9jBaK0YbnQ8mC3ngAjWeqpOK7OGla2XRsUwjv7
+nwNwPMdt0+iAe57x7oukZOejTc5TijOUOAnAlfdEqDL53MZmpL+5w6dWXwisd8ts
+4JicqUfZbnuWWQhiBs6ux/v4VLLUPDejx8r0QH9tnvQN682P6WG5IJu8VPb+0uMJ
+2NS5vLjgpknZHr9YR00mODfoRU8OGDfI9ypSkQzs4kYXn4FnvnOs16+Xvap877Yc
+lOSRi4TRVWetVFYUrVXermjaI+s0OWTxeFlMzs4WzlztHLBVG48lkc3uVIz8CvGC
+y8WraTaXF6guFaD+d92QA6UbUaBEoNGiS9fgcU4AGGOXNVUCk0DNDOznM98oUWHk
+kKEi7kix5q+/4yXdX08T00fVvrQgfqtyUi9B5fUO8H39i7zPXCEmvZT6QZo1JP68
+0u03gvk5UED3yeEAb0ej/Fe22t0/PC6+msL88AAQ3r8fDrNH3u/OGrbVWHa0SlER
+dGTzqf46lQ==
+=CSCJ
+-----END PGP PUBLIC KEY BLOCK-----
blob - /dev/null
blob + ac3a85b7b0f56048dcb0458b1bbfa74a856aee28 (mode 644)
--- /dev/null
+++ uploads/Jrmu/jrmu.pub.txt,1716356339
@@ -0,0 +1,80 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBF/vWpoBEADEkbe0MwWiXiniXLTLaAUZ2AbRPD07S5BAhAthrwej54zZROUw
+zWSpcKa0+T6U5gILi+nDev+ID1kcLWM3YoQFcY8LAfaFWKsI25qlKPi/sNDHE0p/
+QgyMIh/g5CHFLE1B1AXFyPcxL+jCG6VGwDkPOrzhayJnwJafnosxjtCV70k/AVen
+MjpZfllniF0LCLSrcCx7503ck3AIU76AtbsDaz60SBSA81jczuXQs1FF762OVIW/
+2Ov4wjm2CgXWD46bSGMbzgx6xjcuMTpCIE8t+2Vxu1+3VasjoTRreSFHpVUtnJnR
+i3KvTRCOk6aiwKnVhlFba961/v8yoVh8kFl1s6Y+xp+V44rxewJxtesUDjwqIz8X
+CGZxq8zv+zUWlLyoLH0uJNnZ2ObprG/WQjfrDZDl/M+5nQBTJI38yPsdGF6GiYS4
+aJ8qrT/aEEVwUSIHIRBz0X8md+iUoAsmji/AyRo5LNYFEksCKDjKo9QcMby8ML3D
+jNvbOp+q9JXUdU+10q5EtoV1+E5kjTVU4szqVs3sC4aPbEgXIlHDLoiZpxrIeFJF
+TCDEitvSFzCVbvvn8a194LwozNMvLdB7heXpQf7uHrbMXuS1lsgSdmk84m/S+GIy
+F8FsDaCEIjC89Irq7W0NEGk0puX8TMK+D46862gcO1V0ZqLdu6s4x/baOQARAQAB
+tDxzdXBwb3J0QGlyY25vdy5vcmcgKGh0dHBzOi8vaXJjbm93Lm9yZykgPHN1cHBv
+cnRAaXJjbm93Lm9yZz6JAlUEEwEIAD8CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4B
+AheAFiEEQ8wuZpO2ARpebz+WSlbbLb+NwYYFAmO3hZwFCQlrxYIACgkQSlbbLb+N
+wYYvXQ//auN6B/5jMEifY+0Z+dvwn37SSzl8dvvRlUDzuh6tgMplwyjynM6UcISi
+DJ91px3Z8rTykhpIEoQVNRxBpKsCFmLgaCvWmx1drbEhuC3+inYIlRNUk8xSwTYb
+Gicx95Uc24ivZlDVD455El4m9DSvTGWv1dsCXsDAhvwa1RUiqIb90gfV5L/STWS6
+64lQ6EqaVEmIU5ocAeiAn+m4dIspXRv23ODlB5RYZBysYWOWrJXCYVx2TvAwmmBW
+HtVf9YtZpAShjBEGwOazSHNMxG5Mpt6yKev1t9t5bg9LiPmVg+KAAoy8IT+r4jiF
+YlLc7d3wk2bvKid8DbFmU1qfhNepDrNDcGG3GPGMzw+t6jtu9N8pckPnoenc1ol8
+C7c45cBvT0CJcvSWHk5X+ky/2pgCY0pwskSqJYiET3IIC9TIYYpE/4d6o9cPl5HE
+kbJmgd8FQHPFl6dhphqVLFb3HPsUvtIKSbaV5dTrqK6Kaf5b8qXpQMKBTX4mX48Z
+J7SB94a5gcYwcP5w/ITrdqz4baDAA5dNHYnHCHY3lIy0/IXqurM7F6pOZBflgerB
+GSgX/f/7yj2iCxx4m5xcug+MryCQyrBMxU4z3VHnvFV4ILNAynh8pvT9Iqooj9Vy
+kZiMXVcTtTQXWatVtCYGoKeuS3ZuEQlWgjjAKAVXvW645GlfQD60OGFkbWluQGly
+Y25vdy5vcmcgKGh0dHBzOi8vaXJjbm93Lm9yZykgPGFkbWluQGlyY25vdy5vcmc+
+iQJVBBMBCAA/AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgBYhBEPMLmaTtgEa
+Xm8/lkpW2y2/jcGGBQJjt4WgBQkJa8WCAAoJEEpW2y2/jcGGp2QP/ixn6WYH8FGl
+wrcaqIVJXR64GFjXC1UMQNgn56C796XTFZ35nMJotytKscelulinCZzacOewuMNc
+uFfmOWcH9DaXjKpaa+JcC02vMDOeIkFlWghc4syH1LGrJpO1Zqtv4hhy8EUnfgXZ
+bLKc0Pxk5m1w4cSZRzb0TC9qRiJuthE02DuCdD61dkSMrD1UEftknFAQIhaV+X+6
+jQOH6UJmo5+zkijMwPYHe3mqjaugk6fg6rHI2IVFtB4QnqWUwdYfZ6iTLwiugYq7
+CCidGSIQNRBbzrY+f4jWn09HmriokH/xZE9VehC3Lnvcfxu8h3XcKvWwcDx0J5xx
+7NseDeFbTs+entKrGhNVfNjlZXvFtWWztX8eLABz0V7b49K4I+yGeOoUfO8KZxKs
++/o8FD0SN5GP4bKr3+h5sqklyEmjR7pe11kMIFU6umxwty9xS88Z4UsGykJ/HW/2
+p68Z7pWfpDLvVbzKox+bUu53aAGYY92v2nVK4862kmIEZJrHT1vuBQuACtSuUHDY
+n+PeaGNo/rivg3V3r6wjN42P32uM5xXO8igym7jNW64qrxyRzQgJIycSMtHbsEBH
+oB2NJbSqTdGQHYlyIZsIxHvWGlBMDIAVaPBTeUhJSEMqOubnl+w6gmQ01ThSupt5
+R48QwU4DTLbq5TbdtuayCEP+5lqj3cj8tDZqcm11QGlyY25vdy5vcmcgKGh0dHBz
+Oi8vaXJjbm93Lm9yZykgPGpybXVAaXJjbm93Lm9yZz6JAlUEEwEIAD8CGwMGCwkI
+BwMCBhUIAgkKCwQWAgMBAh4BAheAFiEEQ8wuZpO2ARpebz+WSlbbLb+NwYYFAmO3
+haEFCQlrxYIACgkQSlbbLb+NwYZ1qA//bKv0YQ2Qao58ZCWbEnYd9Jy0WChIkU97
+TVJerV+B2M9Rclbq4tZbaiaQUe4uYbna1D+JFdB6qjLnea4xxk8U9T8fRW1Z6uf4
+mX6SRQYDg3M34cOY7WArIVD15Yh9HnPPHxVxZZv8fJH9GpYRs87Y+lgBkjp8PKGd
+1XhCOh/G8eJOdibu1zDbLVpfF3gQYodHJD9mkpHO5UNfAaOSxEf14dZlExRC8kV7
+WzH8G3F9gNP5A5VoOiU+5Xca6FchyDgJA+/BlwHvDDDvME6D0q7weF+A7XRElzIT
+XI6mEzR1Y3Rxo2J5jgOjJA1wntslzqweDckbZSI0ggUhGCBeWPozqWAClW7LS+ZQ
+hZmxr6zMrSp1c2yx9clp4eVJS6SZnGSAwkVHqEBSReP6ARJcPCOA58Dz+Eh+EWPz
+fESw+cs1516W6YqjfARzMiz+/gmnQ3AYnp3Ln1iZIQMHlAsyL8EtG/cUiC2K+sph
+zmOCgAcQ37LBVjFU4coKvDUNQZ/M1EN++NNMa7eqHBS9ogGoCshSHttRYvDo9tEv
+hwQpMhb9IhCGLBwzE4dUe/307X9tFo1PEUIfdQYLEMf6cFpEbWu/0pNXHllWp3wr
+Ol0qiQAXxH2fr6dnYrX2+RYxyByjArQ9G++oL4+gZZQKKF2hI8TGtXyDhQym2Gde
+iWELrTvdMjm5Ag0EX+9amgEQALuG4vKxj7aUCDLvoA2o7xzWaTOPnObSh1ORvyDk
+hII0niofuAQniScqT5UMAHBeUNtOtGMy8mMvGf7zx7Z+BcPIavcxBlEqfvvre9v8
+clKm4NFoyTTk/clB+BtVhhBsLqcVLiv/0e0EBtBd/7jz32OGLiz/gxwRkRmjavT2
+TpLBt7jox5otUIjEtD4JISWf9bGTTbFY4i8/5EZaEBqSPG90K1GQ/SiG1D1paG4H
+odS9Vpah07pY/P3nqGovBg/lpJHJ53MgscNlwfAnpMupxEEF+dABPtmVcQOFzVE9
+npP93p9RKLwYVI9vigr4OZT7uVLAYeMmBqx93hRZRy9lsndveD2eE8oM9bLzC50c
+S0ntjIhtL6Rj6fmg4/cielmT2nxK8VUxRjg8BMxCSvblCZsUiastQesTk+tzsZTM
+BR8Z5TmNtfA7iEdV9aBG0aX5GaeS0NXS6k9Wtb0hmU3tV4Tudab+fZmoHBk9adLc
+I4LbKtut5zS9LBXvouvBHHZ7qotd/f7+hA+jg2E2fVOi29A+vJK4oC9DHTI0J1d6
+ZK9RUZMljU8mrzWicOMb9/FA5wd0RDGuijJcEVhtMOKTRp0huJhLA0uv/kbOW6Cq
+undIcadymUKIGi/5JhY+QsznxO1uiXAJyZB38dEway66sOfhHdfFaXhYBzfhaEKC
+mfJTABEBAAGJAjwEGAEIACYCGwwWIQRDzC5mk7YBGl5vP5ZKVtstv43BhgUCY7eF
+qQUJCWvFjwAKCRBKVtstv43BhpPmEACqOoci0j+bK7Xz3YVczXNLXD8qovTIetbq
+p0HVWP5WQ60uJ52fvCzzFFlfpoKh6GlHAL2WQASd/0N6u031YDPuPFA3cBlGX5P5
+2rk2K7G7SNQcSW5Tn4h/r7WRYZkopd6E9wjsxV+lyBHmgSIpVnsCWFIaibDga065
+b/FpO3xWAPgtHuHNCdtj0mVhDBP7QCxvmB3BnRdo7PQyeGnBR1HbqgU8NcJd0lKJ
+p0RxcktzZyHT3qDCqYj/ICfPTipXafLldR9T9XUjl1mKzjVN8Nt0bzhmmPVbAOLJ
+KQKPJwr36HAuhgbw+HeGdj//V5nof4yMuDU2FM57Sn5ZfkaRnekue8NdnQJu3frY
+FeCBJpYz15yPJvIBIz+Sr2Gi8hUGVYB4/shrhU/AjgQkGr7E352gLSggi4QEgvuf
+zZrKrT5hUrqGLjiCeN/7LdwH5uEDttI8LFSdjRhChIWv1iUae16kJt5zwY6/MFA3
+GaVhdWUgG5VwWEU0HOqhB5hY21LrHemBtEPZLV51Lb3PiK6MGxM/84MQA388RiEp
+klxIKKgbIe0XsOTqK5b6K/V9AtZScux9RIPJh3H24UvJGi5iS3T71ve7E3i0E5bC
+HQb0cvVLrTB8CqhtBIILa08Inqse8LT0x/8LYmUQrfWlAd99NSVHE29LZfrxb/IL
+7obVUC/ddg==
+=e9Fj
+-----END PGP PUBLIC KEY BLOCK-----
blob - /dev/null
blob + 6473996b47942ac96fb149acd5a42877e5469f98 (mode 644)
Binary files /dev/null and uploads/Jrmu/libertyordeath.jpg differ
blob - /dev/null
blob + 46ad338b9c3d212b222c0123608d5aa3235381ca (mode 644)
Binary files /dev/null and uploads/Jrmu/rust.jpg differ
blob - /dev/null
blob + d290251b365ef290ddbd84072f288f5080e160b6 (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-authorizedkeys.png differ
blob - /dev/null
blob + 31c45f6d86e603cf4a4fb7fe72b1c4df97ab7aed (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-connections.png differ
blob - /dev/null
blob + 4b353d6abc3cb8d3d821fdf59b056d210ffce34d (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-export-public-key.png differ
blob - /dev/null
blob + dfe6aa4e85c32e1fdcb48d0fceb007d913d43615 (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-hostverification.png differ
blob - /dev/null
blob + dbad7cfb90b544f89ee0edb75c30db5a4702e689 (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-identities-export-public-key.png differ
blob - /dev/null
blob + 907612f1316fba528542aa6e702585991705cc2e (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-identities.png differ
blob - /dev/null
blob + 28c75cc2bffda54bc52c673d082a3e2c71916f65 (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-identity-password.png differ
blob - /dev/null
blob + 140605deafd5ce858dcba81f0320fff587c65cb1 (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-import-private-key.png differ
blob - /dev/null
blob + ee9ac6551ebb599f82d79c481cda93c0fd841aff (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-logged-in.png differ
blob - /dev/null
blob + 72a33d5d5b500261d51ed601b36683421992d38e (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-main.png differ
blob - /dev/null
blob + f4924a23c6634bee088f43270857caa65ddabfe7 (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-new-connection.png differ
blob - /dev/null
blob + 220b76df855ff6a014b1e1089a389de832170067 (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-no-connections.png differ
blob - /dev/null
blob + 5ac7a73eba126442702ac64b671bdb1cd45a56e4 (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-share-copytoclipboard.png differ
blob - /dev/null
blob + 66171b779eb1f642940629d3237442d6fb9aaa71 (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-tutorial.png differ
blob - /dev/null
blob + f2f1f0a35018336a4363b38a744b8dd91e5523fe (mode 644)
Binary files /dev/null and uploads/JuiceSSH/juicessh-update-identity.png differ
blob - /dev/null
blob + 8b25fec6483b64634a715d7eac205a3dc49b2215 (mode 644)
Binary files /dev/null and uploads/MacScreenSharing/screensharing-connect.png differ
blob - /dev/null
blob + a448c50700de74c1cc34398c547a5228b8c91f2b (mode 644)
Binary files /dev/null and uploads/MacScreenSharing/screensharing-password.png differ
blob - /dev/null
blob + 059ef63294f3f46a6237e796ab6aa033810f0cf4 (mode 644)
Binary files /dev/null and uploads/MacScreenSharing/screensharing-spotlight-autocomplete.png differ
blob - /dev/null
blob + 06ed28baafc00124f23716575e88917c5183a610 (mode 644)
Binary files /dev/null and uploads/MacScreenSharing/screensharing-spotlight.png differ
blob - /dev/null
blob + e6f6c203c4fb2c9e92214b0d15f161a1f8ea29f2 (mode 644)
Binary files /dev/null and uploads/MacTerminal/macterm1.png differ
blob - /dev/null
blob + 0bb4fad24e6424e6e34c2d77739c9fc1a909de1c (mode 644)
Binary files /dev/null and uploads/MacTerminal/macterm2.png differ
blob - /dev/null
blob + 74c85bfa2d1ad27a0465b590d92705a525b4d1d8 (mode 644)
Binary files /dev/null and uploads/MacTerminal/macterm3.png differ
blob - /dev/null
blob + 7eb9de47ad773f55537b169262af051e604103a1 (mode 644)
Binary files /dev/null and uploads/MacTerminal/macterm4.png differ
blob - /dev/null
blob + e2970bfd3bd2cb67dfd4bd21873992c9d35108b9 (mode 644)
Binary files /dev/null and uploads/MacTerminal/macterm5.png differ
blob - /dev/null
blob + fb7187055861257715415b70a24732cabb4ac8a6 (mode 644)
Binary files /dev/null and uploads/MailWindows/WindowsMail-account-info.png differ
blob - /dev/null
blob + f74bcd3e1ffcc417483fd9582e7ef976816faacc (mode 644)
Binary files /dev/null and uploads/MailWindows/WindowsMail-account-server.png differ
blob - /dev/null
blob + 25c031b3598ead4ad9f93e4950989770190f0c0d (mode 644)
Binary files /dev/null and uploads/MailWindows/WindowsMail-account-type.png differ
blob - /dev/null
blob + 6325cfe86ec3d07990f6642222290a35b2904c70 (mode 644)
Binary files /dev/null and uploads/Main/1.jpg differ
blob - /dev/null
blob + 94cb95ee42978e607a56167313df08f74a3d3238 (mode 644)
Binary files /dev/null and uploads/Main/10.jpg differ
blob - /dev/null
blob + 94cb95ee42978e607a56167313df08f74a3d3238 (mode 644)
Binary files /dev/null and uploads/Main/10.jpg,1637005059 differ
blob - /dev/null
blob + 94cb95ee42978e607a56167313df08f74a3d3238 (mode 644)
Binary files /dev/null and uploads/Main/10a.png differ
blob - /dev/null
blob + 94cb95ee42978e607a56167313df08f74a3d3238 (mode 644)
Binary files /dev/null and uploads/Main/10b.png differ
blob - /dev/null
blob + e13dd1f5cabb285184a2ce24855eaabb9cf77033 (mode 644)
Binary files /dev/null and uploads/Main/3a.jpg differ
blob - /dev/null
blob + e13dd1f5cabb285184a2ce24855eaabb9cf77033 (mode 644)
Binary files /dev/null and uploads/Main/4.jpg differ
blob - /dev/null
blob + 70d78001521f385f69cd6a36dac3149da6364800 (mode 644)
Binary files /dev/null and uploads/Main/5.jpg differ
blob - /dev/null
blob + 89ec72916caa7993f1238ee7cdbab67417037800 (mode 644)
Binary files /dev/null and uploads/Main/6.jpg differ
blob - /dev/null
blob + 329418e7385b48d151052910c3d668ec67f6a8ba (mode 644)
Binary files /dev/null and uploads/Main/BSDForAll-logo.gif differ
blob - /dev/null
blob + bd9b56b51c365a629f0bed410d3682007c7ccf16 (mode 644)
Binary files /dev/null and uploads/Main/BSDForAll-logo.png differ
blob - /dev/null
blob + f3e8c91e00eaebce1cca17d6137cf1135bd6f547 (mode 644)
Binary files /dev/null and uploads/Main/BSDForAll-logo_Old.png differ
blob - /dev/null
blob + b988f4e49aba862d072c9af957d2757ffa56727a (mode 644)
Binary files /dev/null and uploads/Main/Cloud9p-logo.png differ
blob - /dev/null
blob + 0d3664de1cdab7ec3fea4f1dfcd44a7d5f9fa741 (mode 644)
Binary files /dev/null and uploads/Main/Cloud9p-logo.png,1717122291 differ
blob - /dev/null
blob + d60f323a5666d09f010fe5b13795268c645475d5 (mode 644)
Binary files /dev/null and uploads/Main/FreeIRC-logo.png differ
blob - /dev/null
blob + 47bc14084e6e4a58ec11baa5cc86c58b7c38fad2 (mode 644)
Binary files /dev/null and uploads/Main/IRCForever-logo.png differ
blob - /dev/null
blob + a1d4b4404c0298f3369947a5e1a9b0bd585e1626 (mode 644)
Binary files /dev/null and uploads/Main/IRCForever-logo.png,1752616759 differ
blob - /dev/null
blob + 026367cac90f26639efd9e41a5e569a9562f26c0 (mode 644)
Binary files /dev/null and uploads/Main/IRCNow-logo.png differ
blob - /dev/null
blob + a4fc5a96daf14061112c6bcb2e4b93a24ddf7929 (mode 644)
Binary files /dev/null and uploads/Main/InspireNET-logo.png differ
blob - /dev/null
blob + c4ea7d2add05126665fad3abf0fd56720406d177 (mode 644)
Binary files /dev/null and uploads/Main/InspireNET-logo.png,1717121825 differ
blob - /dev/null
blob + 06c1dd8c36d500bc01020c075e59468dc00d6429 (mode 644)
Binary files /dev/null and uploads/Main/Lecturify-logo.png differ
blob - /dev/null
blob + 880ca3337cbe4bab672271140d1a97abc54a5ded (mode 644)
Binary files /dev/null and uploads/Main/Lecturify-logo.png,1717120324 differ
blob - /dev/null
blob + 6b98fa7879b5a9bcf2e161f6ba1771d7fcd9d888 (mode 644)
Binary files /dev/null and uploads/Main/Lecturify-logo.png,1717120364 differ
blob - /dev/null
blob + 6b98fa7879b5a9bcf2e161f6ba1771d7fcd9d888 (mode 644)
Binary files /dev/null and uploads/Main/Lecturify-logo.png,1717120552 differ
blob - /dev/null
blob + 06c1dd8c36d500bc01020c075e59468dc00d6429 (mode 644)
Binary files /dev/null and uploads/Main/Lecturify-logo.png,1717121204 differ
blob - /dev/null
blob + e100aca12635328b0d21cf4d7800b6f09eb25eae (mode 644)
Binary files /dev/null and uploads/Main/NastyCode-logo.png differ
blob - /dev/null
blob + a66a410063ae437edb3f39c0d8b1fe037794beab (mode 644)
Binary files /dev/null and uploads/Main/NastyCode-logo.png,1717121966 differ
blob - /dev/null
blob + c8f406b256e834539101b9ce96b2e2b3534527d9 (mode 644)
Binary files /dev/null and uploads/Main/NastyCode-logo.png,1717122217 differ
blob - /dev/null
blob + 46b2333d8f46c267a6aadf31a99da330343dea8d (mode 644)
Binary files /dev/null and uploads/Main/OddProtocol-logo.png differ
blob - /dev/null
blob + 43cfc4486141ba27f483c7c233b1b73c6c6f0375 (mode 644)
Binary files /dev/null and uploads/Main/OddProtocol-logo.png,1717122056 differ
blob - /dev/null
blob + 5ab86892ce47ddc830408050648efdde15dbf31e (mode 644)
Binary files /dev/null and uploads/Main/Opera_Mail_screenshot.png differ
blob - /dev/null
blob + 9529afecc8c55221da7ee6b5b1ef3ef351c77faa (mode 644)
Binary files /dev/null and uploads/Main/RPBLC-logo.png differ
blob - /dev/null
blob + 76007a8c957c6180d65fad311432e82531aa7f22 (mode 644)
Binary files /dev/null and uploads/Main/ShellTalk-logo.png differ
blob - /dev/null
blob + d8ffabc8cf9f8a319ac79301c06924e1980b32d9 (mode 644)
--- /dev/null
+++ uploads/Main/ThunderIRC-logo.svg
@@ -0,0 +1 @@
+<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="bolt-lightning" class="svg-inline--fa fa-bolt-lightning fa-lg " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512" color="#F5D501"><path fill="currentColor" d="M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z"></path></svg>
blob - /dev/null
blob + 8e2f1c18e7c4fa2e65fae5d8b70b917d576d2d28 (mode 644)
Binary files /dev/null and uploads/Main/inter9.png differ
blob - /dev/null
blob + 6bb19e42a066f4cf29f5f1c5ecc47abd5970a768 (mode 644)
Binary files /dev/null and uploads/Main/inter9.png,1752616853 differ
blob - /dev/null
blob + 60b042b88785c8747ddd6273df3c15318bd09f30 (mode 644)
Binary files /dev/null and uploads/Main/kb-opera-new-account-wizard-1.png differ
blob - /dev/null
blob + 9285924233363a6186d147ef62b72ab137e52fe4 (mode 644)
Binary files /dev/null and uploads/Main/libertybell.png differ
blob - /dev/null
blob + 53ee289b730149761fb985c24176e0dcd2d97d57 (mode 644)
Binary files /dev/null and uploads/Main/new-account-wiz-2.jpg differ
blob - /dev/null
blob + e13dd1f5cabb285184a2ce24855eaabb9cf77033 (mode 644)
Binary files /dev/null and uploads/Main/new-account-wiz-3.jpg differ
blob - /dev/null
blob + 89ec72916caa7993f1238ee7cdbab67417037800 (mode 644)
Binary files /dev/null and uploads/Main/new-account-wiz-4.jpg differ
blob - /dev/null
blob + 99609d69e9c08feebafcf612c8862cdf7700de70 (mode 644)
Binary files /dev/null and uploads/Main/new-account-wiz.jpg differ
blob - /dev/null
blob + 99609d69e9c08feebafcf612c8862cdf7700de70 (mode 644)
Binary files /dev/null and uploads/Main/new1.png differ
blob - /dev/null
blob + 82ce109572a512f398613dc224badd14ea14a831 (mode 644)
Binary files /dev/null and uploads/Main/novanet-logo.png differ
blob - /dev/null
blob + a597fd0a66ca342c8a53fc16a92ba587a0f59efc (mode 644)
Binary files /dev/null and uploads/Main/novanet-logo.png,1748645338 differ
blob - /dev/null
blob + a4a198e41aa8416772769d0c1c81964bdb955c1f (mode 644)
Binary files /dev/null and uploads/Main/planetofnix-logo.png differ
blob - /dev/null
blob + b6ad5e7abf3b4530a75e1bb71b31eff4102f1a3c (mode 644)
Binary files /dev/null and uploads/Marketing/HerdQuit.jpg differ
blob - /dev/null
blob + 21f451977a90093cc6f97f956381589a38096c74 (mode 644)
Binary files /dev/null and uploads/Marketing/abecabin.jpg differ
blob - /dev/null
blob + 846241850a1a39d4c8f3a2b083352530d8384fa1 (mode 644)
Binary files /dev/null and uploads/Marketing/assembly.jpg differ
blob - /dev/null
blob + 0ba605287de7dd32b287a65de70f771a3cb086ab (mode 644)
Binary files /dev/null and uploads/Marketing/choptree.jpg differ
blob - /dev/null
blob + 1f21db7ab0051ebe23c5b627cfa3ae7036aa47e9 (mode 644)
Binary files /dev/null and uploads/Marketing/comeandtakeit.png differ
blob - /dev/null
blob + 5796216ccb04f2a25099d2cd56fccd96d8d3c6fc (mode 644)
Binary files /dev/null and uploads/Marketing/congress.jpg differ
blob - /dev/null
blob + 55e89fb89e654cf5d0411c001669652076bb9b4c (mode 644)
Binary files /dev/null and uploads/Marketing/ferriswheel.jpg differ
blob - /dev/null
blob + 9b1a4bbc7888bd987a18a170e4278f49aa283b6d (mode 644)
Binary files /dev/null and uploads/Marketing/firstflight.jpg differ
blob - /dev/null
blob + 6c44137c9e2c05b12990ec6549e74c541f48c291 (mode 644)
Binary files /dev/null and uploads/Marketing/fordt.jpg differ
blob - /dev/null
blob + 4a2b010c93f0236d879e5bceb75b045d0069a625 (mode 644)
Binary files /dev/null and uploads/Marketing/freepress.png differ
blob - /dev/null
blob + c048a021a75405e0b66df5d7e91b82dda54a372b (mode 644)
Binary files /dev/null and uploads/Marketing/freeusers.jpg differ
blob - /dev/null
blob + 5c318bdb979f323f78b837aa4195495a3c1d3a02 (mode 644)
Binary files /dev/null and uploads/Marketing/gazette.jpg differ
blob - /dev/null
blob + b6ad5e7abf3b4530a75e1bb71b31eff4102f1a3c (mode 644)
Binary files /dev/null and uploads/Marketing/herdquit.jpg differ
blob - /dev/null
blob + 61d0805bb221e7af6971f54ec29698152f13f2e3 (mode 644)
Binary files /dev/null and uploads/Marketing/iwojima.png differ
blob - /dev/null
blob + 94c17828e28a4fea0c8d910e94d8f808e93e3086 (mode 644)
Binary files /dev/null and uploads/Marketing/jenny.jpg differ
blob - /dev/null
blob + 9c3a36d893c8993d595236dab6231faa9660761b (mode 644)
Binary files /dev/null and uploads/Marketing/learntoread.jpg differ
blob - /dev/null
blob + 6473996b47942ac96fb149acd5a42877e5469f98 (mode 644)
Binary files /dev/null and uploads/Marketing/libertyordeath.jpg differ
blob - /dev/null
blob + f56e3ee9ed7013703bd559350a59b295f1f6dea6 (mode 644)
Binary files /dev/null and uploads/Marketing/lightbulb.jpg differ
blob - /dev/null
blob + f4041d9508e92d869a995611014853c498d6627d (mode 644)
Binary files /dev/null and uploads/Marketing/livefreeordie.jpg differ
blob - /dev/null
blob + aa25fcd0981030cbf04b50a56ef806c8b3c406ba (mode 644)
Binary files /dev/null and uploads/Marketing/logcabin.jpg differ
blob - /dev/null
blob + 8fd5001cfd72d0e4772082d5f0d35f37c16d0624 (mode 644)
Binary files /dev/null and uploads/Marketing/madeonirc-small.png differ
blob - /dev/null
blob + e7aa2618b215b2d08e60dfec901c8347f8d826f7 (mode 644)
Binary files /dev/null and uploads/Marketing/madeonirc-small.png,1686695270 differ
blob - /dev/null
blob + dcfed8c524699cf66f81e916ea3e25cd8688a51c (mode 644)
Binary files /dev/null and uploads/Marketing/madeonirc.jpg differ
blob - /dev/null
blob + fdd9bc543529f4d3eb07ae02910a257442933068 (mode 644)
Binary files /dev/null and uploads/Marketing/madeonirc.png differ
blob - /dev/null
blob + 9179b99003aabd8b4380a3c6d2e021c4ffc9b7bb (mode 644)
Binary files /dev/null and uploads/Marketing/madeonirc.png,1616851992 differ
blob - /dev/null
blob + 426f2f31defc8af9d8b0a7a3c39c0a07be06bf9e (mode 644)
Binary files /dev/null and uploads/Marketing/madeonirc.png,1616859172 differ
blob - /dev/null
blob + ea050aedf81e3ab526dfd25a9741f64a8b004fd6 (mode 644)
Binary files /dev/null and uploads/Marketing/madeonirc128x128.png differ
blob - /dev/null
blob + 84a2ec3893fc074679ad3759b1d1703a4a941f5c (mode 644)
Binary files /dev/null and uploads/Marketing/minutemin.png differ
blob - /dev/null
blob + 6c44137c9e2c05b12990ec6549e74c541f48c291 (mode 644)
Binary files /dev/null and uploads/Marketing/modelt.jpg differ
blob - /dev/null
blob + 8270bd67bae246a0003758d8bae1a227fe6356f0 (mode 644)
Binary files /dev/null and uploads/Marketing/morse.jpg differ
blob - /dev/null
blob + 2815b3d9ea39638d7f1a331784c85740035bac7d (mode 644)
Binary files /dev/null and uploads/Marketing/nasa.jpg differ
blob - /dev/null
blob + d107bc8eff55beb7bc6dbf3c7e364ae5676e1f45 (mode 644)
Binary files /dev/null and uploads/Marketing/oregontrail.png differ
blob - /dev/null
blob + f5b8b603365ec47b0318eb59677de1ad1433256d (mode 644)
Binary files /dev/null and uploads/Marketing/phonograph.jpg differ
blob - /dev/null
blob + e0acfb94647f86a9ceae41af89c269fda876b5a0 (mode 644)
Binary files /dev/null and uploads/Marketing/ponyexpress.jpg differ
blob - /dev/null
blob + 5943dab250a3fd92cffbeae5bc43d414f90ba22b (mode 644)
Binary files /dev/null and uploads/Marketing/popcorn.jpg differ
blob - /dev/null
blob + dc900bbeca9ea47294d981aaaab9d8fb4523472e (mode 644)
Binary files /dev/null and uploads/Marketing/press.png differ
blob - /dev/null
blob + 2451b8e560b2f97fdfa66e17c804173cd75cab82 (mode 644)
Binary files /dev/null and uploads/Marketing/rosie.png differ
blob - /dev/null
blob + 5c7cbfdeadb1670986a768741af407763eb87227 (mode 644)
Binary files /dev/null and uploads/Marketing/rosie.png,1612448884 differ
blob - /dev/null
blob + eb11117a291f0692ecf2f6cbe877a86820cf0a09 (mode 644)
Binary files /dev/null and uploads/Marketing/sacagawea.jpg differ
blob - /dev/null
blob + eb11117a291f0692ecf2f6cbe877a86820cf0a09 (mode 644)
Binary files /dev/null and uploads/Marketing/sacagawea.png differ
blob - /dev/null
blob + 9fce3ada56a31e42f1708c75e9748c8d1a043f59 (mode 644)
Binary files /dev/null and uploads/Marketing/thanksgiving.jpg differ
blob - /dev/null
blob + 28e0cb993bac5b2e1dccea85a776240756e5b5b5 (mode 644)
Binary files /dev/null and uploads/Marketing/tread.jpg differ
blob - /dev/null
blob + 28e0cb993bac5b2e1dccea85a776240756e5b5b5 (mode 644)
Binary files /dev/null and uploads/Marketing/tread.png differ
blob - /dev/null
blob + 30663a83483c8b34a338d17f420166bf4ede7d16 (mode 644)
Binary files /dev/null and uploads/Marketing/unclesam.jpg differ
blob - /dev/null
blob + 30663a83483c8b34a338d17f420166bf4ede7d16 (mode 644)
Binary files /dev/null and uploads/Marketing/unclesam.jpg,1613910514 differ
blob - /dev/null
blob + 2b1215012f1e779a4d1a9479c5df9f55ea6d4e0b (mode 644)
Binary files /dev/null and uploads/Marketing/unclesam.jpg,1613910641 differ
blob - /dev/null
blob + 2b1215012f1e779a4d1a9479c5df9f55ea6d4e0b (mode 644)
Binary files /dev/null and uploads/Marketing/unclesam.png differ
blob - /dev/null
blob + 8e80955f5192a1dddb182b0399fc7500b2b7ba4d (mode 644)
Binary files /dev/null and uploads/Marketing/unclesam.png,1612505074 differ
blob - /dev/null
blob + 30663a83483c8b34a338d17f420166bf4ede7d16 (mode 644)
Binary files /dev/null and uploads/Marketing/unclesam.png,1613910487 differ
blob - /dev/null
blob + 12cbde57e22a1646b0a9a5f464dce46da4024319 (mode 644)
Binary files /dev/null and uploads/Marketing/unionpacific.jpg differ
blob - /dev/null
blob + 3aa2122b45c826a3a872eca1ec2411a6253cbac5 (mode 644)
Binary files /dev/null and uploads/Marketing/unitedweserve.jpg differ
blob - /dev/null
blob + 51b6e94d0b9ac174df680dcdf0f5e78deb768518 (mode 644)
Binary files /dev/null and uploads/Marketing/unitedwestand.png differ
blob - /dev/null
blob + d61ffeb6adb2e72727786c276cbb8c29ea379ed4 (mode 644)
Binary files /dev/null and uploads/Marketing/wanted.jpg differ
blob - /dev/null
blob + 6684276dea286e122d85ff491fa1dd40793645da (mode 644)
Binary files /dev/null and uploads/Marketing/wetheusers.png differ
blob - /dev/null
blob + b2eda78147ec21c17d82df4ecff3f0bca84ce5e3 (mode 644)
Binary files /dev/null and uploads/Marketing/willamette.png differ
blob - /dev/null
blob + 58570e9eeb859fc93055bf7b817079fac6ccf05f (mode 644)
Binary files /dev/null and uploads/Mcabber/mcabber.png differ
blob - /dev/null
blob + 64bfea9f3ff51aa011ad0509c57a9ed77147f264 (mode 644)
Binary files /dev/null and uploads/Mcabber/mcabber.png,1637934473 differ
blob - /dev/null
blob + f9efc0c2c67d80e6afc78aea8d13080badd4bbd5 (mode 644)
--- /dev/null
+++ uploads/Mlmmj/update-archive.txt
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+# Updates the list archive with new messages since last run based
+# on the last index in $LASTINDEX and the latest index in the $LISTDIR
+# 
+# 2006 Martin Leopold <leopold@diku.dk>
+#
+
+if [ $# -le 1 ]; then
+ echo "Grrr.."
+ echo "\$1 - name of the archive"
+ echo "\$2 - www dir"
+ echo "\$3 - list dir"
+ exit 0
+fi
+
+LABEL=$1
+WWWDIR=$2
+LISTDIR=$3
+LASTINDEXFILE=$WWWDIR/last
+NEWINDEX=`cat $LISTDIR/index`
+LASTINDEX=`cat $LASTINDEXFILE`
+HYPERMAIL="/usr/local/bin/hypermail"
+
+if [ -z $LASTINDEX ]; then
+LASTINDEX=1
+fi
+
+for IT in `seq $LASTINDEX $NEWINDEX`; do
+  $HYPERMAIL -l $LABEL -i -u -d $WWWDIR < $LISTDIR/archive/$IT
+done
+
+chown apache:apache -R $WWWDIR
+
+echo $NEWINDEX > $LASTINDEXFILE
blob - /dev/null
blob + da965578020a602af0ef431d8e08df9bb85637bd (mode 644)
Binary files /dev/null and uploads/Monal/monal-allownotifications.png differ
blob - /dev/null
blob + 2155d82e9ceafb0ee51f1dfb395076d8428927cb (mode 644)
Binary files /dev/null and uploads/Monal/monal-appstore.png differ
blob - /dev/null
blob + 42cb40be12918cd53cd6ff111b2589e2d2d117e9 (mode 644)
Binary files /dev/null and uploads/Monal/monal-chats.png differ
blob - /dev/null
blob + 95561af02f613b0a8050017e58a20678364bc819 (mode 644)
Binary files /dev/null and uploads/Monal/monal-contacts.png differ
blob - /dev/null
blob + b5a0f59ad3f5b20e1ff0fb84b93d0cc90fc62773 (mode 644)
Binary files /dev/null and uploads/Monal/monal-login.png differ
blob - /dev/null
blob + cc1ac0954f7c147fef0d2ad8d363b29475e37894 (mode 644)
Binary files /dev/null and uploads/Monal/monal-settings.png differ
blob - /dev/null
blob + 4fb8d420d25d526a6288b9c148871d39fd87084f (mode 644)
Binary files /dev/null and uploads/Monal/monal-welcome.png differ
blob - /dev/null
blob + 847a7e3dae092dc183eb89b25c4dbe731e26f93a (mode 644)
--- /dev/null
+++ uploads/Ngircd/ircnow-motd.txt
@@ -0,0 +1,38 @@
++------------------------------------------------------------------------+
+|  _   ____   ___          ______,-.--.-._____     _   _                 |
+| | | | |\ \ | |\|         |     |  __  |     |   | | | |   _   _  _  _  |
+| | | | |/ / | |          /      |_/  \_|      \  | |\| | /| |\| || || | |
+| |_| |_|\_\ |_|/|       /   ..#//;;;;;;;;;..   \ |_| |_| \|_|/ \_\_/_/  |
+|_______________________/  .##//;;;;;;;;;;;;;;.  \_______________________|
+|                        ./#//::::::::::::::::::                         |
+| https://ircnow.org    ./#/:;;;;;;;;;;;;;;;;;;;;.                       |
+|                       /#//::::::::::::::::::::::     IRC Server        |
+| The Users' Network    //:/::::::::::::::::::::::     IRC Bouncers      |
+|                       //:/::::::::::::::::::::::     IRC Bots          |
+| Of the users,         //:/:::::: :::::::::::::::     E-mail            |
+| By the users,        .//:/::::::-:::::::::::::::.    VPN               |
+| For the users        ///:/:::::: ::::::::::::::::    Code hosting      |
+|                      ///:/:::::: ::::::::::::::::    File storage      |
+|                     .///:/:::::: ::::::::::::::::.   Shell accounts    |
+|                     ////:/:/:::: :::::::::::::::::                     |
+| designed by        .////:/:/:/::. ::::::::::::::::.                    |
+|    bitreich        /#///:/:/:/:/::: :::::::::::::::                    |
+|                 .###//////////////// ';/;/;;;;;;;;;;;.                 |
+|                /###//////////////////-'/:/:/:::::::::::                |
+|               ////////////:/:/:/;;;;;; ;;;;;;;;;;;;;;;;;               |
+|               ""     ""        [_    .:        ""     ""               |
+|                                  |_.:                                  |
+|                                                                        |
+|            irc.ircnow.org 6667 for plaintext, 6697 for TLS             |
+|              6660-6670, 16667 for plaintext, 16697 for TLS             |
+|                                                                        |
+|            * No porn / illegal drugs / threats of violence *           |
+|            * No slander / libel / gambling *                           |
+|            * No spam, illegal cracking, or DDoS *                      |
+|            * No copyright infrigement                                  |
+|            * Max 3 connections per IP address.                         |
+|                                                                        |
+|   Terms of service: https://wiki.ircnow.org/index.php?n=Terms.Terms    |
+|                                                                        |
+|   Opers are available on #help.                                        |
++------------------------------------------------------------------------+
blob - /dev/null
blob + 6e453ba87d32728830723a2b6e676fe3af2ef726 (mode 644)
--- /dev/null
+++ uploads/Openbsd/Xsetup_0
@@ -0,0 +1,28 @@
+#!/bin/sh
+# $OpenBSD: Xsetup_0.in,v 1.1 2021/08/30 15:38:27 matthieu Exp $
+
+prefix="/usr/X11R6"
+exec_prefix="${prefix}"
+
+monitor="HDMI-2"
+
+monitors=$(${exec_prefix}/bin/xrandr --listmonitors)
+echo "Active output monitors: " ${monitors}
+echo "Selected primary monitor: " ${monitor}
+if [ $(echo ${monitors} | grep -c ${monitor}) -ge 1 ]; then
+        ${exec_prefix}/bin/xrandr --output ${monitor} --primary
+fi
+
+${exec_prefix}/bin/xsetroot -fg \#6f6f6f -bg \#bfbfbf -bitmap ${prefix}/include/X11/bitmaps/root_weave
+
+${exec_prefix}/bin/xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFail
+
+#  install package openbsd-backgrounds
+#  then uncomment:
+#
+# if test -x /usr/local/bin/openbsd-wallpaper
+# then
+#       /usr/local/bin/openbsd-wallpaper
+# fi
+
+# sxpm OpenBSD.xpm &
\ No newline at end of file
blob - /dev/null
blob + 308b12f2b9fe77a0624b4f255a4751639a43c495 (mode 644)
Binary files /dev/null and uploads/Openbsd/bsdrd-1.png differ
blob - /dev/null
blob + 7b49bfc6a8d3cbee4f0ca6b1e307906e8a4f1995 (mode 644)
Binary files /dev/null and uploads/Openbsd/config.php.zip differ
blob - /dev/null
blob + 602ad9df755c15a53d3de8294c0646701b0f9198 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-01.png differ
blob - /dev/null
blob + 4ee655efb674f2ccf29d6d564f04beb7caecd90b (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-02.png differ
blob - /dev/null
blob + 9b445ddd4c5ba910aac72b9aef2a2921469d5203 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-03.png differ
blob - /dev/null
blob + 8d683723b4468da5004ed75e5b9f9b1608b641b3 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-04.png differ
blob - /dev/null
blob + 8d683723b4468da5004ed75e5b9f9b1608b641b3 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-04.png,1607077269 differ
blob - /dev/null
blob + 6a95b247b30af6c19804445335f576b3d9f961b8 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-05.png differ
blob - /dev/null
blob + 4a2f28494ef4eb26fcfd72294c9404a3192c629a (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-06.png differ
blob - /dev/null
blob + 8b46a134dd1d204dfa2da3b7e55cfd230787cf9f (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-07.png differ
blob - /dev/null
blob + 897693787941d77ac30cf105f9ce52631c6cee03 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-08.png differ
blob - /dev/null
blob + 4ff12875abe7e32ec0aa87dbd26beb3ba6d7778b (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-09.png differ
blob - /dev/null
blob + 4ff12875abe7e32ec0aa87dbd26beb3ba6d7778b (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-09.png,1607079978 differ
blob - /dev/null
blob + f0ca5ec509cf2915ee2a6f76d5b948d692674832 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-10.png differ
blob - /dev/null
blob + 84ba401509ab56fe06a704b6cecf8c54c9c899be (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-11.png differ
blob - /dev/null
blob + 1b431091b79ca9f806461bbdb5908c3ba514a378 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-12.png differ
blob - /dev/null
blob + 81efb16f7ea92cc4573351f364c1e88b400b2777 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-13.png differ
blob - /dev/null
blob + ae0eebfcc931bf4e935a90ef94b36784a07eaf42 (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-13b.png differ
blob - /dev/null
blob + 2a68106032a5021854890393e4cfa195246e32ac (mode 644)
Binary files /dev/null and uploads/Openbsd/install-panel-14.png differ
blob - /dev/null
blob + 37473af0a7cfffb32225bcb108c7fbebf31704fd (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-1.png differ
blob - /dev/null
blob + 91f56db13436ec6af18680568470a6d05128fd58 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-1.png,1607088029 differ
blob - /dev/null
blob + b3472720e3e701650d0ec496f2b61e2dac811fc4 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-1.png,1607088195 differ
blob - /dev/null
blob + 91f56db13436ec6af18680568470a6d05128fd58 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-1.png,1607096208 differ
blob - /dev/null
blob + cdab67820d74813b98f73d4bac3493a6b8a25f6d (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-2.png differ
blob - /dev/null
blob + 91f56db13436ec6af18680568470a6d05128fd58 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-2.png,1607096319 differ
blob - /dev/null
blob + 24cf9ed1e07712cea06f0b6bf9f3163e22340382 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-3.png differ
blob - /dev/null
blob + b94c679e80ff1716e2dc4b64e69731eed6f88866 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-4.png differ
blob - /dev/null
blob + 956b5f6d69296dd4e8efb9a47530779362dfbd0d (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-4.png,1607093672 differ
blob - /dev/null
blob + 726154c8030abd30c5817c0d8861bcb58e812342 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-5.png differ
blob - /dev/null
blob + e8b0a21d512447fe2c98c46c66ba20e1455873f2 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-5.png,1607090579 differ
blob - /dev/null
blob + f85be3d024f37fa714e1d31d38a591d57b7bfa9a (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-6.png differ
blob - /dev/null
blob + c1e8566da456b92317bd7c721c44c3c343bf0fda (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-6b.png differ
blob - /dev/null
blob + d6637dc41f95a0fcda7539f3535de8fb74bb29c2 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-6c.png differ
blob - /dev/null
blob + 6dc1963a42e09b5b692f2c45241ef35a99c0e9ff (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-6d.png differ
blob - /dev/null
blob + 2d996a6b4e463e3bbd807aa9102246fb4ecf27e7 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-6e.png differ
blob - /dev/null
blob + 8e23f712847714279438f355de4f94d6468095d7 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-7.png differ
blob - /dev/null
blob + 75fa10112531f9b5640b4c63c17cfe41215a3d18 (mode 644)
Binary files /dev/null and uploads/Openbsd/install67-8.png differ
blob - /dev/null
blob + 3a6578d8db9e006309c56dfdc9ea5b7c99d6e15d (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-1.png differ
blob - /dev/null
blob + 308b12f2b9fe77a0624b4f255a4751639a43c495 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-1.png,1607251858 differ
blob - /dev/null
blob + 3a6578d8db9e006309c56dfdc9ea5b7c99d6e15d (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-1.png,1607251928 differ
blob - /dev/null
blob + 9e609a5426bac6bc72e2f8b380b72ec4c474d737 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-10.png differ
blob - /dev/null
blob + c1e8566da456b92317bd7c721c44c3c343bf0fda (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-11.png differ
blob - /dev/null
blob + d6637dc41f95a0fcda7539f3535de8fb74bb29c2 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-12.png differ
blob - /dev/null
blob + d932244e18f147faeb8dd074afc5cb0a9ced6481 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-13.png differ
blob - /dev/null
blob + f639741e48eab303c14883608f811a262d65ea50 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-14.png differ
blob - /dev/null
blob + aa560f0d442962820dc71c700e1c50c621740231 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-15.png differ
blob - /dev/null
blob + b5b0d2d1134122afcbe7b13a504f1065de070b76 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-15.png,1607254387 differ
blob - /dev/null
blob + aa560f0d442962820dc71c700e1c50c621740231 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-16.png differ
blob - /dev/null
blob + 41ea207a8f8c41460f1cb8eec853d0d5e0ef701f (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-2.png differ
blob - /dev/null
blob + a83e7a047520e7643d23d4e71f4921b89521e9b9 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-3.png differ
blob - /dev/null
blob + b6895be05a6993b32c324813c9b6cb552323bcef (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-4.png differ
blob - /dev/null
blob + 4f42464218063736284862bb71c142f05ecc84a7 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-5.png differ
blob - /dev/null
blob + ea965e84a9ebc7d91ba698790e76a3e0555cef66 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-6.png differ
blob - /dev/null
blob + 85a90df8e416f915b4615d5a8468a212df3209e4 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-7.png differ
blob - /dev/null
blob + c66762a310921430e87c4364bf64653d7b7b70b5 (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-8.png differ
blob - /dev/null
blob + 702ca4f1f68043f53231c7a4da2cba8f3ad8d91e (mode 644)
Binary files /dev/null and uploads/Openbsd/install68-9.png differ
blob - /dev/null
blob + 9ccc9d7836b018616ef1f5bf874725b14d709450 (mode 644)
Binary files /dev/null and uploads/Openbsd/outofmemory.png differ
blob - /dev/null
blob + 9059a6f159878de8ee7aba58a9de82431000497b (mode 644)
Binary files /dev/null and uploads/Openbsd/scsi_xfer_pool_exhausted.png differ
blob - /dev/null
blob + 14a5634c7f059d2e99b7dd28df4b2057dbef4d78 (mode 644)
Binary files /dev/null and uploads/Openbsd/slrn1.png differ
blob - /dev/null
blob + aeb85e0abdf757907c2e0755627a845bf6dc5c89 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-1.png differ
blob - /dev/null
blob + 22cd4d35ce0cc8294fa2acf5972c8226f4234dcb (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-1.png,1607740300 differ
blob - /dev/null
blob + aeb85e0abdf757907c2e0755627a845bf6dc5c89 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-2.png differ
blob - /dev/null
blob + 34273e2b99caf7e0672580fda645f80c3075c458 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-2a.png differ
blob - /dev/null
blob + ad8ee613a27f611902dc2b5163927a8f25341535 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-2b.png differ
blob - /dev/null
blob + 6afef133af52b025dfd5734fb2f0b6f99b351d8a (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-3.png differ
blob - /dev/null
blob + f942a0896cd2868d8c13704684c1c529dd3844fc (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-3.png,1607690730 differ
blob - /dev/null
blob + 8da0dc501cab56ef1539fb1ad02a0315f341cd0c (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-4.png differ
blob - /dev/null
blob + 144e1c34b9ebd6481c21358c0a2cc163efb096eb (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-5.png differ
blob - /dev/null
blob + 18a6e7e7e43b563e6841165ff005548ba3ce0035 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-6.png differ
blob - /dev/null
blob + 1ad98e272953ab53353cfa9d512273d904853ec0 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-7.png differ
blob - /dev/null
blob + 3d64f6c5335266c9729efd27ef9325d5b7841ab3 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade67-8.png differ
blob - /dev/null
blob + 671eabcf377e45bf313e33add297d6c5f60deafa (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-1.png differ
blob - /dev/null
blob + 3a6578d8db9e006309c56dfdc9ea5b7c99d6e15d (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-1.png,1607790323 differ
blob - /dev/null
blob + 0bbfd5ea6b4396a9c5b82cfe8377da7b906dc66f (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-2.png differ
blob - /dev/null
blob + 75b9bbe4ca88fcdf524ec644d4d5bafef27e1413 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-2.png,1607790354 differ
blob - /dev/null
blob + 257e076c7b94178e7a1c0fc74d7997baf9c07777 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-2.png,1607790371 differ
blob - /dev/null
blob + e3f9fc7c88a736a0851ae2e4c9bbb21c84df606c (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-2b.png differ
blob - /dev/null
blob + 02f240ce16211fb3e165a51576d9350dfccca82e (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-3.png differ
blob - /dev/null
blob + 10750576d6a9b9129e168a70f5c15fefa967c6d5 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-3.png,1607790388 differ
blob - /dev/null
blob + dd41e79ac4309f546f8ed659b121fdb1cd10bb98 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-3b.png differ
blob - /dev/null
blob + f2a32f73992e5e19d683638d4811003be7f3e994 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-4.png differ
blob - /dev/null
blob + 3b1e57ef19df5fd092aafbf6d99693fe835313e9 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-4.png,1607790726 differ
blob - /dev/null
blob + 8ed01aca0fe42ff25e4f23551b4552ce9dd0bd0d (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-4.png,1607790797 differ
blob - /dev/null
blob + f6291f8d146358647bb11d973070edb4dcbd3722 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-5.png differ
blob - /dev/null
blob + 311911662d204b5bc1b72f91201196ea5fceacc8 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-5.png,1607790826 differ
blob - /dev/null
blob + 972da6c0b09725183f42602123af4c3432f49737 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-6.png differ
blob - /dev/null
blob + 0f8b8063a0c50969b3287175d8290ca1494354d0 (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-6.png,1607857683 differ
blob - /dev/null
blob + 1defefb7f9544b7b65631363d91a9bd72406034a (mode 644)
Binary files /dev/null and uploads/Openbsd/upgrade68-7.png differ
blob - /dev/null
blob + 91d49a6ab35d17943e9b8704cd05d46fa1ac9404 (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-1.png differ
blob - /dev/null
blob + b9800afc444fb8ad166a839c62f6e2c28e4dea8e (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-1.png,1607332274 differ
blob - /dev/null
blob + 145461b90965276ecd5080cf7273d70e624d0bac (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-2.png differ
blob - /dev/null
blob + 7af0b0bcb0c21fb72dfa00f6dff4007abe201026 (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-2.png,1607333279 differ
blob - /dev/null
blob + 145461b90965276ecd5080cf7273d70e624d0bac (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-2.png,1607333524 differ
blob - /dev/null
blob + 7af0b0bcb0c21fb72dfa00f6dff4007abe201026 (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-2.png,1607333636 differ
blob - /dev/null
blob + 7af0b0bcb0c21fb72dfa00f6dff4007abe201026 (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-3.png differ
blob - /dev/null
blob + fb370824fe630e522550ee4c5d3aa29fe57417a6 (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-3.png,1607333651 differ
blob - /dev/null
blob + e8ad86845957fc8c39b8492d13f3f306fb136247 (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-4.png differ
blob - /dev/null
blob + f1192c4a16bcf55544219dae124934b57e987c34 (mode 644)
Binary files /dev/null and uploads/Openbsd/vmminstall-5.png differ
blob - /dev/null
blob + db843880b2e0a47183683914ea883856b54e6310 (mode 644)
Binary files /dev/null and uploads/Openbsd/xfce-desktop.png differ
blob - /dev/null
blob + d9f86c0474ab1527b0486070c1689e8ed2d00ddf (mode 644)
Binary files /dev/null and uploads/Openbsd/znc.png differ
blob - /dev/null
blob + d9f86c0474ab1527b0486070c1689e8ed2d00ddf (mode 644)
Binary files /dev/null and uploads/Openbsd/znc1.png differ
blob - /dev/null
blob + 83e2089e3805629b40b7ec3934bdd1bf565bd683 (mode 644)
Binary files /dev/null and uploads/Openbsd/znc2.png differ
blob - /dev/null
blob + 5e418f79f4246616211d567a56981f71e598cafe (mode 644)
Binary files /dev/null and uploads/Openbsd/znc3.png differ
blob - /dev/null
blob + eb3278194f7a351b59060b4688f84e7096155dee (mode 644)
Binary files /dev/null and uploads/Openbsd/znc3.png,1611547081 differ
blob - /dev/null
blob + a3cae9a58795781c55cf347ada225cba586eaf3f (mode 644)
Binary files /dev/null and uploads/Openbsd/znc4.png differ
blob - /dev/null
blob + 0a85b497b899bd8ece733f5320714ed6d611839e (mode 644)
Binary files /dev/null and uploads/Openbsd/znc4.png,1611547397 differ
blob - /dev/null
blob + 938f67cd9a2e069abe75d914f3bdf32d04fed154 (mode 644)
Binary files /dev/null and uploads/Openbsd/znc5.png differ
blob - /dev/null
blob + 7efb308f659c1aa15f3fafb615cfc54ac2b0bf91 (mode 644)
Binary files /dev/null and uploads/Openbsd/znc6.png differ
blob - /dev/null
blob + 6a0ee1df1ef04c5123891f128ac861d5eb209505 (mode 644)
Binary files /dev/null and uploads/Openhttpd/ssl-cert.png differ
blob - /dev/null
blob + 60b042b88785c8747ddd6273df3c15318bd09f30 (mode 644)
Binary files /dev/null and uploads/Opera/1.jpg differ
blob - /dev/null
blob + e357e438d0b4359748d0ff4d6b3d06a33330f58e (mode 644)
Binary files /dev/null and uploads/Opera/10.png differ
blob - /dev/null
blob + 94cb95ee42978e607a56167313df08f74a3d3238 (mode 644)
Binary files /dev/null and uploads/Opera/10b.png differ
blob - /dev/null
blob + b6b7e6c538858119033ea90ae794c67b0fc6edf5 (mode 644)
Binary files /dev/null and uploads/Opera/12.png differ
blob - /dev/null
blob + 89ec72916caa7993f1238ee7cdbab67417037800 (mode 644)
Binary files /dev/null and uploads/Opera/2.jpg differ
blob - /dev/null
blob + 53ee289b730149761fb985c24176e0dcd2d97d57 (mode 644)
Binary files /dev/null and uploads/Opera/3a.jpg differ
blob - /dev/null
blob + e13dd1f5cabb285184a2ce24855eaabb9cf77033 (mode 644)
Binary files /dev/null and uploads/Opera/4a.jpg differ
blob - /dev/null
blob + 89ec72916caa7993f1238ee7cdbab67417037800 (mode 644)
Binary files /dev/null and uploads/Opera/6.jpg differ
blob - /dev/null
blob + 89ec72916caa7993f1238ee7cdbab67417037800 (mode 644)
Binary files /dev/null and uploads/Opera/6a.jpg differ
blob - /dev/null
blob + 70d78001521f385f69cd6a36dac3149da6364800 (mode 644)
Binary files /dev/null and uploads/Opera/7.jpg differ
blob - /dev/null
blob + 4c73696d4576eca1fbd80a0b9cad4503d755665b (mode 644)
Binary files /dev/null and uploads/Opera/8.jpg differ
blob - /dev/null
blob + e357e438d0b4359748d0ff4d6b3d06a33330f58e (mode 644)
Binary files /dev/null and uploads/Opera/9.jpg differ
blob - /dev/null
blob + f0f70b99a175fe193af5f64e22280a4232bd2321 (mode 644)
Binary files /dev/null and uploads/Opera/o3.jpg differ
blob - /dev/null
blob + 6325cfe86ec3d07990f6642222290a35b2904c70 (mode 644)
Binary files /dev/null and uploads/Opera/operamail-setup1.jpg differ
blob - /dev/null
blob + 6325cfe86ec3d07990f6642222290a35b2904c70 (mode 644)
Binary files /dev/null and uploads/Opera/opmain differ
blob - /dev/null
blob + a751e36ca6141a707f3c4a36f4ae4465453820ef (mode 644)
Binary files /dev/null and uploads/Outlook/outlook01.jpg differ
blob - /dev/null
blob + 0a8314ae8850ef318b24bd22430eab171095f245 (mode 644)
Binary files /dev/null and uploads/Outlook/outlook02.jpg differ
blob - /dev/null
blob + 683db50d91c1590834dc57a4a8256e1549201b14 (mode 644)
Binary files /dev/null and uploads/Outlook/outlook03.jpg differ
blob - /dev/null
blob + 3e13491c340bb8c739d1d56a6d85dd086c0e48b3 (mode 644)
Binary files /dev/null and uploads/PSFTP/PSFTP01.png differ
blob - /dev/null
blob + 0e06854e2b08f2767942fdb09cc5272b5a9562d8 (mode 644)
Binary files /dev/null and uploads/Password/Beatles_VI_Tracks.png differ
blob - /dev/null
blob + 12e6663ddff9f34786709ac64c37f5d3496fc16b (mode 644)
Binary files /dev/null and uploads/Password/pmwiki_action_crypt.png differ
blob - /dev/null
blob + 8c87a2ec96800187c49b7def6edb66960094b4b0 (mode 644)
Binary files /dev/null and uploads/Pidgin/pidgin-accounts.png differ
blob - /dev/null
blob + cc6fbb10ba30d2ec0bee329deb3db4542e8a68ad (mode 644)
Binary files /dev/null and uploads/Pidgin/pidgin-createaccount.png differ
blob - /dev/null
blob + fd29f2648e882670d49a8e964aa606bc400f5e76 (mode 644)
Binary files /dev/null and uploads/Pidgin/pidgin-modifyaccount.png differ
blob - /dev/null
blob + d4a0663762b6d4d57eb7034b65cdce4875cf69bb (mode 644)
Binary files /dev/null and uploads/Pidgin/pidgin-registrationsuccessful.png differ
blob - /dev/null
blob + 453fae13bb027925559b7dd80238d8db3f076579 (mode 644)
Binary files /dev/null and uploads/Pidgin/pidgin-registrationsuccessful.png,1637141593 differ
blob - /dev/null
blob + f98136079c23ffd533c9b212d6c1dbda8db854e9 (mode 644)
Binary files /dev/null and uploads/Pidgin/pidgin-welcome.png differ
blob - /dev/null
blob + e906426e7fac1cf735907e181d1ecfc6d9e71d10 (mode 644)
Binary files /dev/null and uploads/PowerShell/win10-ssh2.png differ
blob - /dev/null
blob + 1beaa58c20463fcba11265642337fa77cae2662d (mode 644)
Binary files /dev/null and uploads/Profanity/01-addingaccount.png differ
blob - /dev/null
blob + e1253fb6ed03435e8e19abccaa0c29229de206c0 (mode 644)
Binary files /dev/null and uploads/Profanity/02-connecting.png differ
blob - /dev/null
blob + 5f3f81b9a182a0f44c142fbf5acd049721629baf (mode 644)
Binary files /dev/null and uploads/Profanity/03-password.png differ
blob - /dev/null
blob + 225e6646d090f659f8ad9568e06bf3d9179a5ded (mode 644)
Binary files /dev/null and uploads/Profanity/04-autoconnect.png differ
blob - /dev/null
blob + 4bca8bddd64601f911a460c0aff2d3a805811e42 (mode 644)
Binary files /dev/null and uploads/Profiles/aaronlin.png differ
blob - /dev/null
blob + 4ce215c9a619be833a184d633f7df3378a94beee (mode 644)
Binary files /dev/null and uploads/Profiles/awake.jpg differ
blob - /dev/null
blob + 5775d9137bb6289d6483f0ad03e306fd813f53ba (mode 644)
Binary files /dev/null and uploads/Profiles/fishlinux.jpg differ
blob - /dev/null
blob + 1fe8cc37f50ab1c5a7133f5ee3782c0c3e23dd4e (mode 644)
Binary files /dev/null and uploads/Profiles/rust.jpg differ
blob - /dev/null
blob + 948b3f20fc2d9711c3244423486cdb1e38dd48a3 (mode 644)
--- /dev/null
+++ uploads/Profiles/xfnw-pgp-2022-11-28.txt
@@ -0,0 +1,130 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mDMEX9u9/xYJKwYBBAHaRw8BAQdABcKRWa0O8aKqLLhr/iLn6ahMlk3/SUML97RY
+l5tQIIe0G093ZW4gQmVsbCA8eGZud0ByaXNldXAubmV0PokBgQQTFggBKQIbAwUL
+CQgHAgYVCgkICwIEFgIDAQIeAQIXgAUJBKJk7H4UgAAAAAAQAGVwcm9vZkBhcmlh
+ZG5lLmlkeG1wcDp4Zm53QGhtbS5zdD9vbWVtby1zaWQtMTU4ODU0OTMwPTUyMThi
+NzY4ODgwMjNkOTBhMjIwMjFjMDM2YjQxMGE0ZjFlMTk2ZmE3YWRiZDEyOGNjODkw
+ODY0NjE5YjE2NTAzFIAAAAAAEAAacHJvb2ZAYXJpYWRuZS5pZGlyYzovL2lyYy5s
+aWJlcmEuY2hhdC94Zm53NBSAAAAAABAAG3Byb29mQGFyaWFkbmUuaWRkbnM6b3dl
+bi5iZWxsei5vcmc/dHlwZT1UWFQWIQQ9yUGylg2TD4XB8Q9h4ZnNPoLuRgUCYtYi
+XAIZAQAKCRBh4ZnNPoLuRu58AQCZEh0tjpfGMEDvdtwx9UEqoL9kk2+gncaR4VxH
+c+zSSQD/Y+J9W6NOis35ffDAI0mSXBxoE2No+kkhcujkfvIEDQSI/wQTFggApwIb
+AwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAUJBKJk7BYhBD3JQbKWDZMPhcHxD2Hh
+mc0+gu5GBQJiztoXNBSAAAAAABAAG3Byb29mQGFyaWFkbmUuaWRkbnM6b3dlbi5i
+ZWxsei5vcmc/dHlwZT1UWFQzFIAAAAAAEAAacHJvb2ZAYXJpYWRuZS5pZGlyYzov
+L2lyYy5saWJlcmEuY2hhdC94Zm53AAoJEGHhmc0+gu5GkKwA/jwDFFZLqZFXITrH
+MX5OZGn1BizTFZadWT0Ybt8ZZVp6AP9+9GNSN5546R/+arYDeyhXH+blzFzy6ADC
+Tlo3lzxWCojKBBMWCAByAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheABQkEomTs
+FiEEPclBspYNkw+FwfEPYeGZzT6C7kYFAmKn24czFIAAAAAAEAAacHJvb2ZAYXJp
+YWRuZS5pZGlyYzovL2lyYy5saWJlcmEuY2hhdC94Zm53AAoJEGHhmc0+gu5GUQIB
+AJIpN47nx68WU9icb3h+nyqW+v7AMgaqVm32W7C5UCo2APkBjgqRhzjfumsA2uh8
+lHJWCUrmAWix20kEdxQGUO38AIiWBBMWCAA+AhsDBQsJCAcCBhUKCQgLAgQWAgMB
+Ah4BAheAFiEEPclBspYNkw+FwfEPYeGZzT6C7kYFAmKc72sFCQSiZOwACgkQYeGZ
+zT6C7kZGmQD+Ou5UBUnlFfNQVmCPz1i8CKk2jMXO9OXxluLTkMvHR7ABAK9V9SGP
+q1ud3j1KUwU9GtnpPekLvC4jI0fOWisJgloMiJYEExYIAD4CGwMFCwkIBwIGFQoJ
+CAsCBBYCAwECHgECF4AWIQQ9yUGylg2TD4XB8Q9h4ZnNPoLuRgUCYCx4bwUJBBMh
+cAAKCRBh4ZnNPoLuRpH4AQD9M861xKfgEyMVM6Oie6IVesHOu9UD0VQokKTdBvok
+kwD+KN/pMKiuZMYzblbe/GddHd2yEF4dpDRCWqQD67vmkgOIlgQTFggAPhYhBD3J
+QbKWDZMPhcHxD2Hhmc0+gu5GBQJf27/lAhsDBQkB4TOABQsJCAcCBhUKCQgLAgQW
+AgMBAh4BAheAAAoJEGHhmc0+gu5G89EBAIHHJotbXaziYEux7l9v9bkL5z72lWFX
+VAT9jrap99etAP9VbaVek7SGodhGGZ0eFpvRFO3BTfs45zhEYLbnzfPIAIkBfgQT
+FggBJgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAUJBKJk7BYhBD3JQbKWDZMP
+hcHxD2Hhmc0+gu5GBQJizuNYfhSAAAAAABAAZXByb29mQGFyaWFkbmUuaWR4bXBw
+OnhmbndAaG1tLnN0P29tZW1vLXNpZC0xNTg4NTQ5MzA9NTIxOGI3Njg4ODAyM2Q5
+MGEyMjAyMWMwMzZiNDEwYTRmMWUxOTZmYTdhZGJkMTI4Y2M4OTA4NjQ2MTliMTY1
+MDMUgAAAAAAQABpwcm9vZkBhcmlhZG5lLmlkaXJjOi8vaXJjLmxpYmVyYS5jaGF0
+L3hmbnc0FIAAAAAAEAAbcHJvb2ZAYXJpYWRuZS5pZGRuczpvd2VuLmJlbGx6Lm9y
+Zz90eXBlPVRYVAAKCRBh4ZnNPoLuRk+NAP4v0SY3fKJ/PHrl25Nh4Mw3am/jxCuX
+IgHWsgJY8suisAEAzXaDp0hZ1BDbIIxB8E02aInfxc/Os5EXSPfobY+JGgqIlgQT
+FggAPgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBD3JQbKWDZMPhcHxD2Hh
+mc0+gu5GBQJhuSdABQkDvpzBAAoJEGHhmc0+gu5GldYBAKGeGQTOsKSBIvvy79vt
+0XL/TLQ+WdYg57GeHjSRRs5cAPwJAasJV09oxCDZIAiuS9Rb6GCqr/sa1lokFFr6
+lMPBC4h1BBAWCAAdFiEEUSXp5Ft7SCLdkBymFPheftaolJgFAmOEMxAACgkQFPhe
+ftaolJi19wEAsmPuQYGp72cknbGr3MJJO0i5WMEp4SqNM4RYZy3iPpEBAJ9hrhHA
+QWsEoYDm3BsEkMGBQBMTZtNUQ71FUOLq4BwLtBZ4Zm53IDx4Zm53QHJpc2V1cC5u
+ZXQ+iJYEExYIAD4WIQQ9yUGylg2TD4XB8Q9h4ZnNPoLuRgUCYtYdaQIbAwUJBKJk
+7AULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRBh4ZnNPoLuRoDUAP9M5+In/ibk
+93I4wP26VqN7U+CJYQOuk2//vBHQ+KE8EgD9GMmH2eoAyDyIEuUCU1k9veVHfedu
+DUUiRYhDcBucqwiIdQQQFggAHRYhBFEl6eRbe0gi3ZAcphT4Xn7WqJSYBQJjhDMW
+AAoJEBT4Xn7WqJSYTVcBANsVN/sbHysAD5+7HS/fp5gYD2tRsyBHJL6t25eRC7Sk
+AQCJmMFgT7J14fzgRy0CL7DzmaD061p//ZmV5eGfpB8HDbQmWGZudyBLbnV1ICht
+eSBlbWFpbCkgPHhmbndAcmlzZXVwLm5ldD6IeAQwFggAIBYhBD3JQbKWDZMPhcHx
+D2Hhmc0+gu5GBQJf28AUAh0gAAoJEGHhmc0+gu5GiyYBAMsHSUxy2zADK+dRorwG
+/QTalG/uhDh1JJJrMDPGCYbbAQDy4jjj37J8X8Yxc/6hdBCjZxydDhaOh1x8gK9B
+pINZArg4BF/bvf8SCisGAQQBl1UBBQEBB0C6GIrkkBWLNzQy0wbdPFM4vNDH1Gno
+bG3UqnycF+qvEQMBCAeIfgQYFggAJgIbDBYhBD3JQbKWDZMPhcHxD2Hhmc0+gu5G
+BQJinO90BQkEomT1AAoJEGHhmc0+gu5GipgA/idVAT6Py8s/oe7WuwdAmNUT1wCv
+P5f9jVzL1vxO82cRAP9R8nNXDc4cwXRJBBxOjv5EL+mKQFqmOajWFnBVnLhsC7gz
+BGK2ErkWCSsGAQQB2kcPAQEHQJa3LOaZ93kxxK8KziKNeFlgG3k6V44DOe4Gkct9
+1QUfiPUEGBYIACYWIQQ9yUGylg2TD4XB8Q9h4ZnNPoLuRgUCYrYSuQIbAgUJAO1O
+AACBCRBh4ZnNPoLuRnYgBBkWCAAdFiEEnF2MLg1eiclYqXUjp1+pqH5EeuAFAmK2
+ErkACgkQp1+pqH5EeuDZswD+KLzhIt7nF568giO2WSoJo8m3Ff/chdipRkc6aTfA
+1nwA/RDfU16YdGY90NixzM14SYdfoLOGxr8kaBlwx4CUt1wAoyIA/jxWdRPQ0u5d
+YiFf7PjMvrPsRKX5kM/pRzFaY7OQTkcKAP43Cuqq7tBYY5oYsOQ+cBtMWklcHOp+
+swsYIgQcp5lJBZkBjQRhCF/fAQwA1ooM128fR04htcrHUih3bSjCvNN/PtOwQZHc
+V+Fi2pvlhuPa3SUYoLxyj6xiwaj+dpttPCNopjxwrm0p15vTNXENe7ajd6xqWVqX
+iX2+seqMfzXTaARl0WjHHqDDz/eXbeICorYVo7YClVXNKLIZ2CDLvjg89+UQXyHX
+ZRbjXofpRl3QrCbJke3qN9uiy4PqU8GR8/e/Uc6pXObEqU3njLPFUzII/+yw0CT0
+2FtPAdi2V67hMhhHvm4G0p05k0fsPaQh8YSFqQhDd3hAHKTdaBEn/POMYiIY0lLC
+c4YSGrkMuuLaIfcNmQgef4hZYXkJIgG1viJbrTLEVyp2mGThBt3RlVlEWjmvQuI+
+HhYAg9FAKUopANJQO1jV+gtz06GwANweBRtrXSynDyW0LUz4nvLp6AhCnUoxQOCi
+m7H4COEIywd4739qvcsLaeZw9AN4mOsSGioFrHDvabNITSHCuQ6/MURHiikcyIqg
+e4x/3Xc35flDh4INzAXBve2lFCFFABEBAAGJAbYEIAEIACAWIQTZXmBAaElorMam
+ybJCBxybvr5YbAUCYQhf7QIdAAAKCRBCBxybvr5YbGdHDACtkpDU69QB/yS7yShX
+I6Z1HLNRT7foso3E/mau1s19kYg5N8L18/D+PFzJOJHHUyq26ee56VLMlG7aI1lP
+BTgEUBfjvp7hwqzRNlY9wrML8Q7GCw+q9Vneg6cGxSglGGN8PKVlpykuhkEsKBrx
+LJII+dzpGrpEX4hq3alayUSOWKTj7B0lZO4pe8kuXlaYQCnjoJleustX+wRmh6EG
+xbUIer1seUbN0cMtqF1JpGxN3YT0FU0NQE2Jcjrm6jlWiSza+3+sYhOfVEVYhL1h
+Jq/Q8E4W/mmbWbJlQFHCQmMG/DqwAh2oVdnyaxHH4h2v/Uz6BTYfwRQ/S6vU2Spg
+zntw0H2QKxNxDE5BPEZYcT/A4+ogbmcb8Y4RkB+m59HkjtxQF8Ybsx8GSnjsAe6l
+2A3V3x0wWnZD9kY1y5q8BvEDfSIEEmozPWaqnUGO5FQcjufFvqWksqFmcLPi+hWA
+veBWr0jNKPzEQ8ESy4VpXUwGSDflyf932zQnTVyPWfC5Cg20Inhmbncgb24gZnJl
+ZWlyYyA8eGZud0BmcmVlaXJjLm9yZz6JAdQEEwEIAD4WIQTZXmBAaElorMamybJC
+Bxybvr5YbAUCYQhf3wIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK
+CRBCBxybvr5YbI9BC/9rPk+oe8fl8mYmJhahnkml90EGdEjNhFcIaENuaU+bHZ+E
++o6hNE+Z4gZ/ctIDN0v1cmmowpoU6Psu8hDSuBhU8oE4y/hpBUDfQcGWaryAcK32
+HZ0mESu+DJg/jRpiuszTXuubwwsgwR8FPRcOS04Pz/AZ7cDzD3Ak1tcxmy30RXvv
+nYXnyC0G0xHx0pRajNmEJ2vcNwacrK/agA6zvMLQmTu157JryYtqrCqAn4E0XL+Y
+nkEKidrMbPAOu2sG74wRIBs6F0o6eFFd3+ZEoMZNWNbQVLa5BRJar1QXBHB9YAhL
+1RFFDAXtZ0JgNyFm4FiLI0BD746ETamFou809Ze5ELTpdleFjve57ezr2EMRn8MT
+NAPAI3nm3lNiE44d0pxk2tWIg+Gje3MKFDl79ke/TWbG45Df5CM7+H7e0M3v5X6Y
+asfiwyuGahUNjdzO9noH85wx2NtnwvCzmaCA4UmbVJOu8+AB3c65ZGXaCKwjVa3S
+flpix8yYfqStEVbQYum5AY0EYQhf3wEMALrV1GD0V5oW72dE3ZcOxJ7KCXoZg6ib
+TrNmIeE7UPwPaNzKz9iL1Es0Ns1/TMtRmBJvGh0Ol6ocAhlwIiTrUEgn6dlopix2
+6iah7w40Jr7cUcFbutwice6EZ/AAZR7HwIncvfDVf6RLorzvQ157K8Yu6wWl+eGi
+NgRQQ12Tt7V8AA2hSjDMUdDMICT2NCn4bgnEe65r9QVOuLKwkO6ADi35/HF0beqS
+2sk6oOysWyNP6uIGlYgYS8MMIfCm70ria9R4iD/unxGn7L6JSzdLeJoNs/BTmfSO
+1qn51uUsqGDV2Mqo1Pt3sWcOfjiI8+WtRhvvBke3BHUu3A2W8gghky8fZzgL3bF6
+6S1jVCcewlMMIgmOIqblf5mpMW2AQqHbsx6YelqxOy0Z0fjTFiFl04XY8nyv3IZA
+enVjkJ/pLrwrkQA0vrGCU5t+0Cw4Yi8uHdl7E9ma2K1a3WGkr3f0wQmgc7nbkaLU
+ZC54bN7sp0eJJhI8vMBYNqW7IS4qAR38mwARAQABiQG8BBgBCAAmFiEE2V5gQGhJ
+aKzGpsmyQgccm76+WGwFAmEIX98CGwwFCQPCZwAACgkQQgccm76+WGzCzgv8DWTQ
+GFeKVVh8VX+BOUKytRwt24/IJEHhrWLQdaLTOCWs7zQhJ47KYWqmbERHaMftJBQh
+28tIudYzyBjZw8XQTo6rl03uZMMZHixL8hpTfQ/qh7D/Itw8A2k8+HrW/o7/9FYu
+2x7gawo4yUR8ZWwwfBRlXH8bcRuvjc7SAGWshRUoWl7RIgeS5PNPVabF46JAw1ey
+7B8AC85u/R1OdfZ053iVb8Nac1hRc14rMo5j4xAdjLGX9DicUxgMsVZdgx/EnC0/
+9UmYCUfTyk0Wrj05iqwOUC+yEg74n3FQwOVoWmH+OcnLANENWM7UZRvoEmUFIpT+
+oDnlBX7ttTg1aWm1IRKk8GHnFJ6vjIxpC75cO2UElGnWR2AeMtb1nMRPcg0Z5ajQ
+BSNu5DE86LK14Cw9IIqgZQVx+Xgsk6xVPc2Fj5SibOyZmmaVFLTrpE3fy9vWjTAW
+qyUeKk02mW/jYherGZ2ZyXc8dJb2V+muXG7WCYW+il7e3eXwwbrpU9tBSzJhmDME
+Y4QtyhYJKwYBBAHaRw8BAQdAP+0szOWxdmUJoCyhlkyQQQ40oSh03Nc2VbAjeg8p
++mi0JXhmbncgKGZyZWVpcmMga2V5KSA8eGZud0BmcmVlaXJjLm9yZz6IlgQTFggA
+PhYhBFEl6eRbe0gi3ZAcphT4Xn7WqJSYBQJjhC3KAhsBBQkAdqcABQsJCAcCBhUK
+CQgLAgQWAgMBAh4BAheAAAoJEBT4Xn7WqJSYYGYBAKRFyotw3RN2Jp869CoSxX4K
+Q2+lyuKfeOBJ7SVKMj3iAQDz6LLe1iqerMiXpVJbE/Jvll/V36zSK+HKoDzpd8NC
+Aoh1BBAWCAAdFiEEPclBspYNkw+FwfEPYeGZzT6C7kYFAmOEL9AACgkQYeGZzT6C
+7kY4tgEAp+wwYKx3zFAwbMwzgb/p+UJmaN7SW+Xqq63uVFaYWs8A/0IjuLFAXPtC
+Rnp+IVGtpPhVUrdCEaCjwm2fHTfhO9oMuDgEY4QuaBIKKwYBBAGXVQEFAQEHQIGg
+epFFaDw/m4RGGaPd6vPhQNr7r4wf7g6Tp3VoZSkSAwEIB4h+BBgWCAAmFiEEUSXp
+5Ft7SCLdkBymFPheftaolJgFAmOELmgCGwwFCQB2pwAACgkQFPheftaolJiOywEA
+/SEOiIfKt4rZNbSPrI+iaApuLxkPDevuSnxlle+ydAMA/3jXM5Tj3lykG4K+zovZ
+dfMNFp4qrStnAt6bIHfuzGkGuDMEY4QuVhYJKwYBBAHaRw8BAQdAfgil/vPbp5jk
+lnYe+pfdnav5BfmMgTDjqbaBYVim40CI9QQYFggAJhYhBFEl6eRbe0gi3ZAcphT4
+Xn7WqJSYBQJjhC5WAhsCBQkAdqcAAIEJEBT4Xn7WqJSYdiAEGRYIAB0WIQRSfNiB
+fxzf9OEBin4cJ8V0f30SIQUCY4QuVgAKCRAcJ8V0f30SIbu/AP95lAAjOoqkFMkC
+oZn0UTKwZ2L8caG3AqXuWBsIHpgFFAD/Xu6Oicjv7zrV0n9bZZuLaSGq0VAyfChd
+vuqaMypACA7sIQEAkEdaKTdIjB0QNulp44SsSlAx08IIJoX86sYopIL2tgYBAPbe
+PhaRnPvdicAC4JWpOa1o5R5TWMTI0Onk+LlyUNAO
+=9Zza
+-----END PGP PUBLIC KEY BLOCK-----
blob - /dev/null
blob + f23e17013edf034d0945773d89a486e57d4b453b (mode 644)
Binary files /dev/null and uploads/Profiles/xfnw.png differ
blob - /dev/null
blob + 59ca9f3861416d047853170c4bb7cd6315aaf13a (mode 644)
Binary files /dev/null and uploads/Psi/psi-accountsetup.png differ
blob - /dev/null
blob + cc4042e19ef9bb49c0aab4619266670ee193784f (mode 644)
Binary files /dev/null and uploads/Psi/psi-chooseusername.png differ
blob - /dev/null
blob + 84063a15bd98bfbb5bef4781703362771b7e68cf (mode 644)
Binary files /dev/null and uploads/Psi/psi-contacts.png differ
blob - /dev/null
blob + d409953d0d1f602bec391b2eef8ccbce77c3b544 (mode 644)
Binary files /dev/null and uploads/Psi/psi-registeraccount.png differ
blob - /dev/null
blob + 9fc21d0dbfe709b303522676979a1571b48123d6 (mode 644)
Binary files /dev/null and uploads/Psi/psi-success.png differ
blob - /dev/null
blob + d409953d0d1f602bec391b2eef8ccbce77c3b544 (mode 644)
Binary files /dev/null and uploads/Psi/psi-success.png,1637162572 differ
blob - /dev/null
blob + 5477bf0831a851884ff7539c727aa66e8632bc3f (mode 644)
Binary files /dev/null and uploads/PuTTY/putty-authorized.png differ
blob - /dev/null
blob + fd2853ab51554165542dffa0652f698ed42bc662 (mode 644)
Binary files /dev/null and uploads/PuTTY/putty-config.png differ
blob - /dev/null
blob + 5477bf0831a851884ff7539c727aa66e8632bc3f (mode 644)
Binary files /dev/null and uploads/PuTTY/putty-copyauthorized.png differ
blob - /dev/null
blob + 85bd8a46ae37e0c8cd4953391576b0b595047355 (mode 644)
Binary files /dev/null and uploads/PuTTY/putty-editauthorized.png differ
blob - /dev/null
blob + 1afd1224b4afff71818bdd4ea614f0301d7cc834 (mode 644)
Binary files /dev/null and uploads/PuTTY/putty-fpr.png differ
blob - /dev/null
blob + 53912bd8566ead452a5d9f6c789162f5f970d7c9 (mode 644)
Binary files /dev/null and uploads/PuTTY/putty-keyboard.png differ
blob - /dev/null
blob + 85bd8a46ae37e0c8cd4953391576b0b595047355 (mode 644)
Binary files /dev/null and uploads/PuTTY/putty-keylogin.png differ
blob - /dev/null
blob + b7e8a1b7d65b180de7dd955254c2bf04e271e197 (mode 644)
Binary files /dev/null and uploads/PuTTY/putty-keypassphrase.png differ
blob - /dev/null
blob + 2dd70bfc25c6b684e1b0b5777a27de70c063aa4b (mode 644)
Binary files /dev/null and uploads/PuTTY/putty-login.png differ
blob - /dev/null
blob + 78058523033c9e10e30206bd8dc121b3590af050 (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen-cc.mp4 differ
blob - /dev/null
blob + 173152f1f8b619389c7ddcf81a03b96fa4335146 (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen-cc.webm differ
blob - /dev/null
blob + 7a2c0b7e6d2cfffd53000107c733e0e38cd85e67 (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen-ed25519.png differ
blob - /dev/null
blob + 137729823b7e0b86cd642f871fd52c2dd376b3eb (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen-exportssh.png differ
blob - /dev/null
blob + 6935bad4ebad871bac0baefe7873af2bff1e1a80 (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen-random.png differ
blob - /dev/null
blob + 40693d6646e3fb33c4a5d0c083af4e572ce1e276 (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen.gif differ
blob - /dev/null
blob + 5469006ee2dc6a5bc6a8d53706b36abcb4bd2a7b (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen01.png differ
blob - /dev/null
blob + 3cc028095f76273b4e19b608736bacc52de22f3b (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen1.mp4 differ
blob - /dev/null
blob + f30be04af30cbb47a3104df12f40ad1f2d20d7e4 (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen2.mp4 differ
blob - /dev/null
blob + 6fb4a6e807ad0f01f3b49925bd5cc41ecf96ca70 (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen3.mp4 differ
blob - /dev/null
blob + 21b5a342f7155bbbf8577a8d4906e795a9cdbf02 (mode 644)
Binary files /dev/null and uploads/PuTTY/puttygen4.mp4 differ
blob - /dev/null
blob + ca1d40c6b13114c16a235dabc073198031ea3d59 (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-account.png differ
blob - /dev/null
blob + ca1d40c6b13114c16a235dabc073198031ea3d59 (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-account.png,1630151934 differ
blob - /dev/null
blob + 6440c013fc238ffc1f59dd5c7d31be48a4efbb48 (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-id.png differ
blob - /dev/null
blob + f0a293172c8134b0578f5f1ac8edf2de68c56395 (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-server-IMAP-TLS.png differ
blob - /dev/null
blob + f0a293172c8134b0578f5f1ac8edf2de68c56395 (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-server-IMAP-TLS.png,1630151977 differ
blob - /dev/null
blob + 737a43aae2ae660eda6aa4787fac8f5e8fe36eac (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-server-IMAP.png differ
blob - /dev/null
blob + 737a43aae2ae660eda6aa4787fac8f5e8fe36eac (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-server-IMAP.png,1630151968 differ
blob - /dev/null
blob + 64a2506f518e79446b2965205ceaa83a19c97f88 (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-server-SMTP-TLS.png differ
blob - /dev/null
blob + 64a2506f518e79446b2965205ceaa83a19c97f88 (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-server-SMTP-TLS.png,1630151997 differ
blob - /dev/null
blob + f4ea6e596b7a8d93e89610a7b657ee26370c8d13 (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-server-SMTP-TLS2.png differ
blob - /dev/null
blob + 76a94b64cf79038811440e2d2a6205a4206d47d5 (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-server-SMTP.png differ
blob - /dev/null
blob + 0df4435f6b29b2e9e86effe5914e66979eb60cba (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-server-TLS.png differ
blob - /dev/null
blob + f5887f41eb6eae90dbdb38d2ebf675b73ff5f19c (mode 644)
Binary files /dev/null and uploads/Seamonkey/SeaMonkey-welcome.png differ
blob - /dev/null
blob + 9285924233363a6186d147ef62b72ab137e52fe4 (mode 644)
Binary files /dev/null and uploads/Shell/libertybell.png differ
blob - /dev/null
blob + e6f6c203c4fb2c9e92214b0d15f161a1f8ea29f2 (mode 644)
Binary files /dev/null and uploads/Shell/macterm1.png differ
blob - /dev/null
blob + 0bb4fad24e6424e6e34c2d77739c9fc1a909de1c (mode 644)
Binary files /dev/null and uploads/Shell/macterm2.png differ
blob - /dev/null
blob + 74c85bfa2d1ad27a0465b590d92705a525b4d1d8 (mode 644)
Binary files /dev/null and uploads/Shell/macterm3.png differ
blob - /dev/null
blob + 7eb9de47ad773f55537b169262af051e604103a1 (mode 644)
Binary files /dev/null and uploads/Shell/macterm4.png differ
blob - /dev/null
blob + e2970bfd3bd2cb67dfd4bd21873992c9d35108b9 (mode 644)
Binary files /dev/null and uploads/Shell/macterm5.png differ
blob - /dev/null
blob + fd2853ab51554165542dffa0652f698ed42bc662 (mode 644)
Binary files /dev/null and uploads/Shell/putty-config.png differ
blob - /dev/null
blob + 30bfe61ceb051b45f8cbd0ca61d2ecdbf55ae8e6 (mode 644)
Binary files /dev/null and uploads/Shell/putty-config.png,1613919893 differ
blob - /dev/null
blob + 1afd1224b4afff71818bdd4ea614f0301d7cc834 (mode 644)
Binary files /dev/null and uploads/Shell/putty-fpr.png differ
blob - /dev/null
blob + f213feafe5e983efbc4c9ee8153d5a518e52e6b1 (mode 644)
Binary files /dev/null and uploads/Shell/putty-fpr.png,1613832054 differ
blob - /dev/null
blob + 2dd70bfc25c6b684e1b0b5777a27de70c063aa4b (mode 644)
Binary files /dev/null and uploads/Shell/putty-login.png differ
blob - /dev/null
blob + b2074ad9646f5df3a0cb8e8481005d99cfe1bffc (mode 644)
Binary files /dev/null and uploads/Shell/putty-login.png,1613919940 differ
blob - /dev/null
blob + d1f2885a3262198b3fd66093c25790042082c744 (mode 644)
Binary files /dev/null and uploads/Shell/putty-pass.png differ
blob - /dev/null
blob + 1afd1224b4afff71818bdd4ea614f0301d7cc834 (mode 644)
Binary files /dev/null and uploads/Shell/putty09.png differ
blob - /dev/null
blob + 8401b80f3d027a2e23e14726a3499015761cda72 (mode 644)
Binary files /dev/null and uploads/Shell/win10-ssh.png differ
blob - /dev/null
blob + e906426e7fac1cf735907e181d1ecfc6d9e71d10 (mode 644)
Binary files /dev/null and uploads/Shell/win10-ssh2.png differ
blob - /dev/null
blob + 231d5a712ded4a11e947cca6a233ce12b756e5f4 (mode 644)
Binary files /dev/null and uploads/Siskin/siskin-appstore.png differ
blob - /dev/null
blob + c2feb973cb856ac017831090630c2e51c515f67a (mode 644)
Binary files /dev/null and uploads/Siskin/siskin-chats.png differ
blob - /dev/null
blob + 8c3f669b470f4d2166b2d4e91cc5cd143b0e6f5f (mode 644)
Binary files /dev/null and uploads/Siskin/siskin-home.png differ
blob - /dev/null
blob + b0c6c7c4210603c1515207bef2e1a057af4abd2d (mode 644)
Binary files /dev/null and uploads/Siskin/siskin-preferreddomain.png differ
blob - /dev/null
blob + 42648a8d935b0227e3669c0f9a1bcdda16e03a8f (mode 644)
Binary files /dev/null and uploads/Siskin/siskin-pushnotifications.png differ
blob - /dev/null
blob + 516f1150cc2cb1ecd614bb5256982b27d91239a6 (mode 644)
Binary files /dev/null and uploads/Siskin/siskin-sendnotifications.png differ
blob - /dev/null
blob + 3391ed2e5f9b57dff25914332e8c457c37e2bd96 (mode 644)
Binary files /dev/null and uploads/Siskin/siskin-usernamepassword.png differ
blob - /dev/null
blob + a0fc935662f3896fa36026d06dc2573d19dd3c98 (mode 644)
Binary files /dev/null and uploads/Squirrelmail/Squirrelmail-account-login differ
blob - /dev/null
blob + a0fc935662f3896fa36026d06dc2573d19dd3c98 (mode 644)
Binary files /dev/null and uploads/Squirrelmail/Squirrelmail-account-login.png differ
blob - /dev/null
blob + e7084982d5f5e7bd8c18be047bca25d406b9b45c (mode 644)
Binary files /dev/null and uploads/StorkIM/storkim-allow.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + fe70233fa378fad531af88bd504cacb15b9e0968 (mode 644)
Binary files /dev/null and uploads/StorkIM/storkim-contacts.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 5a208214f3b7bfff3d4c60c5b4943643e905ff08 (mode 644)
Binary files /dev/null and uploads/StorkIM/storkim-createnewaccount.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + f66e9291b9a6357fd72560631068c5a7c5ba71cc (mode 644)
Binary files /dev/null and uploads/StorkIM/storkim-fdroid.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 385f66468b62bc37928b14ab49a515f8131ca76b (mode 644)
Binary files /dev/null and uploads/StorkIM/storkim-home.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + e5fb1dae6c5f470b63a773e7963bc48d8fc2dcf9 (mode 644)
Binary files /dev/null and uploads/StorkIM/storkim-install.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + e330ae51484a823490cc246955822b2eb0221f59 (mode 644)
Binary files /dev/null and uploads/StorkIM/storkim-usernamepassword.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + c1457016eab9c8cc62749150f217219b3277ae36 (mode 644)
Binary files /dev/null and uploads/Sylpheed/Sylpheed-account-done.png differ
blob - /dev/null
blob + 75368e58c85c4bc0a26a66f527532a90ca159262 (mode 644)
Binary files /dev/null and uploads/Sylpheed/Sylpheed-account-name.png differ
blob - /dev/null
blob + 092c9f1c5875f9e4fb157e9cfbe68e7b4276fb9c (mode 644)
Binary files /dev/null and uploads/Sylpheed/Sylpheed-account-password.png differ
blob - /dev/null
blob + ab481a25cbff995263422df7f6b3702d9346e3af (mode 644)
Binary files /dev/null and uploads/Sylpheed/Sylpheed-account-server.png differ
blob - /dev/null
blob + 9a5b244bb49d25dc565ee7bcb079abae5ca9e9d8 (mode 644)
Binary files /dev/null and uploads/Sylpheed/Sylpheed-account-type.png differ
blob - /dev/null
blob + 87685a81a85532fcb055e84b8d9d98c7f20e5cbc (mode 644)
Binary files /dev/null and uploads/Termius/termius-address-port.png differ
blob - /dev/null
blob + 94c0d533b8bf314c7aedaa1676ab254d0961d5a8 (mode 644)
Binary files /dev/null and uploads/Termius/termius-host-verify-fingerprints.png differ
blob - /dev/null
blob + d072a69d295f12f29322051b353e182e405ce5ae (mode 644)
Binary files /dev/null and uploads/Termius/termius-password.png differ
blob - /dev/null
blob + 73b9dad90a3fd4095d3de05b57873b4afb99428a (mode 644)
Binary files /dev/null and uploads/Termius/termius-quick-guide.png differ
blob - /dev/null
blob + 6629463991a005c8704bdd07945da140a2688aba (mode 644)
Binary files /dev/null and uploads/Termius/termius-save-and-connect.png differ
blob - /dev/null
blob + 4c97519c1b096653e0076ae509ffad64304cf938 (mode 644)
Binary files /dev/null and uploads/Termius/termius-trial.png differ
blob - /dev/null
blob + ce3be791a5c74ee785d1ca56bc878dd096d3ae89 (mode 644)
Binary files /dev/null and uploads/Termius/termius-username.png differ
blob - /dev/null
blob + 05855f98a296a0ddcb2181f04635708902b5a07f (mode 644)
Binary files /dev/null and uploads/Termius/termius-welcome-wizard.png differ
blob - /dev/null
blob + cf876074b1add29a51da3925a00873a551ed0d55 (mode 644)
Binary files /dev/null and uploads/Termius/termius-wizard.png differ
blob - /dev/null
blob + b27b644639617ed98dae0c5997b0f95ba12bc276 (mode 644)
Binary files /dev/null and uploads/Termux/termux-logged-in.png differ
blob - /dev/null
blob + 98f5ead971f25d5b5d3e64a27adde070514a9572 (mode 644)
Binary files /dev/null and uploads/Termux/termux-new.png differ
blob - /dev/null
blob + d2edc4f98a81c8fc420a107b4734278e6760b9af (mode 644)
Binary files /dev/null and uploads/Termux/termux-password.png differ
blob - /dev/null
blob + 21340735d3800ee240f369b735c70b30197650fb (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-01.png differ
blob - /dev/null
blob + ae9240f16e934201bdcea1a1cff6dc01db01533c (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-02.png differ
blob - /dev/null
blob + 8b7bbcfeddf2cd390f50405031ba582ffda309ed (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-03.png differ
blob - /dev/null
blob + 1ee12cb7a38f7a5657211b5b1b135984c17169b5 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-04.png differ
blob - /dev/null
blob + 4478d46e9332886ae02470409b9ca7dd24522058 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-04.png,1613746129 differ
blob - /dev/null
blob + 4478d46e9332886ae02470409b9ca7dd24522058 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-05.png differ
blob - /dev/null
blob + ad7f45242961796e46490426ed46eb4a465db837 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-06.png differ
blob - /dev/null
blob + be88c7e51abbe657a91498c72423f82fc3a3e297 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-06b.png differ
blob - /dev/null
blob + 9fc5100d73da715624e7ee557ad22f3d9983f54c (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-07.png differ
blob - /dev/null
blob + 2cf9eddda7b32204efd547bd47867e7c17d19a10 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-08.png differ
blob - /dev/null
blob + 06d9effc086d4232ca7ec103373e6c2e6cfe191f (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-09.png differ
blob - /dev/null
blob + 56085002bf4932d59c25d9784fc009169d770297 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-10.png differ
blob - /dev/null
blob + 530f54075a77883629a67f5a48874665eb86f614 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-11.png differ
blob - /dev/null
blob + 71ae4643c026ffa048670f46db94e726de806027 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-12.png differ
blob - /dev/null
blob + 775173d0f1a0f477b0970f15d5b435b59afbc1c8 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-13.png differ
blob - /dev/null
blob + 8d9e8d6842e5c58b3b0e85157948d519e2734852 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird-pgp-14.png differ
blob - /dev/null
blob + ae97a7497dfb4deaa33691849220bc0bb25249b0 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird01.png differ
blob - /dev/null
blob + 2ce2b598c676bf29c68fc359a8bfb75dfc9b704b (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird01.png,1613726160 differ
blob - /dev/null
blob + 4f27bba4a9c93e790287060e682f6c1f06a226c9 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird02.png differ
blob - /dev/null
blob + 5304fb921fc65688a7f0c1cddf98ec5e2b5300e4 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird02.png,1613724716 differ
blob - /dev/null
blob + 4f27bba4a9c93e790287060e682f6c1f06a226c9 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird03.png differ
blob - /dev/null
blob + 5304fb921fc65688a7f0c1cddf98ec5e2b5300e4 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird04.png differ
blob - /dev/null
blob + adb4034af203a51654b70e12480b1b75556dd040 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird05.png differ
blob - /dev/null
blob + a8d0a333a5669d7cf85a41a33af3bb23cb793c88 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird06.png differ
blob - /dev/null
blob + f64edf9444e01c64b25db2fc1838afa5addd87d8 (mode 644)
Binary files /dev/null and uploads/Thunderbird/thunderbird07.png differ
blob - /dev/null
blob + 1188044e5312aa5de5cc4cf5eba94e39d6cbccf7 (mode 644)
Binary files /dev/null and uploads/TigerVNC/putty_change_settings.png differ
blob - /dev/null
blob + 538f048ebff2778c3c53eb5f3c49ca8b46c186f1 (mode 644)
Binary files /dev/null and uploads/TigerVNC/putty_ssh_tunnels.png differ
blob - /dev/null
blob + db843880b2e0a47183683914ea883856b54e6310 (mode 644)
Binary files /dev/null and uploads/TigerVNC/xfce-desktop.png differ
blob - /dev/null
blob + 5b0d6e05c8ef3885274a0fde1d9fc09586290716 (mode 644)
--- /dev/null
+++ uploads/Unbound/unbound.txt
@@ -0,0 +1,21 @@
+get_html_opennic() {
+	curl -s 'https://servers.opennic.org/' \
+	  -H 'Connection: keep-alive' \
+	  -H 'Cache-Control: max-age=0' \
+	  -H 'sec-ch-ua: "Chromium";v="95", ";Not A Brand";v="99"' \
+	  -H 'sec-ch-ua-mobile: ?0' \
+	  -H 'sec-ch-ua-platform: "Linux"' \
+	  -H 'Upgrade-Insecure-Requests: 1' \
+	  -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36' \
+	  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
+	  -H 'Sec-Fetch-Site: cross-site' \
+	  -H 'Sec-Fetch-Mode: navigate' \
+	  -H 'Sec-Fetch-User: ?1' \
+	  -H 'Sec-Fetch-Dest: document' \
+	  -H 'Referer: https://wiki.ircnow.org/' \
+	  -H 'Accept-Language: en-US,en;q=0.9' \
+	  --compressed --insecure
+}
+
+echo "Getting ipv4 addrs from opennic" 1>&2
+get_html_opennic | grep -Eo 'mono ipv4[^>]*>([0-9]+\.){3}[0-9]+' | sed 's/.*>//' | sed 's/.*/forward-addr: &/'
blob - /dev/null
blob + ff223215cf64e60d469e626abf5b46ccc6bb793f (mode 644)
--- /dev/null
+++ uploads/Unbound/unbound.txt,1686322811
@@ -0,0 +1,21 @@
+get_html_opennic() {
+	curl -s 'https://servers.opennic.org/' \
+	  -H 'Connection: keep-alive' \
+	  -H 'Cache-Control: max-age=0' \
+	  -H 'sec-ch-ua: "Chromium";v="95", ";Not A Brand";v="99"' \
+	  -H 'sec-ch-ua-mobile: ?0' \
+	  -H 'sec-ch-ua-platform: "Linux"' \
+	  -H 'Upgrade-Insecure-Requests: 1' \
+	  -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36' \
+	  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
+	  -H 'Sec-Fetch-Site: cross-site' \
+	  -H 'Sec-Fetch-Mode: navigate' \
+	  -H 'Sec-Fetch-User: ?1' \
+	  -H 'Sec-Fetch-Dest: document' \
+	  -H 'Referer: https://wiki.ircnow.org/' \
+	  -H 'Accept-Language: en-US,en;q=0.9' \
+	  --compressed --insecure
+}
+
+echo "Getting ipv4 addrs from opennic" 1>&2
+get_html_opennic | grep -Eo 'mono ipv4[^>]*>([0-9]+\.){3}[0-9]+' | sed 's/.*>//'
blob - /dev/null
blob + 74f7cd2aa51b71d623e5c2c411ac4b23d2b68242 (mode 644)
Binary files /dev/null and uploads/Unix/blit.mkv differ
blob - /dev/null
blob + a860c4a5701dcf88a785fee607050800918f81ed (mode 644)
Binary files /dev/null and uploads/Unix/mux.png differ
blob - /dev/null
blob + 5c7cbfdeadb1670986a768741af407763eb87227 (mode 644)
Binary files /dev/null and uploads/Users/rosie.png differ
blob - /dev/null
blob + 24baa81c847c20e10a1eaecf18d54b1c43ce54e0 (mode 644)
Binary files /dev/null and uploads/Users/techs-should-factor.png differ
blob - /dev/null
blob + 56b31e05393dd06c91a768bdbc696c7bf04aff43 (mode 644)
Binary files /dev/null and uploads/UsersCategoryMirrory/montana-free-homestead-land.jpg differ
blob - /dev/null
blob + c7049331f5ce7a437d794c74ba2a3028c95fa74a (mode 644)
Binary files /dev/null and uploads/UsersCategoryMirrory/willamette-valley.jpg differ
blob - /dev/null
blob + a361fc58c52226c4055558d21f909b4e6312fb53 (mode 644)
Binary files /dev/null and uploads/Vhost/a.png differ
blob - /dev/null
blob + cccabc89d53b88c0a4d4b93bd7d20dc2e61833b9 (mode 644)
Binary files /dev/null and uploads/Vhost/b.png differ
blob - /dev/null
blob + 72a6561603e6547f8ef7fb8af656b80b67d1b72e (mode 644)
Binary files /dev/null and uploads/Vhost/c.png differ
blob - /dev/null
blob + ddb721b405885174e025bd70c28934477b394a28 (mode 644)
Binary files /dev/null and uploads/Vhost/c.png,1615894819 differ
blob - /dev/null
blob + 3df7a176ea3b9b124383e543bcc21156b43c1425 (mode 644)
Binary files /dev/null and uploads/Vhost/d.png differ
blob - /dev/null
blob + ddb721b405885174e025bd70c28934477b394a28 (mode 644)
Binary files /dev/null and uploads/Vhost/e.png differ
blob - /dev/null
blob + ddb721b405885174e025bd70c28934477b394a28 (mode 644)
Binary files /dev/null and uploads/Vhost/e.png,1615894544 differ
blob - /dev/null
blob + 38c82b79e3499e077282f551bcd6fe8c905f1479 (mode 644)
Binary files /dev/null and uploads/Vhost/f.png differ
blob - /dev/null
blob + 38c82b79e3499e077282f551bcd6fe8c905f1479 (mode 644)
Binary files /dev/null and uploads/Vhost/f.png,1615894240 differ
blob - /dev/null
blob + 38c82b79e3499e077282f551bcd6fe8c905f1479 (mode 644)
Binary files /dev/null and uploads/Vhost/f.png,1615894626 differ
blob - /dev/null
blob + d6e5f42de388f04a0f21620ebf20348ea829bd51 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-1.jpeg differ
blob - /dev/null
blob + 2b091bf83ec1353b37a1f8f3a5272c15de3027ac (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-10.jpeg differ
blob - /dev/null
blob + cf436c8c9e7900a4a1bba23a5d957fd7ebf0bd03 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-11.jpeg differ
blob - /dev/null
blob + 9cb3b3c5bffdf783a99d6b10588bf6bd8f0100d9 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-12.jpeg differ
blob - /dev/null
blob + 857fe0578142ced4863d996a809436b065c2de37 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-13.jpeg differ
blob - /dev/null
blob + 42b3b5ffce42e4d4b5859a52b72cc01284590759 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-14.jpeg differ
blob - /dev/null
blob + 8d02c726c6fc23be0960bfafec80492526e0ad36 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-15.jpeg differ
blob - /dev/null
blob + 9896b33cc1b8d89d98b29aec46ab0287957f6f8d (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-16.jpeg differ
blob - /dev/null
blob + 25c0b8aef0f915bb3eaa9e75edaf2f0689a487d6 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-17.jpeg differ
blob - /dev/null
blob + 244154aa6ecade86ebc2baa8d1b64d7e9c0b0d1d (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-18.jpeg differ
blob - /dev/null
blob + 97d9e0fd770d21a617b086a9dc6c544dda1eb0c1 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-19.jpeg differ
blob - /dev/null
blob + 95190eda2b750f335823188f24a90f62a265c9e0 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-2.jpeg differ
blob - /dev/null
blob + 102b5312cf7fc928e58ab2a91b3e2559be1bf14b (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-20.jpeg differ
blob - /dev/null
blob + d335a4a5e9ba5cc1f5dde6b869681625ad9d7e6b (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-21.jpeg differ
blob - /dev/null
blob + 9a321e5262cd5be4c87a92515875d668810b9383 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-22.jpeg differ
blob - /dev/null
blob + 16f656ff3eef4efe9bc00a1885ce5ff590e4345d (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-23.jpeg differ
blob - /dev/null
blob + e75d3597cc2708d020d2966856ed886d7971e37d (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-24.jpeg differ
blob - /dev/null
blob + 328414090b0ccf8d89287a56abd7d83b89384ede (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-25.jpeg differ
blob - /dev/null
blob + 75d3b53b7ac811649270b340d79de9cfde39c8e1 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-26.jpeg differ
blob - /dev/null
blob + 260e046524e93ae43b608f828813c78743dbd3d7 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-27.jpeg differ
blob - /dev/null
blob + 1812d4647fc28c23e9086dd351d2649a2b28c408 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-28.jpeg differ
blob - /dev/null
blob + 02f1d8cf94698d6c4e34d463fdc5f74cc477fcca (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-29.jpeg differ
blob - /dev/null
blob + 6450b5ebe0cff000597c28115384965ff32c1b23 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-3.jpeg differ
blob - /dev/null
blob + 66cb5690ddf351b29dae919444d884723aa7f980 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-30.jpeg differ
blob - /dev/null
blob + fcc8dbc3845aaae068f0fbd294dc2c0d0daca4ed (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-31.jpeg differ
blob - /dev/null
blob + 5edf12500b451891e76ae69034e439dd35de9cd8 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-32.jpeg differ
blob - /dev/null
blob + 7ed1480643644f4aa66c029d5dbfb312a1a7d998 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-4.jpeg differ
blob - /dev/null
blob + 83a09cc1446a8e65f815a8ed75e5087950c49a94 (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-5.jpeg differ
blob - /dev/null
blob + 21705794ee16eddd5e6fc244b2684bd27b9f275a (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-6.jpeg differ
blob - /dev/null
blob + ba812c88e0656609268f644f6a000c5fa37b05dc (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-7.jpeg differ
blob - /dev/null
blob + 33494ce048cacd23294a8e73f314d52a7345ce3e (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-8.jpeg differ
blob - /dev/null
blob + ca32604d9dcf3242108dddc16a8c121c7191f07f (mode 644)
Binary files /dev/null and uploads/Vmm/Devuan-9.jpeg differ
blob - /dev/null
blob + 12ef7977511fae3682b8764dd2b98b65ba8f50da (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup1.png differ
blob - /dev/null
blob + 5bfe8c80bc1d5d1db33176626819ad1952929de4 (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup11.png differ
blob - /dev/null
blob + 11665939687b8723ba1a20b7b4baeed7848bfa71 (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup12.png differ
blob - /dev/null
blob + d9dfa04195f6a070f8af4a92b73968fe8664ccf6 (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup2.png differ
blob - /dev/null
blob + fb3c0bce9040e57c3e16db577eb4a7a34e432f9c (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup3.png differ
blob - /dev/null
blob + 9b3d72599517ae71d1d93bb164f6f458f6d10cd8 (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup4.png differ
blob - /dev/null
blob + a4bac24368abf1f20a9ecafc3ec56785c22e34ce (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup5.png differ
blob - /dev/null
blob + 1dff83fff7916fd360ec4e1475512c4d1fd9d750 (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup6.png differ
blob - /dev/null
blob + 65ebbccb72e8ef8ee07ab3caffe3dbfd7e006788 (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup7.png differ
blob - /dev/null
blob + 9e87c58980d81edc4dacf98a4b99e4dbe757541d (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup7.png,1637385980 differ
blob - /dev/null
blob + 65ebbccb72e8ef8ee07ab3caffe3dbfd7e006788 (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup8.png differ
blob - /dev/null
blob + 7afda024ceff9dd3f481bb26995c2172c0eebb83 (mode 644)
Binary files /dev/null and uploads/Vmm/almasetup9.png differ
blob - /dev/null
blob + 3563ac593f8f650c8ef095c78062594bc1999946 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup1.png differ
blob - /dev/null
blob + 026617cb86dee461c18cc2fe0692018d08b77056 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup10.png differ
blob - /dev/null
blob + 5fa9486effb68e2c940559b22ec83507ffe6a6ef (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup11.png differ
blob - /dev/null
blob + 265ec660a6cb175791ae5c081496634e215a9908 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup12.png differ
blob - /dev/null
blob + dc7c86369e33c3961d6489b2c61936b4b238d790 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup13.png differ
blob - /dev/null
blob + 5fed988a44409104241e1e77d234092f08e3d04b (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup14.png differ
blob - /dev/null
blob + 074c81d7d4b70d797ebda531610d99f0fb63f423 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup15.png differ
blob - /dev/null
blob + 0edf7a10c2e1f8e87c6b66aee6fc266a32638fb0 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup1png differ
blob - /dev/null
blob + 6c47a64e2ee7c7370a107259f764bec9d29701cf (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup2.png differ
blob - /dev/null
blob + 3563ac593f8f650c8ef095c78062594bc1999946 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup2png differ
blob - /dev/null
blob + 253b633f53ae4be6ca433e943b4f68a1ddef52bf (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup3.png differ
blob - /dev/null
blob + 931c878688d019c5d6b29a691a4abe9392755b99 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup4.png differ
blob - /dev/null
blob + 17780daca6fb1a116a05286506858340b88da792 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup5.png differ
blob - /dev/null
blob + fee86789cd7048132c8e30a42e8737dd295927d4 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup6.png differ
blob - /dev/null
blob + d25439b0aeab291354adc541a914b4c4c1ad4594 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup7.png differ
blob - /dev/null
blob + 026617cb86dee461c18cc2fe0692018d08b77056 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup8.png differ
blob - /dev/null
blob + 9bcd05b8c5611d7794e715fb02faf52d0af5a0d0 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup8.png,1636598252 differ
blob - /dev/null
blob + 026617cb86dee461c18cc2fe0692018d08b77056 (mode 644)
Binary files /dev/null and uploads/Vmm/rockylinux-setup9.png differ
blob - /dev/null
blob + cc8444654b0e84fe311b5b009c2b2a12ca4ddc6f (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-01.png differ
blob - /dev/null
blob + 76cbc5855458177775efcca55bddbc416cc6accf (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-02.png differ
blob - /dev/null
blob + 05a67925041b0f2b659be0d359d1b60c0871a379 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-03.png differ
blob - /dev/null
blob + 953cb2736997ba4770aa075c477a50657006a835 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-04.png differ
blob - /dev/null
blob + 704da679d7d7f5b8f43224d743becbc66383f1fe (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-05.png differ
blob - /dev/null
blob + cfc14f3e02702802a981cd683aca37961c091ec3 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-06.png differ
blob - /dev/null
blob + e068dd75a57a290b4afb6550d5ca7050888a2263 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-07.png differ
blob - /dev/null
blob + 1fcd9a87b8d86820d61aed1fabc49e9f5d508696 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-08.png differ
blob - /dev/null
blob + 7327447d79f17a34546edbddc8102a589b46d0a7 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-09.png differ
blob - /dev/null
blob + e8d362a71aa0b2d8b49881357387a1a79cd50c6c (mode 644)
Binary files /dev/null and uploads/Vpn/iked-iOS-10.png differ
blob - /dev/null
blob + 6909de33ac384a969d2d86bfc7c01b9c36f6ccc6 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-mac-01.png differ
blob - /dev/null
blob + a0b05ca108e9522a6dc1646b676902a69a8fcf75 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-mac-02.png differ
blob - /dev/null
blob + e8c020d5314b4ff0208ce085653982f399c08cd9 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-mac-03.png differ
blob - /dev/null
blob + e1a860a10cc1ca869cbc22be339996f645640014 (mode 644)
Binary files /dev/null and uploads/Vpn/iked-mac-04.png differ
blob - /dev/null
blob + d6012b70451cd50525f4acc7aed50d57d982b50c (mode 644)
Binary files /dev/null and uploads/Vpn/iked-mac-05.png differ
blob - /dev/null
blob + b36c7e9cb718059de617bb0eb1428dc9ef8b070e (mode 644)
Binary files /dev/null and uploads/Vpn/iked-mac-06.png differ
blob - /dev/null
blob + de061f936033db7a60ef0c413e568167cbcca1e5 (mode 644)
Binary files /dev/null and uploads/Vps/smt-logo-10.png differ
blob - /dev/null
blob + 0bb6af166e48ed14ac2a6ec1593fe753932b4f4b (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-contacts.png differ
blob - /dev/null
blob + 3a9adf97c5395ffd590cfd694042c65d7476ff9e (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-contacts.png,1637303907 differ
blob - /dev/null
blob + 3a9adf97c5395ffd590cfd694042c65d7476ff9e (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-contacts.png,1637303926 differ
blob - /dev/null
blob + ccf9dd296e5dcda35aef4c3629994a3da155003a (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-contacts.png,1637304221 differ
blob - /dev/null
blob + fd1747b9defc0ec3bca62aa9f151929386743253 (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-install.png differ
blob - /dev/null
blob + e5e6e11218003e77d3b5d5116f7cd0ae9358056d (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-install.png,1637303939 differ
blob - /dev/null
blob + 8619dfe0017baf2911f39fca122d1da66bd78cd0 (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-signin.png differ
blob - /dev/null
blob + 3ce5c1c5efa18ee29ed07a14fce4a92e8db149e8 (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-signin.png,1637303953 differ
blob - /dev/null
blob + c2c2cc1ef7a6c0607dc4005b74676c2f3f3c011c (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-swipe.png differ
blob - /dev/null
blob + f46188745994321f4a51a777ed80d41fc44830c1 (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-swipe.png,1637303968 differ
blob - /dev/null
blob + bad031f4ee57e8f3728778344364b53721c7ab84 (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-welcome.png differ
blob - /dev/null
blob + 3b4ae5ecf4a0f07cf1280e78d8e83ca8a7a5c4c8 (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-welcome.png,1637303985 differ
blob - /dev/null
blob + bad031f4ee57e8f3728778344364b53721c7ab84 (mode 644)
Binary files /dev/null and uploads/Xabber/xabber-welcome.png,1637304009 differ
blob - /dev/null
blob + 0d91634bde1d11e6170820fd541dc454845dffa1 (mode 644)
Binary files /dev/null and uploads/Yaxim/yaxim-contacts.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 26c14971c27eaa5306cc1b21165ff270111cd778 (mode 644)
Binary files /dev/null and uploads/Yaxim/yaxim-install.png differ
blob - /dev/null
blob + 6e8eb58740b0d2f982d3c1404faa8a87e970b47c (mode 644)
Binary files /dev/null and uploads/Yaxim/yaxim-welcome.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + d60f323a5666d09f010fe5b13795268c645475d5 (mode 644)
Binary files /dev/null and uploads/ZNC/znc1.png differ
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 2302e14f82351641e0b2d5c11b25221b2c637afa (mode 644)
--- /dev/null
+++ wiki.d/.htaccess
@@ -0,0 +1,8 @@
+<IfModule !mod_authz_host.c>
+  Order Deny,Allow
+  Deny from all
+</IfModule>
+
+<IfModule mod_authz_host.c>
+  Require all denied
+</IfModule>
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + b421e1ced58425c1d92c071092fbfb2d2509bd59 (mode 644)
--- /dev/null
+++ wiki.d/.pageindex
@@ -0,0 +1,1766 @@
+Heading.Subheading:1752860819: Heading.PersonalWebsite Heading.BackToIntroPage : personaljournal personalwebsite backtointropage laboratories brainstorm paulsutton subheading community shelllabs involved position profiles amateur science people handle matrix ircnow staff zleap https index help with name none wiki jrmu org php ca
+Main.HomePage:1752860632: Freedom.Federation Ircnow.Goals Freedom.Freedom Gry.Bio Baytuch.Bio Profiles.Yonle Profiles.Tcache AncientWisdom.Bio SysopNiteStorm.Bio Profiles.Jrmu SplinTer.Bio Vps.Vps SplinTer.Hardware Oddprotocol.Hardware Bsdforall.Hardware Izzyb.Bio Thunderirc.Hardware Ircnow.Hardware Ircnow.Servers Minutemin.Bootcamp : sysop_nitestorm monkeybusiness sysopnitestorm ancientwisdom disconnected libertybell simpletable planetofnix oddprotocol federation themselves inspirenet ircforever pyritepyro luxembourg posterdati thunderirc interested community sysadmins different following minutemin lecturify shelltalk schnitzel bsdforall nastycode voidkrypt bokamosho anonymity protocols currently excellent improving ecosystem provides internet services sortable location hostname governor profiles phreedom monsieur soda_man hardware splinter bouncers messages download security multiple networks combined whenever bootcamp examples homepage freedom servers ensures baytuch naglfar thelion england novanet agroena freeirc ryusuke receive offline request channel bridges account reasons hotspot storage support parties hosting openbsd reading working covered ircnow attach source create border tcache yiming london entrex oregon forero sylv1a inter9 client cloaks others relays useful access export guides topics title users goals width class ports vegas https yonle rpblc maxxe pyr3x allen joker izzyb roost barth miami 16667 16697 texas vpses while helps later bible since hides sites email total third rsync learn pages about that each with team chat logo siva york lawl afwi wiki 72px jrmu 6660 6670 type full list will save your once also lets from bots this such wifi news more give imap smtp want sell data sftp join ircs here main png one its who can 100 usa tls gry bio org gif pra svg ops any vpn get 1gb pop not scp add git cvs how aim by we
+Shelllabs.Intro:1752860314: About.AboutUs Heading.Subheading LegalAndSafety.LegalAndSafety Shelllabs.Education Shelllabs.Openaccess Shelllabs.Tools : bertini_fresco_of_galileo_galilei_and_doge_of_venice legalandsafety decentralized international reproducible ideological subheading openaccess principles disclosure subsidized shelllabs community wikimedia wikipedia education financial interests symposium equipment research about_us supplies critical thinking science commons contact results library student journal archive aboutus rfloat upload review annual public shared title indie width 200px https links staff tools tests other goals cheap arxiv intro menu full peer like org jpg any can get e7 no
+Openssl.RecentChanges:1752728391:  : ancientwisdom recentchanges encryptfile february openssl august 05t13 saeed 17t02 check 08t20 http 2025 more same cert 2024 jrmu 2022 imap 2021 54z the 22z 49z 07 44 by of 11 40 04 30 at 09 29
+Fdisk.RecentChanges:1752728391:  : recentchanges fdisk usage 11t00 2024 jrmu 58z 04 09 by
+Police.RecentChanges:1752728391:  : recentchanges fingerprints addresses february police should sorted intro 08t05 2023 jrmu 2022 xfnw with 25z 10 by 12 at 09 pm ip be v
+Znc.Install:1752688649: Znc.Patch Ftp.Usage Tar.Usage Tcpip.Ports Tls.Overview IPv4.Overview IPv6.Overview Acme-client.Configure Dns.Vhost Dns.Overview DNS.RDNS Dns.Records Host.Usage Kill.Usage Ps.Usage Tcpip.Sockets Bouncer.Bouncer Crontab.Edit : 49396054dc8263b573d11c9c01e43f89ee772f6dc89b3c630e6dffa9acea4a3e dcmake_install_prefix protectwebsessions authonlyviamodule configwritedelay troubleshooting serverthrottle ssldhparamfile automatically znc_server_ip configuration maxbuffersize successfully instructions alphanumeric registration controlpanel accidentally connectdelay certificate simple_away recommended anoniplimit hideversion explanation sslcertfile combination ovexwsl50cc protection connection networking especially optionally background loadmodule validating sslkeyfile connecting afterwards connected reconnect compiling configure installed available firewalls selecting listeners listening verifying untrusted alternate username_ bindhosts arbitrary chansaver something duplicate following sysadmins specifies listener0 uriprefix listener1 listener2 listener3 addresses processes debugging overview computer messages official releases software download makeconf generate creating checking settings reserved accounts randomly blocking programs separate protocol becoming webadmin properly yourself password provided directly prevents hostname freenode probably channels favorite supplied networks launched recreate adminlog certauth security attacker provides allowirc allowweb changing makepass symbolic bouncer replays running patched openbsd applied extract options modules warning servers encrypt between support appears instead default popular devices writing enabled however invalid request confirm specify looking example forward reverse records missing defined initial configs browser opening loading binding forking replace command changes portion consult pidfile sockets correct crashes cronjob crontab restart minutes section altnick copying openssl source ircnow online custom erbose should please global choose unable double client secure prefer mobile locate signed cannot reason better supply manage adding signal delete nicely stored breach unique during refuse guides checks errors forget method sha256 je2ecm needed folder actual title https stays phone saves helps offer usage files unzip stand build local using visit 65534 shell tcpip ports users often other words there where cause shown later hence enter asked vhost leave blank being stage 65535 empty still login 12345 point 86542 above rerun again these 10000 false certs lines paths 31337 tells given right fails which every quits gives from wiki runs turn chat them when also ddos keep have link used next xvzf home then this with 1025 must that were will both ipv4 ipv6 sent kept more stop like acme real pick want does rdns been test 2001 into aaaa irc6 uses 6697 info once kill term send dies note 8542 know type grep time true else logs read find fe80 c001 d00d edit case mind hash salt 2048 may due ftp see was yes tls don pem any 192 168 bd8 try lib crt did yet db8 198 new out cd 0a gz v1 by 51 ln
+Got.Repo:1752613581: Got.Usage Git.Usage Gotweb.Install : temporarily permissions repository encryption afterwards configure committer directory currently available redirect explains groupadd existing insecure requires gotadmin restored provides checkout assumes already usermod useradd replace without warning example project openbsd command sources message ircnowd changes install create rights either actual import ngircd access proper gotweb title guide usage first going mkdir chown clone https empty allow chmod gotd this have want doas each give name next your path urls init note only need code will from into make sure work tree also may new for are var git can was org log set see 7 5 1 6
+Adminforces.Training:1752613485: Openbsd.Intro Doas.Configure Syspatch.Syspatch FwUpdate.Usage Openbsd.Pkg Ircnow.Howtoask Lists.Ircnow Freedom.Fork Chroot.Intro Openhttpd.Configure Telnet.Http Netcat.Http Tls.Intro Tls.San Acme-client.Configure Openhttpd.Tls Openssl.Http Openhttpd.Website Openhttpd.Perl Dns.Overview Unwind.Configure Dns.Cachingservers Unbound.Configure Unbound.Control Dns.Dnssec Unbound.Dnssec Unbound.Opennic Unbound.Localzone Dig.Usage Host.Usage Nslookup.Usage Hostname.Usage Hosts.Configure Freedom.Selfadmin Netcat.Irc Netcat.Usage Netcat.Daemon Openbsd.Rcctl Openbsd.Ed Tar.Usage Ksh.Editor Ksh.History Crontab.Edit Openbsd.Adduser Group.Usage Usermod.Usage Openbsd.Localtime Dd.Iso Ln.Intro Openbsd.Fstab Dmesg.Usage Openbsd.Hier Top.Usage Ps.Usage Renice.Usage Fstat.Usage Fuser.Usage Kill.Usage Openbsd.Panic Openbsd.Loginconf Openbsd.Sysctl Swapctl.Usage Openbsd.Outofmemory Freedom.Firstamendment Atactl.Usage Acct.Accton Openbsd.Vipw Ircnow.Dogfood Freedom.Software Relayd.Acceleration Relayd.TLSMulti Openhttpd.Hosting Openbsd.Httpopenproxy Freedom.Religion Tcpip.Overview IPv4.Overview IPv6.Overview Tcpip.Sockets Ip.Netmask Tcpip.Ports IP.Myaddress Tcpbench.Usage Openbsd.Ping Traceroute.Usage Openbsd.Dig Adminforces.Ifconfig Ifconfig.Change Hostnameif.Static Hostnameif.Autoconf Ifstated.Configure Arp.Usage Ndp.Usage Arp.Spoofing Ip.Spoofing Resolv.Conf Resolvd.Usage Route.Usage Route.Hostnameif Netstat.Usage Route.Sourceaddr Ifconfig.Hostap Hostapd.Configure Freedom.Openforeveryone Pf.Configure Pf.Intro Pf.Nat Pf.Whitelisting Pf.Debugging Pf.Rdr-to Pf.TrafficShaping Pf.Pflog Pf.Authpf Pf.Testing Pf.Nat64 Pf.Ftp-proxy Pf.Dmz Openbsd.Ddos Openbsd.Tcpdump Openbsd.SSDP Openbsd.ACKFlood Openbsd.RSTFlood Openbsd.UDPFlood Openbsd.Amplification Openbsd.PFStable Openbsd.PFTesting Openbsd.Pf Pfctl.Usage Ifconfig.Wifi Ifconfig.Wifitoethernet Ifconfig.Bridge Ifconfig.Vlan Ifconfig.Veb Ifconfig.Vether Ifconfig.Carp Ifconfig.Gre Ifconfig.Mgre Ifconfig.Egre Ifconfig.Eoip Ifconfig.Etherip Ifconfig.Vxlan Ifconfig.Mpe Ifconfig.Mpip Ifconfig.Mpw Ifconfig.Bpe Ifconfig.Pppoe Ifconfig.Sppp Ifconfig.Tpmr Ifconfig.Trunk Ifconfig.Aggr Ifconfig.Urndis Ifconfig.Pflow Ifconfig.Pfsync Gre.6in4vmm Gre.6in4 Gre.4in6 Ifconfig.Wg Ifconfig.Tap Ifconfig.Tun Netizen.Become Netizen.Rights Dns.Records Dns.Registrars Dns.FQDN Nsd.Configure Dns.Zonefile Nsd.Zone Nsd.Masterslave Nsd.Troubleshoot DNS.RDNS DNS.Ipv4rDNS DNS.Ipv6rDNS Freedom.Unix Dns.Vhost Identd.Configure Freedom.Federation Opensmtpd.Maildir DNS.Mail DNS.SPF DNS.DKIM DNS.DMARC Netcat.SMTP Opensmtpd.Test Opensmtpd.Inbox Opensmtpd.Openrelay Smtp.Usage Spamd.Configure Opensmtpd.Aliases Snmpd.Configure Snmp.Configure Sensorsd.Configure Ldapd.Configure Servers.Rights Minutemin.Code Minutemin.Duty Cvsweb.Restore Got.Usage Gotconf.Configure Gotadmin.Usage Gotd.Configure Tog.Usage Gotwebd.Configure Minutemin.Server Openbsd.Dump Openrsync.Usage Openbsd.Fdisk Openbsd.Disklabel Disklabel.Partitioning Newfs.Usage Mount.Usage Openbsd.Newdisk Mfs.Usage Ffs.Intro Fsck.Usage Openbsd.Quota Openbsd.Growfs ScanFfs.Usage Softraid.Install Softraid.Rebuild Exports.Configure Nfsd.Configure MountNfs.Usage Mountd.Configure Ftpd.Configure Tftpd.Configure Sed.Usage Awk.Usage Roff.Usage Ksh.Intro Perl101.Perl101 Vmm.Intro Vmctl.Usage Cu.Usage Vmctl.Disk Vmctl.Reinstall Vmm.Install Openbsd.Install Openbsd.Upgrade Openbsd.Sysupgrade Vmm.Sysupgrade Sysmerge.Usage Openbsd.Bsdrd Openbsd.Bootconf Openbsd.Singleuser OpenBSD.ResetPassword Openbsd.Autoinstall Vmm.Configure Hosting.Providers Dhcpd.Configure Pxeboot.Configure Rad.Configure Slaacd.Configure Openbsd.Diskless Rc.Conf Syslogd.Configure Syslogd.Remote Newsyslog.Configure Sendbug.Usage Openbsd.Mail Freedom.Independence Ircnow.Constitution Freedom.Union Freedom.Privacy Freedom.Homestead Freedom.Madeonirc Freedom.Startupdream Freedom.Dueprocess Freedom.Checks Freedom.Rulebylaw Openbsd.Ports Pkgadd.CheckUpdates- Ntpd.Configure Abuse.Intro Team.Security Password.Management Openssl.Encryptfile Signify.Verify Shell.Limits Openbsd.FilePermissions Pledge.Intro Unveil.Intro Openbsd.Setuid Security.Usage Vlan.Configure Pair.Configure Veb.Configure Bridge.Configure Nat.Configure Route.Static Ripd.Configure Route6d.Configure Ospfd.Configure Bgpd.Configure Dvmrpd.Configure Mrouted.Configure Npppd.Configure Dhcpleased.Configure Iked.Sitetosite Iked.Sitetositevmm Iked.Roadwarrior Iked.Roadwarriorvmm Vpn.Vpn Vpn.Myipaddress Iked.Binat Sshd.Configure Ssh.Fingerprints Ssh.Agent OpenSSH.Connect OpenSSH.Keygen Openbsd.Sshkeys Openbsd.Sshbackdoor Sftp.Chroot Sshd.Chroot Openrsync.Chroot Openbsd.Books Unix.Reading Team.Welcome Team.Testing Team.Announce : responsibilities openforeveryone troubleshooting filepermissions cachingservers administration firstamendment wifitoethernet advertisements roadwarriorvmm trafficshaping automatically httpopenproxy amplification resetpassword configuration miscellaneous investigation sitetositevmm announcements introduction applications acceleration whitelisting packetfilter partitioning independence constitution startupdream checkupdates fingerprints simpletable description alternative outofmemory information configuring synchronize masterslave consistency filesystems autoinstall declaration encryptfile myipaddress sshbackdoor recommended adminforces installing validating nameserver dogfooding blacklists networking throughput traceroute hostnameif resolution sourceaddr understand registrars federation management repository partitions rebuilding processing hypervisor sysupgrade parameters singleuser unattended dueprocess techniques operations restricted dhcpleased jumpstart configure fw_update questions openhttpd webserver localzone customize selfadmin modifying localtime hierarchy processes loginconf religious myaddress benchmark addresses discovery debugging pftesting interface wireguard opensmtpd openrelay minutemin openrsync disklabel construct mount_nfs scripting reinstall providers newsyslog homestead madeonirc rulebylaw criminals passwords multicast procedure training sortable commands syspatch firmware packages software howtoask overview security webpages resolver nslookup database services archives accounts symbolic multiple tlsmulti religion netmasks tcpbench ifconfig changing autoconf ifstated protocol neighbor spoofing wireless firewall rulesets ackflood rstflood udpflood pfstable zonefile ipv4rdns ipv6rdns phishing sensorsd gotadmin scan_ffs softraid terminal emulator sysmerge bootconf diskless rotation balances stopping resource insecure binaries securely generate downtime fwupdate mountnfs openbsd execute mailing freedom chroots subject request openssl website unbound control opennic queries records clients default history crontab editing adduser usermod display message monitor signals dealing classes getting setting swapctl virtual hosting domains proxies closing liberty sockets resolvd netstat routing hostapd defense against attacks tcpdump packets etherip 6in4vmm netizen reverse maildir inboxed sending aliases version restore gotconf gotwebd backups newdisk recover deleted exports perl101 machine storage ramdisk pxeboot acquire logging syslogd sendbug privacy pkg_add updated prevent signify route6d mrouted emulate openssh connect sshkeys channel further reading welcome scanffs border lesson reward ircnow civics extend telnet netcat inside unwind dnssec handle daemon editor change groups create buffer renice status kernel panics sysctl speech atactl accton relayd basics static detect routes bootup access points authpf defend sample bridge vether urndis pfsync tunnel pseudo device become rights choose origin vhosts identd folder letter recite cvsweb browse quotas growfs mountd serial repair router slaacd remote united checks pkgadd report verify limits pledge unveil setuid dvmrpd behind keygen title width topic usage learn about using zones rcctl shell users write image links dmesg fuser space error press avoid tcpip guide paths setup pflog nat64 pfctl vxlan pppoe trunk pflow types email ethic abuse dmarc block spamd snmpd ldapd honor clone fdisk newfs based tftpd vmctl after bsdrd offer dhcpd union leaks parts audit ospfd npppd ipsec binat agent books doas your good week fork with acme cert text tape show kill vipw what ddos ssdp vlan carp mgre egre eoip mpip sppp tpmr aggr 4in6 fqdn unix dkim code duty from gotd hard fast fsck nfsd roff mode into bill tree keep ntpd team ripd bgpd vpns iked sshd sftp 100 vps san dig ksh usb cpu oom ndp rdr dmz veb mpe mpw bpe nsd git tog mfs awk fix wg
+Gotwebd.Configure:1752613082: Openhttpd.Configure Chroot.Intro Gotd.Configure Openrsync.Usage : max_commits_display configuration installation periodically gameoftrees permissions developers configured site_owner interface openhttpd challenge customize site_link site_name directory preserved openrsync provides properly location logo_url readable cronjobs gotwebd written openbsd package pkg_add similar include example request fastcgi restart slowcgi default crontab server exists rather system listen htdocs socket reload enable inside chroot create public stored copied delete title https which repos third party first block types share known strip after pkill rcctl intro mkdir chown files _gotd setup world chmod usage html than base make sure have will need this misc mime port well acme edit with runs next made copy path user must when into doas help from once hour org for but you one man usr hup and var www etc png 100 bin git can by 80 cp be rx 5 2
+Gotd.Configure:1752469174: Got.Usage Group.Usage Sshd.Configure Opensmtpd.Configure : nyvhqoux9yjr8dahw9o0ta9549wyuexrisrxigoyc3k passwordauthentication permitemptypasswords disableforwarding notifications repositories authenticity permittunnel configuring gameoftrees permissions established fingerprint interactive credentials alternative developers difficulty repository connecting configured controlled anonymous permittty directive opensmtpd although remotely groupadd username continue checkout requires properly normally install written openbsd pkg_add example cloning created serving allowed usermod restart ed25519 working changes useradd creates account prevent similar provide commits support handled secrets system folder import issues access assign sha256 append update notify server gotctl passwd method title https mkdir chmod chown _gotd usage clone grant write rcctl known other names using login first local gotsh whose shell block below match email sends every html help over part base next hold copy into path note have with init them read will both host this sure want make some only home sshd upon tags root org can git var our set 755 may etc any 203 113 key are you yes usr bin new man by cp
+Gotconf.Configure:1752464427:  : configuration gameoftrees configure directory present gotconf title https html file that root repo work org may the git is be in 5
+Group.Usage:1752454541:  : permissions committers groupinfo frontend groupadd groupmod groupdel handling username openbsd example special usermod create groups rights assign title using https could usage help with give code then man org new can for to we 8
+Got.Mirror:1752447586:  : repository discarded redirect example warning fetches changes mirror create cloned custom usage title cause with will got git com new any get of
+Got.Usage:1752447558: Gotadmin.Usage Gotd.Configure Gotwebd.Configure Ksh.Profile Ksh.Editor Ngircd.Install OpenSSH.Connect : f4ade537d550b872b7e86e6ffce940dfbad4c60c 06aa157fd328d1678f916c9edb2799815b37140e 23282eae1c4eea70cf25001425820ccf2c47e3e5 9ecebae09293d5c48d5da458bc755df74d332c4f 39b43f133bfac5074a751bbae6da72fd25007124 463ce51f15b0cb33fb2150b524e20ae5c39e2d8d c8b12af1d2d155ec79dc2044a4ff177cf07de4fe ab0eb099e9c0ed60d25fb50dd78d2a638d3b49b8 71ae2b7d7f9ae7bc02ed072c07100de0027373d6 daa88b765111b14047c97256bd2a9a2daabe123b 512af135d06e7dad93f51eae51b3979e1d4005cc 02850008f4a4e8fff5799157d21ee7924345b3e1 3c627dd70d032fa2c5087617da27586cf85e899a aa8df5f73de7d59f4c385a5a33090e75734cc235 complete_got_1 clang_complete have_stdint_h documentation repositories fingerprints dockerignore modification hinzugefuegt inconsistent gameoftrees development maintenance configuring recommended known_hosts respository simpletable unversioned environment expressions branchename requirement compatible repository substitute components got_author completion encryption attempting afterwards branchname debopenssl references additional utilities configure interface currently protocols preferred discarded specified directory recursion committed conflicts alexander re_format christoph branching switching reverting different described reusable provides commands gotadmin terminal username supports checkout specific sortable filename pathname tracking modified required variable deletion removing occurred restored contains expected revision branches starting possible manchmal building worktree existing pointing reverted provided multiple ancestor response compared metadata control license several handled gotwebd install pkg_add example replace profile default openbsd because openssh connect changed warning fetches changes creates another meaning already sources message working checked newcode forever deleted commits running created goodbye objects between object1 object2 history merging updated blocked regular missing unstage suppose tracked produce initial display limited release remotes testing tagname folders fetched rebased ignores specify rebases staging system freely server viewer export enable editor visual actual ngircd github unable mirror cloned custom before status border exists recent called import origin adding allows inside ircnow staged remove hashes manual merged during second column barton number master remain gnutls debian become result common script single title https still under today usage first about guide using every these codes width class added ahead empty heads hello world begin mkdir above files those blame there local match regex biedl avoid paths easy that aims with html used made only gotd need tell this part your echo also uses text four they will note over make sure once must into from sha1 then show next step most home tool refs shut hack been just blob mode null give line news them item 2001 tags 2021 anoy 2016 list undo safe asks junk some info send sent when want onto past org see but can tog ksh set url src any get log may two 644 non due tue dec utc auf sat jan ulm via fix way try 22 26
+Group.RecentChanges:1752443727:  : recentchanges group usage 13t21 2025 jrmu 55z 07 by
+Sshd.Configure9:1752441995:  : pubkeyacceptedalgorithms hostkeyalgorithms kexalgorithms cryptography configure9 enforces stronger security settings loosened default openbsd connect hellman ciphers unless diffie group1 aes256 title https order avoid using these sshd plan from some need note sha1 org use you rsa cbc by of be 8
+Almanack.Almanack:1752441794: Lists.Ircnow Minutemin.Code Minutemin.Server Minutemin.Duty Minutemin.Questions Minutemin.Progress Medals.Intro Team.Welcome Team.Testing Servers.Rights Team.Announce Team.Federation Ircnow.Dogfood Team.Networks Congress.Procedure Congress.Documents Ircnow.Milestones Ircnow.Roadmap2021 Ircnow.Roadmap2022 Ircnow.Roadmap2023 Ircnow.Roadmap Ircnow.Status2022 CodeForce.Deploy Abuse.Code Ambassador.Markets Ircnow.Metrics Ircnow.Nsf Ircnow.Newdeal Ircnow.Daughtersofliberty Netizen.Ellisisland User.Welcome Netizen.Become Netizen.Rights Freedom.Selfadmin Freedom.Independence Freedom.Fork Ircnow.Constitution Freedom.Religion Freedom.Firstamendment Freedom.Software Freedom.Privacy Freedom.Homestead Freedom.Madeonirc Freedom.Unix Freedom.Startupdream Freedom.Openforeveryone Freedom.Dueprocess Freedom.Checks Freedom.Rulebylaw Freedom.Federation Freedom.Union Freedom.Universal Freedom.Radio Ircnow.Education Openbsd.Intro Vmm.Configure Vmm.Install Vmctl.Usage Vmm.Linux Vmm.Sysupgrade Vmctl.Disk Vmctl.Reinstall Vmm.Intro Vmm.DebianIso Vmm.DebianInstall Vmm.Debian Vmm.Optimize Vmm.Ubuntu Vmm.DevuanIso Vmm.Devuan-ISO Vmm.Alpine Vmm.Arch Vmm.Plan9 Vmm.Router Vmm.Homerouter Ipmi.Java Openbsd.BBB Openbsd.Orangepi3lts Openbsd.Upgrade67 Openbsd.Upgrade68 Openbsd.Upgrade69 Openbsd.Upgrade74 Openbsd.Upgrade75 Openbsd.Sysupgrade68 Openbsd.Sysupgrade69 Openbsd.Sysupgrade70 Openbsd.Sysupgrade71 Openbsd.Sysupgrade72 Openbsd.Sysupgrade73 Openbsd.Sysupgrade74 Openbsd.Sysupgrade75 Openbsd.Sysupgrade Openbsd.Install67 Openbsd.Install68 Openbsd.Install69 Openbsd.Install70 Openbsd.Install71 Openbsd.Install73 Openbsd.Install74 Openbsd.Install75 Openbsd.Install Openbsd.Bsdrd OpenBSD.OnOVH Openbsd.Bootconf Openbsd.Singleuser Openbsd.Books OpenBSD.ResetPassword License.Publicdomain Gpl.Flaws Bsd.Hope Bsd.Labor License.Discriminatory Tcpip.Overview IPv4.Overview IPv6.Overview Tcpip.Sockets Ip.Netmask Tcpip.Ports Buyvm.Ipv6 Openbsd.Anycast Hostnameif.Static Hostnameif.Static-v2 Ifconfig.Change IP.Myaddress Almanack.Ifconfig Route.Usage Openbsd.Wifi Resolv.Conf Hostname.Usage Route.Hostnameif Dhcpd.Configure Openbsd.Npppd Openbsd.Pppoe Ntpd.Configure Dhclient.Configure Route.Sourceaddr Ifconfig.Wifitoethernet Gre.6in4 Gre.6in4nat Openbsd.Pf Pf.Guide Openbsd.PFStable Openbsd.PFTesting Openbsd.Pfbadhost Pf.Vpn Pf.Bittorrent Ddos.Intro Openbsd.SSDP Openbsd.ACKFlood Openbsd.RSTFlood Openbsd.SYNFlood Openbsd.HTTPFlood Openbsd.NTPAmplification Openbsd.UDPFlood Openbsd.Amplification Openbsd.Ping Openbsd.Tcpdump Netcat.Usage Netcat.Irc Netcat.Http Netcat.SMTP Telnet.Http Openssl.Http Openssl.Imap Openssl.Smtp Openssl.Check Openssl.Encryptfile Bgpd.Configure Dns.Overview Dns.Records Dns.FQDN Dns.Registrars Dns.Vhost Vhost.Freedns Vhost.Ircnow Nsd.Configure Nsd.Masterslave Nsd.Troubleshoot DNS.RDNS Dns.Zonefile Nsd.Zone Dns.Troubleshooting Openbsd.Delphinusdnsd DNS.Mail DNS.SPF DNS.DKIM DNS.DMARC DNS.MTA-STS DNS.Ipv6rDNS DNS.Ipv4rDNS Unbound.Configure Host.Usage Dig.Usage Unbound.Adblock Unbound.Blacklists Rbldnsd.Install Dns.BindResolver Unbound.LAN Unbound.DNSSEC Gpg.Verify Signify.Verify Duplicity.Usage Iked.Configure Vpn.Vpn Iked.Newconfig Vpn.Myipaddress Iked.Sitetosite Wg.Hosting Tor.Torsocks Tor.Hidden Tor.Irc Tls.Overview Tls.Intro Tls.CA Acme-client.Configure Acme-client.Cron Relayd.Acceleration Relayd.TLSMulti Letsencrypt.Expired Acme-client.AutoRenew Dehydrated.Configure Acmesh.Configure Sshd.Configure Ssh.Client Ssh.Fingerprints Openbsd.Sshbackdoor Sshd.Disablepassword OpenSSH.Keygen Openssh.Skey Openssh.Totp Sshd.Configure9 Openbsd.Drawtermssh Openbsd.Two-FactorAuth Openbsd.Sftp Ftpd.Configure Torrent.Configure Cvs.Anoncvs Cvs.Intro Cvs.Cvsweb Cvs.Repo Cvs.Guide Paster.Install Fiche.Install Openbsd.Www Openhttpd.Configure Openhttpd.Hosting Openbsd.Httpopenproxy Openhttpd.Perl Openbsd.Php Openhttpd.Tls Openhttpd.Website Openhttpd.CGI Openhttpd.Chroot Pmwiki.Install Pmwiki.Simpleurl Pmwiki.Replace Debate.Wikistyle Ikiwiki.Install Openbsd.Dokuwiki Squirrelmail.Install Roundcube.Install Wordpress.Install Openbsd.Oscommerce Openbsd.Cumulusclips Openbsd.Fluxbb Openbsd.Question2answer Openbsd.H5ai Openbsd.Easyapp Openbsd.Manna NodeJS.Install Openbsd.Cgit Stagit.Install Got.Repo Gotweb.Install Got.Usage Got.Server Got.Mirror Mariadb.Install Irc.Guide Irc.Chanop Ngircd.Oper Irc.Services Irc.Clients Irc.Easy HostServ.Rules Unrealircd.Install Almanack.TheloungeWebircClient Znc.Install Znc.Chroot ZNC.Admin ZNC.Support Openbsd.ZNCModules Znc.Patch Znc.Usage Znc.Relayd Znc.I18n ZNC.Troubleshoot Znc.Debug Debate.Zncdefense Debate.Zncflaws Soju.Install Psybnc.Install Openbsd.Ilines Ambassador.Ilines Debate.Ircv3defense Identd.Configure Oidentd.Install Oidentd.ZNC Oidentd.Changeident Openbsd.Ii Openbsd.Sic Ngircd.Install Ngircd.Link Ngircd.Ssl Ngircd.Patches Ngircd.Loginconf Hopm.Install Openbsd.Acopm Hopm.Telnet Openbsd.Hopm-NowWithInit Hunchentoot.Install Achurch.Install Anope.Install Atheme.Install Pylink.Install Pylink.Chroot Bitlbee.Install Openbsd.Matterbridge Eggdrop193.Install Eggdrop191.Install Openbsd.Tcltls Eggdrop184.Install Eggdrop.Nickserv Wraith.Chroot Openbsd.Wraith Openbsd.Biblebot Botnow.Install Openbsd.Ircrelayd Category.Perl Openbsd.CPAN Unix101.Unix101 Unix101.Wechall C101.C101 Debate.WhyNotC Almanack.C C.Cprimer Openbsd.Vi Openbsd.Mg Openbsd.Ed Emacs.Emacs Opensmtpd.Configure Openbsd.Opensmtpd-relay Openbsd.Opensmtpd-2 Openbsd.Mailopenproxy Opensmtpd.Troubleshoot Opensmtpd.Openrelay Opensmtpd.Test Almanack.AdvancedMailServerSetup Rspamd.Configure Opensmtpd.Inbox Mlmmj.Install Mlmmj-archivist.Install Mutt.Connect Openbsd.Fdm Create.UserEmail Openbsd.Newdisk Fdisk.Usage Openbsd.Disklabel Openbsd.Growfs Openbsd.Pkg Openbsd.Ports Pkgadd.CheckUpdates Almanack.SystemStatsSh Doas.Configure Syspatch.Syspatch Openbsd.Cron Rcctl.Rcctl Openbsd.Adduser Openbsd.Localtime Dd.Iso Dd.Usage Ln.Intro Tmux.Config Tmux.Share Openbsd.XTerm Openbsd.Backups Openbsd.Dump Openbsd.Restore Openrsync.Usage Rsync.Usage Openbsd.Dmesg Atactl.Usage Almanack.DumpBackupWithSCP Openbsd.Fstab Newfs.Usage Mount.Usage Openbsd.Iplookup Openbsd.Hier Openbsd.Base64 Openbsd.Uim Crontab.Edit Ps.Usage Kill.Usage Vi.Intro Cron.Suppressmail Openbsd.Vipw Tar.Usage Openbsd.Rcctl Syslogd.Configure Syslogd.Remote Openbsd.Panic Openbsd.Sysctl Swapctl.Usage Ffs.Intro Softraid.Install Softraid.Rebuild Disklabel.Usage Disklabel.Partitioning Ksh.Bash Ksh.Redirection Ksh.Autocomplete Shell.Limits Shell.Cronjobs Openbsd.Outofmemory Ln.Shell Openbsd.Freeciv Openbsd.Openttd Olympics.Games Chess.Reading Chess.Chessgogi Chess.Tournament Chess.Limitsbot Fics.Install Fics.Admin Math.Reading Humanities.Reading Shelllabs.Intro Shelllabs.Reading Shelllabs.Quotes Shelllabs.Manifesto Camping.Gear Openbsd.Minetest Minetest.Addingarenas Minetest.Serverlocations Minetest.Texturestyle Minetest.Updating Minetest.Worldbackup Texlive.Install Texlive.Sinhala Asterisk.Install Openbsd.Galene Sox.Concat Openbsd.Ffmpeg Parec.Record Openbsd.Recordaudio Ffmpeg.Recordscreen Leafnode.Install Webnews.Install Gazette.Gazette Openbsd.INN Openbsd.Gopher Openbsd.Gophernicus Openbsd.Geomyidae Bucky.Install Prosody.Install Biboumi.Install Gomuks.Install Akkoma.Install Openbsd.Misc ISCABBS.ISCABBS Hosting.Hosting Hosting.Providers Hosting.Requirements Openbsd.Security Chroot.Intro Password.Management MITM.Intro Openbsd.Phishing Password.Hashes Password.Schemes Password.Words Openbsd.Dos Openbsd.Spam Openbsd.0days Openbsd.Rootkits Pledge.Intro Unveil.Intro Openbsd.Databaseperms Openbsd.Secureweb Openbsd.Trust Openbsd.Defaultdeny Openbsd.Loginconf Openbsd.Ids Openbsd.Setuid Openbsd.Sa Openbsd.Quota Openbsd.Shell Police.Intro Police.Fingerprints Openbsd.FilePermissions Openbsd.Oath-toolkit Doxing.Defense Team.Security Sheriff.Intro Openbsd.Xenodm Xfce.Install Fvwm.Configure Xdefaults.Configure Synclient.Configure Cwm.Configure TigerVNC.Install TigerVNC.SSH Wsconsctl.Usage Fdroid.Install 9.9 9.Shell 9.Install 9.Partdisk 9.Plan9ini 9.Links 9.Shocase 9.Rcpu 9.Drawterm 9.JSDrawterm 9.101 9.Bootcamp 9.9paste 9.Independent 9.Cheatsheet 9.Sysupdate 9.Packages Rio.Customize 9.Chording 9.Ssh 9.Netcat 9.9gridchan 9.Ideas Cloud9p.Roadmap 9.9pideas 9.Audio 9.Irc 9.Date 9.Reading 9.Acmemail 9.Splinternet 9.FNS 9.PKI 9.IP 9.Why9 9.Inter9 9.Ramfs Unix.Reading BSD.Reading Debate.Linuxflaws Unix.Intro Unix.History Unix.Exhibit SIMH.Install Ircnow.Womenstem Relays.Relays Bots.Bots Code.Code Opsofliberty.Bootcamp Civics.Intro Ircnow.Projects Vnc.Vnc WikiTips.WikiTips License.License Ircnow.Ally Ircnow.Victorycores Ircnow.Opsofliberty Ircnow.Pioneer Ircnow.Codeforce Ircnow.Explorer Ircnow.Ranger Ircnow.Settler Ircnow.Sheriff Ircnow.Servers Codeforce.Training Team.Team Openbsd.Buyvm Buyvm.Routedsubnet Openbsd.Dkimproxy Openbsd.Opensmtpd Ircnow.Goals Openbsd.Rbldns : advancedmailserversetup theloungewebircclient daughtersofliberty dumpbackupwithscp ntpamplification openforeveryone troubleshooting disablepassword question2answer serverlocations filepermissions firstamendment discriminatory wifitoethernet debianinstall resetpassword configuration authoritative delphinusdnsd bind_resolver httpopenproxy mailopenproxy databaseperms systemstatssh independence constitution startupdream orangepi3lts sysupgrade68 sysupgrade69 sysupgrade70 sysupgrade71 sysupgrade72 sysupgrade73 sysupgrade74 sysupgrade75 publicdomain cryptography acceleration fingerprints applications squirrelmail cumulusclips ircv3defense matterbridge checkupdates suppressmail partitioning autocomplete addingarenas texturestyle recordscreen requirements opsofliberty victorycores routedsubnet bindresolver illustrated independent simpletable roadmap2021 roadmap2022 roadmap2023 ellisisland netizenship declaration opportunity encryptfile masterslave myipaddress certificate authorities letsencrypt sshbackdoor drawtermssh changeident nowwithinit hunchentoot pkglocatedb redirection outofmemory worldbackup imagemagick recordaudio gophernicus defaultdeny splinternet screenshare temperance administer themselves federation milestones status2022 deployment ambassador dueprocess homerouter supermicro beaglebone singleuser philosophy networking hostnameif sourceaddr bittorrent registrars blacklists signatures encryption sitetosite automating automation dehydrated configure9 factorauth oscommerce unrealircd zncmodules zncdefense eggdrop193 eggdrop191 eggdrop184 user_email filesystem rebuilding tournament humanities management accounting jsdrawterm cheatsheet linuxflaws brainstorm historical frugality minutemin questions procedure documents codeforce selfadmin religious homestead madeonirc rulebylaw universal education reinstall debianiso devuaniso upgrade67 install67 install68 install69 install70 install71 install73 install74 install75 addresses myaddress pftesting pfbadhost httpflood duplicity newconfig wireguard autorenew openhttpd simpleurl wikistyle roundcube wordpress debugging loginconf ircrelayd languages challenge opensmtpd openrelay archivist disklabel utilities localtime openrsync hierarchy chessgogi limitsbot shelllabs manifesto geomyidae fediverse providers hardening passwords secureweb intrusion detection xdefaults synclient wsconsctl sysupdate customize 9gridchan womenstem dkimproxy useremail almanack industry training sortable progress sysadmin announce networks congress religion software balances machines optimize bootconf overview netmasks ifconfig dhclient firewall pfstable blocking torrents ackflood rstflood synflood udpflood zonefile ipv6rdns ipv4rdns torsocks services tlsmulti creating transfer chrooted pastebin dokuwiki hostserv bouncers webpanel zncflaws changing nickserv identify biblebot category syspatch flashing symbolic iplookup softraid cronjobs symlinks olympics minetest updating asterisk leafnode security phishing rootkits binaries accounts policing touchpad tigervnc partdisk plan9ini showcase bootcamp packages chording acmemail projects wikitips licenses explorer articles lessons channel mailing welcome dogfood markets metrics newdeal digital freedom central privacy justice openbsd virtual ramdisk sockets anycast 6in4nat tcpdump openssl routing freedns caching unbound adblock rbldnsd signing signify clients hosting without expired openssh version control anoncvs proxies website replace ikiwiki easyapp mariadb support oidentd patches achurch bitlbee unix101 wechall whynotc cprimer editors getting inboxed connect newdisk pkg_add adduser backups restore chinese crontab editing sending signals syslogd swapctl freeciv openttd reading science camping texlive sinhala icecast webnews gazette prosody biboumi iscabbs schemes toolkit sheriff desktop windows android shocase cloud9p 9pideas history exhibit patriot pioneer settler ircnow border medals rights target civics become censor checks united access higher ubuntu alpine static packet filter attack netcat telnet vhosts dnssec verify netpgp hidden acmesh keygen cvsweb create paster pmwiki debate fluxbb nodejs stagit gotweb mirror guides irc101 chanop ngircd psybnc ilines atheme relays pylink tcltls wraith botnow rspamd growfs pkgadd atactl base64 emails remote kernel sysctl shells quotes webrtc galene vorbis sndiod concat ffmpeg social matrix gomuks akkoma hashes middle denial pledge unveil setuid quotas police doxing xenodm fdroid 9paste inter9 armory donate ranger title young users wheel width class honor intro union abuse ethic radio vmctl usage metal bsdrd onovh books false labor ifend tcpip ports buyvm dhcpd npppd pppoe layer certs dmarc using ipsec repos fiche manna rules acopm anope emacs mlmmj disks fdisk rcctl xterm dmesg newfs mount panic pipes games latex video media parec bucky 0days trust party mouse ramfs cabin goals poor chat room ircs duty call good team fork bill ipmi java bare dell mode hope ntpd ddos ssdp imap bgpd fqdn vpns iked sshd keys skey totp sftp ftpd perl h5ai cgit oper i18n soju bncs hopm bots cpan korn mutt doas sudo tmux kill vipw fast bash misc fics math gear mgmt mitm apps oath xfce fvwm rcpu why9 simh ally docs old run org 100 vps vmm bbb gpl spf mta gpg 2fa www php sic fdm usb uim ffs ksh sip sox inn ids cwm 3rd fns pki v2 wg ii
+Vmm.Install:1752438729: Vmm.Intro Ssh.Usage Vmctl.Usage Openbsd.Install Vmctl.Reinstall Openbsd.Sysupgrade Openbsd.Bsdrd Route.Usage Openbsd.Vmmuser : automatically instructions installation connectivity registration combination immediately information installing substitute particular hypervisor administer sysupgrade unattended workaround networking background dedicated uncertain sometimes keyboards operating reinstall installed preferred described configure something amsterdam provides multiple machines physical hostname username personal webpanel followed requires bootable upgrades bootconf increase accident shutdown provided properly openbsd virtual reading console example contact because replace process follows typical default instead unmount loading probing routine timeout appears prevent booting restart gateway command cronjob minutes vmmuser inside should native allows single server serial access obtain logged vmname likely rather escape period before tildes system create failed cdboot bootup screen normal manual either prompt kernel reboot actual ensure title guide intro https which guest lives check email first login using usage vmctl press enter works clean qcow2 image there after amd64 2046m below bsdrd boots fixes where hours based known route print every helps alive this note faq4 html will need runs with your have root must once uses than view want type ctrl from when hard disk com0 638k over then doas used lose find been also show 2001 next ping echo tabs that keep www org may are but ssh get vnc any few see pc0 mem a20 hd0 cd0 bug one set can awk 198 100 db8 var of if by e0 65 51 c3 7
+Shelllabs.Brainstorm:1752420054:  : physical_and_theoretical_chemistry_textbook_maps ad1ee5178e741d321421821109cd7a16 fundamentals_of_chemical_bonding supplemental_modules_ opensciencetraining accesstoresearch tablesgenerator peerrecognized brainstorming elifesciences bond_energies overwhelming nathanlesage biochemistry researchgate referencing handbook_en flowingdata bookshelves savemyexams learnlatex zooniverse applicable philosophy libretexts shelllabs publicity expecting currently reolution papersapp academics dovepress dishonest material manually detexify kirelabs classify mendeley mastodon subjects projects texlive gnuplot showing citizen disroot however without biology msclkid ircnow people called jabref github charts items could https intro fixed enter prone error under start links would trial arxiv think igcse this wiki from once that page need easy site make much ctan html info main have help blog them here risk add org way get can but www com tug dns for set pad not day rsc net hku be 30 uk
+Shelllabs.Tools:1752419865:  : tablesgenerator comprehensive freecodecamp independent programming typesetting preparation recognition scientific researcher learnlatex regularly community worldwide languages libraries dataframe texstudio shelllabs software document detexify kirelabs classify generate provide project rpolars library texlive archive network source octave python github miktex system symbol ircnow title tools https intro used goal this page with open very fast ctan html wiki for the org gnu www lyx tug – by
+Shelllabs.Tools-Draft:1752419831:  : tablesgenerator comprehensive freecodecamp independent programming typesetting preparation recognition scientific researcher learnlatex regularly community worldwide softwares languages libraries dataframe texstudio shelllabs document detexify kirelabs classify generate provide project rpolars library texlive archive network source octave python github miktex system symbol ircnow title tools https intro draft used goal this page with open very fast ctan html wiki for the org gnu www lyx tug – by
+Heading.Subheading-Draft:1752416740:  : laboratories brainstorm subheading community shelllabs involved amateur science people staff draft help with and
+Vmctl.Usage:1752290592: Vmm.Intro Vmm.Install Openbsd.Upgrade Openbsd.Singleuser Vmm.Sysupgrade Vmctl.Reinstall Vmctl.Disk Openbsd.Vmminstall : combination hypervisor administer parameters management singleuser sysupgrade vmminstall dedicated necessary uncertain connected following sometimes keyboards reinstall multiple machines physical normally directly hostname username personal commands examples shutdown followed openbsd virtual logging address however contact network because console handled generic replace unpause native allows inside server change access obtain serial 115200 vmname repair system escape period before tildes guides title using vmctl intro which guest lives order login check email first https ttyp8 speed amd64 tty00 often there start press enter works usage will need runs form your note have root must with last 2025 from next view once this uses stop boot want type ctrl disk also may are but org ssh fri jul 198 100 sun jun mdt dev can any few out new see by if 06 23 51 29 09 04 cu 7
+Vmm.Intro:1752287096: Ssh.Usage Vmm.Install Openbsd.Upgrade Openbsd.Singleuser : hypervisor administer singleuser dedicated confusion operating uncertain installed multiple machines physical webpanel hostname properly directly username personal virtual monitor openbsd because upgrade connect example contact network address regular console native allows inside server rather result system access obtain serial title https guest which lives usage login check email users first intro used your uses than this some both also boot mode need runs have form once then note root must vmm man org ssh vnc can and may com are but if 4
+Tog.RecentChanges:1752284731:  : recentchanges usage 12t00 about 2025 jrmu stub tog 13z add 07 15 by
+Vmctl.Reinstall:1752280603: Openbsd.Dump Vmm.Install : reinstalling installation instructions administer hypervisor convention operating uncertain critical normally directly hostname username personal forcibly deleting warning openbsd virtual machine logging address however example contact network because console replace follows restore finally restart system delete backup inside access obtain serial simply create title files other disks guest which lives login check email first vmctl would qcow2 image below erase guide with edit make sure dump your must runs form note have root then shut down stop like copy case need move will want data this take next size same vmm may and any can its com are but ssh bak new 20g see by ip of if cp mv
+Tog.Usage:1752279313:  : repositories gameoftrees browse allows title https usage html git org tog you 1
+Gotconf.RecentChanges:1752273098:  : recentchanges configure gotconf 11t21 2025 jrmu 06z 07 47 by
+Gotadmin.Usage:1752269849:  : gameoftrees repository algorithm gotadmin hashing objects title https files loose 10392 total usage html info path sha1 pack size 483m org
+Doas.Configure:1752180064: Ksh.Redirection : configuration whitelisting replacement redirection permissions afterwards absolutely precaution tedunangst asterisks literally appending requiring necessary malicious somewhere configure normally security provides password improved operator provided probably although argument drawback complete specific programs insecure yourself reasons openbsd default instead utility account prompts command persist appends creates already logging reached example keyword current require without running chances mastery simple called permit allows whoami cannot denied needed easier nopass access powers should unless stolen others title group wheel small https first enter using shell exist means could order again about below since write fails users login avoid needs fixed chmod doas sudo want root does come note show when type next this echo file sign exit also ctrl tell test will that time done work have life then gets lead data find else flak post for org etc any ksh ask non lot are bug see by of 1
+Openbsd.Install77:1752177395: Signify.Verify Vmctl.Usage Openbsd.Bsdrd Vmm.Configure Dhclient.Configure IP.Myaddress Hostnameif.Static Dns.Overview Unbound.Configure Openbsd.Fdisk Openbsd.Disklabel Openbsd.Base : a551ff606afc00e2 congratulations automatically configuration installation inconsistent registration independence partitioning asynchronous verification architecture specifically successfully configuring recommended dynamically nameservers information softraidfde maintaining downloading substitute particular installing utoinstall networking interfaces statically hostnameif cloudflare eventually management administer encryption encouraged prepending unverified maintained fontconfig manipulate simplicity developers configured resolution subdomain available addresses myaddress allocates sometimes carefully qualified described invisible loginname disabling timezones selecting assphrase disklabel important allocated fragments directory libraries megabytes including signature integrity fw_update relinking completed install77 0xae2100 password selected pressing terminal autoconf dhclient provider accident overview provides packages security remotely settings username targeted guessing prohibit physical location possible 12384192 13720480 18567040 23127904 34346816 cylinder internet pathname entering labelled xshare77 continue software included freetype programs graphics downtime disabled berkeley properly contains openbsd reading release booting signify virtual machine consult probing seconds 4232111 1745920 3887480 warning welcome mistake process options prompts default answers control usually example netmask gateway hosting relying routers causing records invalid connect restart unbound caching without account printed improve console attacks pubkeys logging central details correct forever because simpler chooses 1223712 3220512 4932608 7479264 special reduced enlarge 1223648 sectors 7596224 pattern xbase77 xserv77 xfont77 replace audited outside decided against minimal realize upgrade require hundred present mirrors closest instead already mounted command before should verify inside guides cdboot bootup 716800 483816 334631 werase status during cancel except escape typing return system single lladdr likely virtio change device prefix length assign rather unlike reboot unable either finish follow subnet please double common google ircnow screen speeds 115200 accept create eydisk offers faster layout offset fstype unused unless number groups blocks inodes nosuid comp77 game77 sha256 really simply needed bypass normal ensure saving making unique kernel title quick https begin notes first vmctl usage bsdrd amd64 2046m check reset bring shell shown leave state vt220 short vlan0 other which email panel users chose fixed later would quad9 often trick below twice 19200 38400 57600 setup lower safer allow avoid match disks about wrong faq14 whole fdisk fresh fsize bsize 16384 x11r6 local ustom needs newfs 76472 75864 rsd0a 19008 rsd0k nodev flash drive man77 abort image fonts ports might after proxy where there media 31152 files intel this faq4 html from want make com0 638k then wait cd0a root rd0a swap rd0b dump kill intr ctrl back exit your vio0 done ipv4 none ipv6 2001 abcd list that than uses dhcp same both will once skip also echo sshd 9600 case help what data have 2bsd 1243 2395 2366 2227 5478 3709 home mind last 17mb 9483 each sd0i sd0e sets does must team them text such sake most when only risk long 8080 left 2324 4687 been www org iso vmm pc0 mem a20 hd0 few 109 any but foo em0 may 255 db8 web dns yes see mbr gpt cpg 597 975 836 tmp var usr 652 src obj 5mb 148 1mb mnt nfs tgz has run url ocf its sd1 vps alt e0 0m rw kb
+Openbsd.Install77-Draft:1752169452: Signify.Verify Vmctl.Usage Openbsd.Bsdrd Vmm.Configure Dhclient.Configure IP.Myaddress Hostnameif.Static Dns.Overview Unbound.Configure Openbsd.Fdisk Openbsd.Disklabel Openbsd.Base : 1b7ff2bba74aebde congratulations automatically configuration installation inconsistent registration independence partitioning asynchronous verification architecture specifically successfully configuring recommended dynamically nameservers information softraidfde maintaining substitute particular installing utoinstall networking interfaces statically hostnameif cloudflare eventually management administer passphrase encryption encouraged prepending unverified maintained fontconfig manipulate simplicity developers configured resolution subdomain available addresses myaddress allocates sometimes carefully qualified described invisible loginname disabling timezones selecting disklabel important allocated fragments directory libraries megabytes including fw_update relinking completed install77 0xae2100 password selected pressing terminal autoconf dhclient provider accident overview provides download packages security remotely settings username targeted guessing prohibit physical location possible 12900448 14270432 19285344 22746368 34010176 cylinder internet pathname entering labelled xshare75 continue software included freetype programs graphics downtime disabled properly contains openbsd reading release booting signify virtual machine consult loading probing seconds 4232111 1745920 3887480 warning welcome mistake process options prompts default answers control usually example netmask gateway hosting relying routers causing records invalid connect restart unbound caching without account printed improve console attacks pubkeys logging central details correct forever because simpler chooses 1279840 3388864 5190752 7883296 special reduced enlarge 1279776 sectors 7932864 pattern xbase75 xserv75 xfont75 replace audited outside decided against minimal realize upgrade require hundred present closest instead already mounted command before should verify inside guides cdboot bootup 716800 483816 334631 werase status during cancel except escape typing return system single likely virtio change device prefix length assign rather unlike reboot unable either finish follow subnet please double common google ircnow screen speeds 115200 accept create offers faster layout offset fstype unused unless number groups blocks inodes nosuid comp75 game75 sha256 really simply needed mirror bypass normal saving making unique kernel title quick https begin notes first vmctl usage bsdrd amd64 2046m check reset bring shell shown leave state vt220 short vlan0 which other email panel users chose fixed later would quad9 trick below twice 19200 38400 57600 setup lower safer allow avoid match disks about wrong faq14 whole fdisk fresh fsize bsize 16384 20480 x11r6 local ustom needs newfs 79984 79352 rsd0a 19840 rsd0k nodev flash drive man75 abort image fonts ports might after often proxy where there media 25844 files intel draft this faq4 html from want make sure com0 638k then wait cd0a root rd0a swap rd0b dump kill intr ctrl back exit your vio0 wish done ipv4 none ipv6 2001 abcd list that than uses dhcp same both will once skip echo sshd 9600 case help what data have 2bsd 1029 1314 2449 2448 1690 5499 3873 home mind last 98mb 9919 each sd0i sd0e sets does must team them text such sake most when only risk long 8080 esc7 left 4575 been www org iso vmm pc0 mem a20 hd0 few 109 any but foo em0 may 255 db8 web dns 162 yes see mbr gpt cpg 624 879 tmp var usr 668 src obj 9mb 512 154 5mb mnt nfs tgz has run url its sd1 vps alt e0 65 0m 7m rw kb 03
+Openbsd.Install:1752168757:  : install77 redirect openbsd
+Shelllabs.Brainstorm-Draft:1752086894:  : ad1ee5178e741d321421821109cd7a16 accesstoresearch tablesgenerator peerrecognized brainstorming elifesciences overwhelming nathanlesage biochemistry researchgate referencing learnlatex zooniverse applicable currently reolution shelllabs papersapp academics dovepress detexify kirelabs classify mendeley mastodon subjects chemical project texlive gnuplot showing citizen disroot however without biology msclkid called people jabref github items https error under start links would trial arxiv draft this wiki ctan html info from main page have help blog them here risk add www org com tug dns can and one for set pad not but day rsc net of my be 30 uk
+Openhttpd.Website:1751723229: Openhttpd.Configure Openhttpd.Tls Chroot.Intro Pmwiki.Install Cvs.Cvsweb Gotweb.Install Fiche.Install Squirrelmail.Install Almanack.Almanack : configuration verification applications squirrelmail certificate simpletable configured correctly openhttpd directory challenge specified explains document consider location declared normally webpages defaults creating readable remember hostname sortable pastebin almanack setting website openbsd assumes already finding example private request editing browser replace install service hosting webmail before server listen served htdocs chroot should create actual sample border pmwiki cvsweb gotweb title guide https begin first files check block index known strip where since using intro means chmod width class fiche this have your want port auto well acme only line runs html save make sure doas then load view with some code more how org and tls put com 443 etc ssl crt key pub not var www can 100 up 11 by 8 5 2
+Openssl.Http:1751723094: Netcat.Http Telnet.Http Acme-client.Configure Crontab.Edit : mdmxczajbgnvbaytalvtmrywfaydvqqkew1mzxqncybfbmnyexb0mqwwcgydvqqd ewnsmtewhhcnmjqxmte0mdaznju3whcnmjuwmjeymdaznju2wjafmr0wgwydvqqd exrqcm11lmhvc3quaxjjbm93lm9yzzccaiiwdqyjkozihvcnaqebbqadggipadcc agocggibanuladdkipvsvq4lpmsymfhbnqt7exv3lrmzq6yvqzwplod1wkhnxfhg 9d4icx7vkeigxljrxtgbohflkpzedispqdwkqx1gmewlxrw65a71ur81ajeytjje ixowgeb1kxtgeqkhm4cyywblkidnoeompsrg3usofhs1easdf6io42brmhkilajl miicfjaobgnvhq8baf8ebamcbaawhqydvr0lbbywfayikwybbquhawegccsgaquf mb8ga1udiwqymbaafmxprqtq9mpaemyvxc2wxpivjuo5mfcgccsgaqufbwebbesw staibggrbgefbqcwayywahr0cdovl3ixms5vlmxlbmnylm9yzzajbggrbgefbqcw aoyxahr0cdovl3ixms5plmxlbmnylm9yzy8whwydvr0rbbgwfoiuanjtds5ob3n0 lmlyy25vdy5vcmcwewydvr0gbawwcjaibgzngqwbagewggegbgorbgeeadz5agqc rw9xjef4rvpwdvaarsc8xdzy95cw86eciqclsxo2bqi9coah2trzv3gxq0lnen9r xccisxo0zh4mczanbgkqhkig9w0baqsfaaocaqeapjlhmafd1begi5lxzicgqrdm jccbokgawibagisbbismyi1jcgngriqsynjgynama0gcsqgsib3dqebcwua ozkhle3d61jruhuz4vep053pnxi8yldrd6jedniaqbajlgjapd1p3sfy0vl lth3lm9pwrfbc0rlipaxkkgauvsohbh7sbvumdiwcmyfdohcbrqgw6edtk 8lkkvpbqxkarejnafb0cv29seqe2rtbwzot8rt6msfn59b07o7m4pxqhs 3csgdn7ozeqqs6pbmtgdjk3aiwaunsnlwbdatdwra171lyted2wufdf wqcmaawhqydvr0obbyefaveged5j7eod57c69ksudivdq7m alwvta0tnea2jo5zmoq7nypo7awpri48xndofysb7gk qkfwlwossimnl8yj7sy6hcvegwqhmkviggypniky ct3clhdkfkwcngex4vkrqwlzef43mj9cqf3g3v ohw9lplpvpgnfnsrax7kwb0lt3zsw7caaaazmo iuflfnzr1a5zfjxs4dlfqvu8nuqwqd3g5j thqrpba3i0nowfdq367ap8kr4ciaaagtke awhaqbd0ihqsssyplxfehagmbaagjggia a3ydn63qlziwjfp1gaczzcyuj7a2navx nh1glyzjlktnsc31rkjjlbbjwnptfwih ml9s99vnq91hxta1j4eywtqcng4uwyz nxwr0jj2lrf1iuqqjdujwadeudk9o kewaabamasdbgaiea5nosfba3gtmc haruihdi26bret1mxm9nfsyza20 wje5eu425hkitggdnhf65au8b bih3bih0apiadwdpevbu1s58r 6bk3rzetskk8kndkiv7oxl9kd 0tq7zo1jtjhsxvip4pb1zpuwg yxce6abvdz3jqzt00svo1uf 1npyshizvn1obqf3knh1jm tls_aes_256_gcm_sha384 kpbcgfcmi8qwftjotiz4 uaodp0degqhxyyqursgp hucr3crspwuabyswkgh t6ozaaaeawbimeyciqd ahcae0rfgrwyqgl4dg guwzlffh844aoudj3 bwmcmawga1udeweb sp5ctpzw5lykaqc kes6yxtxod7l1av ao13keuclbtne5 renegotiation zoeucba3zash certificates cryptography unfj3vrpajq t4oiz3lkjey compression recommended connecting modernizes compatible jnns0fxsnl negotiated 1731552214 automating validation algorithms essentials connected handshake supported expansion following configure specified authority requested obtaining downloads protocols libressl codebase improves security provided websites s_client hostname 00000003 internet research in7rwkck b1bugk7y requests consider properly schneier securing openssl openbsd command example replace correct subject encrypt igggxo3 written session timeout expired message renewal crontab missing serving trusted trigger clients applied stephen actual should issuer verify return server x25519 cipher public secure master normal netcat telnet unable double domain signed issues trying errors number source thomas title https begun which depth group chain begin oenkw hhklh names bytes tlsv1 sslv3 start point using local check avoid users often below bruce with uses fork 2014 part test your isrg root miif kprs temp ecdh bits read 3645 4096 none alpn 7200 this make like will sure acme edit full that self from such also need into file www org the 443 see let r11 p9n key 253 has 386 not ctx can get may sed pem 10 18
+Openhttpd.Tls:1751722874: Tls.Intro Openhttpd.Configure Acme-client.Configure Relayd.Acceleration Openbsd.Rcctl Ps.Usage Kill.Usage Openssl.Http Netcat.Http Telnet.Http Openhttpd.Website Crontab.Edit Pf.Intro Pf.Guide Openhttpd.Tls : mdmxczajbgnvbaytalvtmrywfaydvqqkew1mzxqncybfbmnyexb0mqwwcgydvqqd ewnsmtewhhcnmjqxmte0mdaznju3whcnmjuwmjeymdaznju2wjafmr0wgwydvqqd exrqcm11lmhvc3quaxjjbm93lm9yzzccaiiwdqyjkozihvcnaqebbqadggipadcc agocggibanuladdkipvsvq4lpmsymfhbnqt7exv3lrmzq6yvqzwplod1wkhnxfhg 9d4icx7vkeigxljrxtgbohflkpzedispqdwkqx1gmewlxrw65a71ur81ajeytjje ixowgeb1kxtgeqkhm4cyywblkidnoeompsrg3usofhs1easdf6io42brmhkilajl miicfjaobgnvhq8baf8ebamcbaawhqydvr0lbbywfayikwybbquhawegccsgaquf mb8ga1udiwqymbaafmxprqtq9mpaemyvxc2wxpivjuo5mfcgccsgaqufbwebbesw staibggrbgefbqcwayywahr0cdovl3ixms5vlmxlbmnylm9yzzajbggrbgefbqcw aoyxahr0cdovl3ixms5plmxlbmnylm9yzy8whwydvr0rbbgwfoiuanjtds5ob3n0 lmlyy25vdy5vcmcwewydvr0gbawwcjaibgzngqwbagewggegbgorbgeeadz5agqc rw9xjef4rvpwdvaarsc8xdzy95cw86eciqclsxo2bqi9coah2trzv3gxq0lnen9r xccisxo0zh4mczanbgkqhkig9w0baqsfaaocaqeapjlhmafd1begi5lxzicgqrdm jccbokgawibagisbbismyi1jcgngriqsynjgynama0gcsqgsib3dqebcwua ozkhle3d61jruhuz4vep053pnxi8yldrd6jedniaqbajlgjapd1p3sfy0vl lth3lm9pwrfbc0rlipaxkkgauvsohbh7sbvumdiwcmyfdohcbrqgw6edtk 8lkkvpbqxkarejnafb0cv29seqe2rtbwzot8rt6msfn59b07o7m4pxqhs 3csgdn7ozeqqs6pbmtgdjk3aiwaunsnlwbdatdwra171lyted2wufdf wqcmaawhqydvr0obbyefaveged5j7eod57c69ksudivdq7m alwvta0tnea2jo5zmoq7nypo7awpri48xndofysb7gk qkfwlwossimnl8yj7sy6hcvegwqhmkviggypniky ct3clhdkfkwcngex4vkrqwlzef43mj9cqf3g3v ohw9lplpvpgnfnsrax7kwb0lt3zsw7caaaazmo iuflfnzr1a5zfjxs4dlfqvu8nuqwqd3g5j thqrpba3i0nowfdq367ap8kr4ciaaagtke awhaqbd0ihqsssyplxfehagmbaagjggia a3ydn63qlziwjfp1gaczzcyuj7a2navx nh1glyzjlktnsc31rkjjlbbjwnptfwih ml9s99vnq91hxta1j4eywtqcng4uwyz nxwr0jj2lrf1iuqqjdujwadeudk9o kewaabamasdbgaiea5nosfba3gtmc haruihdi26bret1mxm9nfsyza20 wje5eu425hkitggdnhf65au8b bih3bih0apiadwdpevbu1s58r 6bk3rzetskk8kndkiv7oxl9kd 0tq7zo1jtjhsxvip4pb1zpuwg yxce6abvdz3jqzt00svo1uf 1npyshizvn1obqf3knh1jm tls_aes_256_gcm_sha384 kpbcgfcmi8qwftjotiz4 uaodp0degqhxyyqursgp hucr3crspwuabyswkgh t6ozaaaeawbimeyciqd tiltedwindmillpress ahcae0rfgrwyqgl4dg guwzlffh844aoudj3 bwmcmawga1udeweb sp5ctpzw5lykaqc kes6yxtxod7l1av troubleshooting ao13keuclbtne5 automatically accessibility configuration renegotiation successfully acceleration certificates representing zoeucba3zash configuring request_uri uncommented significant description restrictive unfj3vrpajq t4oiz3lkjey compression information permissions optionally forwarding production configured jnns0fxsnl negotiated 1731552214 automation confronted connection proceeding openhttpd plaintext listening requested challenge http_host fullchain directory explained beginning recommend important countries reloading processes connected handshake supported expansion forbidden indicates otherwise establish learnbchs examples template sections location searches normally security browsers allowing prohibit downtime properly s_client hostname 00000003 internet research in7rwkck b1bugk7y protocol requests automate critical readable firewall blocking contains assumes already openbsd private replace because provide changed deviate keypair specify listing reasons leaving improve running however stopped killing certain testing working openssl correct subject encrypt igggxo3 written session timeout website padlock address renewal expires invalid crontab cronjob renewed seconds reloads confirm finally observe webpage default traffic ruleset mastery helpful enable server return domain relayd public suffix ignore result should folder modern ensure output number guides actual issuer verify x25519 cipher secure netcat telnet attach errors bottom random unable longer before htdocs daemon cannot double packet filter allows unless edited title shows intro certs using https known strip index these below first above later codes paths lines tells which leave avoid rcctl usage pgrep check start depth group oenkw hhklh names bytes tlsv1 sslv3 point visit about after users sleep needs debug there those chmod chown this have acme used with well root note must your that from will made plan hard only good idea fine some best doas want been then once isrg miif kprs ecdh bits 3645 4096 none alpn 7200 make like also such mean look view more days each does wait were next aren shut html file many org two 302 443 pem did yet crt ips say but may see has let r11 p9n 253 386 ctx get 403 bar png var log 300 www nov 80 90 12
+Acme-client.Configure:1751719786: Tls.Intro Openhttpd.Configure Dns.Overview Telnet.Http Netcat.Http Host.Usage Dig.Usage Tls.San Relayd.Acceleration Crontab.Edit Nsd.Troubleshoot Openssl.Http : ororkotwrtvdrb3tflusx4rbar1bljalivx5i 04189299823525c8271ab890b189e381835a troubleshooting configuration authoritative misconfigured automatically certificates acceleration 429811085347 322888040587 configuring recommended functioning letsencrypt blacklisted authorities alternative directories permissions simpletable encryption requesting beneficial censorship appearance complicate recognized 2055551047 automation expiration validating forgetting nameserver continuing authority openhttpd documents listening directory encounter important dangerous diversity directive beginning otherwise fullchain something following generated dochngreq challenge mentioned indicates incorrect enforcing plaintext encrypted although possible properly overview hostname template examples provides location requests tutorial majority internet provider security practice provided complain searches purposes consider browsers rejected remember accepted finished finalize automate solution nxdomain response controls includes contains computer sortable clients invalid trusted openbsd assumes already started records serving analyze meaning account privkey defines signing staging succeed realize servers network someday prevent domains contact default buypass improve replace private comment subject warning handful keeping nothing putting unknown however changes because keypair defined testing similar created success process crontab cronjob renewed several creates missing message problem looking netproc earlier running follows address usually exactly special another openssl reason signed before telnet netcat delete blocks limits number unable please errors having depend single issues strict should mailto inside secure common exists remove public relayd suffix ignore folder output kca9eq status expire bottom random causes backup istent either cannot lastly double ensure daemon border title intro these being guide https usage first again certs short hours avoid delay using would which email test4 every could since while fewer below there where later codes paths tells after authz token ctzxk wheel check needs fails added 58463 found speak match doesn point types lines index drwxr width class acme will your self many user this that with have also note must else copy doas edit each docs make time days upon fake less both want next more same such only like file plan hard most 2606 4700 f53d 5624 85c7 3a2c says root 4797 3272 stop once case then aaaa exit ipv6 2800 1893 1946 ipv4 they well html used tls dns web dig api url v02 pem are too but crt set has www san don may see rsa 172 248 var was feb 180 log bak bad non 184 216 220 nsd ips won 443 512 oct 100 by cp of go fv 65 v3 mv 01 07
+Tls.San:1751719205: Acme-client.Configure : configuration specification certificates alternative recommended validation configure different hostnames extension important wildcard possible multiple together subject openbsd provide instead specify because example warning handful keeping service grouped webmail however client unable common single server beyond number better suited issues title https using doesn match could while fewer email would sense since might acme file used then this will fail more wiki same fine many that make have with org you can its for san are 509 ssl tls www too all by of as 1
+Profanity.Connect:1751718049:  : yourpasswordhere addingaccount autoconnect connecting supporting correction afterwards connection profanity interface following features username optional written weechat variety message network replace command started program because default ircnow client decent modern upload attach define called title alike irssi omemo first while xmpp with xeps such http file will upon save does once have only time via mam etc org own png may the ask for but set not can one is 01 02 03 04
+Tls.Intro:1751712800: Acme-client.Configure Openhttpd.Tls Ngircd.Ssl : introduction certificates compatablity information authorities letsencrypt environment connections unfortuenly encryption management encrypting extentions transport recognize automatic configure requested openhttpd libraries initation responded important overview security browsers accessed clicking obtained products hostname required actually versions maintain contains accepted possible multiple sockets measure enables website padlock address getting started buypass zerossl openbsd servers details helpful devices network message ciphers feature specify without domains secure modern client ngircd before latest begins chello shello allows leaded title layer price https using works these while order other nodes where known which sites means plain that icon from some free acme your such once been used each sent this user want same also they text tls aka can bar are cas org www and how has not was set rfc sni say by of 3 0 1 2
+Openbsd.Intro:1751709569: Doas.Configure Ircnow.Howtoask : configuration documentation announcements introduction instructions conveniently information considerate subscribers unofficial developers themselves netiquette encouraged opensmtpd reference configure questions searching important community examples template properly howtoask answered archived archives relevant hardware messages undeadly reliable openbsd project daemons bundled suppose package readmes special channel mailing through sending posting install include popular updates source sample system server ircnow before please follow manual action title https pages final often files first httpd using local share there learn lists which these other dmesg error forth also many that come base have want doas then copy work take look chat room find help your html marc misc note such text make sure from most news team user feed org faq and cgi bin can www etc web usr pkg get but add its rss cp by
+Netcat.Http:1751709135: Openhttpd.Configure Tls.Intro : misconfiguration automatically restrictions permissions certificate networking connection following nhostname responses indicates succeeded openhttpd configure sometimes triggered scripting valuable diagnose compared features possible modified redirect location normally document properly security improper language internal certfile openbsd support request example content browser correct problem further netcat errors server telnet offers namely served length cannot double public format title using https known swiss knife print index being alive moved occur found close tells which intro means check there hints army tool help your more send html that page keep type text date 2024 last been this will case uses path with want logs such save man org web far tls get run may few 200 has and wed nov gmt tue 302 set 443 feb 486 www new 404 see var 494 500 cgi due 518 key pem nc 80 ok 14 13 21 41 12 06 15 19 23 01 28 22 by 53 59 z
+Telnet.Http:1751708946:  : afterwards connection background chalkboard webserver requests hostname response modified redirect location example webpage version similar content openbsd doctype charset foreign forward prefers address telnet should length closed family border bottom dashed scheme 1e1f21 eeeff1 bad7ff title using point index press enter twice below alive httpd hello world shown found https style color white black comic serif media this must your html from make sure keep text date 2024 last head meta does want port 2021 body font sans neue dark get the key one 200 tue nov gmt utf not may 443 302 feb 486 css 1px 80 ok 14 12 06 19 33 15 by 23 01 28 ms hr h1
+Openhttpd.Configure:1751708415: Acme-client.Configure Chroot.Intro Telnet.Http Pf.Intro Pf.Guide Openhttpd.Tls : tiltedwindmillpress troubleshooting configuration documentation cryptography verification successfully interesting request_uri certificate conjunction unencrypted permissions information separation references requesting components connection proceeding openhttpd developed privilege configure learnbchs challenge http_host fullchain directory commented requested according documents directive forwarded suggested listening establish processes overview validity checking addition contains examples location hostname sections responds requests protocol actually stripped normally response forwards connects listener starting computer simplest modified critical readable firewall blocking openbsd product mastery helpful replace follows private servers virtual explain chroots default browser address instead simpler webpage perhaps testing working besides website command similar content foreign confirm running finally observe changed traffic ruleset weight secure strict strong manual relayd domain return notice client begins search second except lesson delete sanity enable create serves htdocs editor phrase should telnet length closed errors unable longer before daemon cannot double ensure packet filter allows unless edited adding served obtain title basic light small https pages stack first known index other leave these until certs tells lines since intro would using shown above needs rcctl hello world phone might point below alive debug there those chmod chown about guide after pros lean fast easy with good find book many also that uses note your copy file doas port well acme auto some this will have used look path user make must else text html home into load type keep date 2024 last were stop next grep mode more want org may www etc 302 tls 443 ssl pem key pub two ips new var are url but see try get 200 tue nov gmt has fix by cp 80 of pc 14 12 06 19 33 15 ax 7
+SiteAdmin.RecentChanges:1751680458:  : recentchanges siteadmin authuser 04t15 2025 53z mkf 07 27 by
+Syspatch.RecentChanges:1751680458:  : recentchanges syspatch 04t15 minor 2025 22z mkf 07 49 by
+Lists.RecentChanges:1751680458:  : recentchanges ircnow lists 04t19 2025 13z mkf 07 43 by
+Lists.Ircnow:1751658193:  : codeforce subscribe archives emailing training public ircnow coding lists false https ifend with sign jobs org up by
+Profanity.RecentChanges:1751656513:  : recentchanges profanity connect 04t18 2025 26z mkf 07 59 by
+Ircnow.Howtoask:1751649678: Adminforces.Training Almanack.Almanack : adminforces questions opensmtpd reproduce training almanack openntpd examples archives pastebin problems software homework howtoask openbsd keyword consult located readmes project mailing exactly running before asking manual search ircnow guides sample config errors assume others title https pages files local share debug using first solve good wiki such copy marc misc list tell what show your logs 7777 into when that time must org faq and usr doc pkg web etc did can use all ran don beg nc if
+Openbsd.Pkg:1751645579: Dns.Overview Resolv.Conf Unbound.Configure : misconfiguration troubleshooting installation dependencies repositories nameservers pkg_delete installurl associated beginning encounter indicates configure different packages deletion metadata pkg_info contents overview openbsd pkg_add removed address resolve records unbound mirrors before please system orphan unused stable change title about https faq15 learn error amd64 empty above could local issue read html from like doas that have been find show more this with your want edit list www org the nvi etc may cdn pub ftp can dns due of no 7
+FwUpdate.Usage:1751645174: Openbsd.Install Vmm.Intro : restrictions installation simpletable description reliability installing additional networking fw_update available important firmwares microcode arguments properly sortable security required graphics inteldrm wireless fwupdate devices drivers managed loading control openbsd several however include updates webcams cameras package called itself border issues uvideo amdgpu simply delete title using while after ships https legal image width class patch intro other usage some need this over with such does gpus wifi bwfm will look your doas may run cpu and has for org fxp bnx etc due not can 100 vmm usb iwn iwx use to by os be 4
+Syspatch.Syspatch:1751644162: Dns.Overview Unbound.Configure : troubleshooting immediately nameservers production retrieving installurl associated resolution automated switching specified configure syspatch patching prevents machines multiple overview properly openbsd provide patches release include feature updates setting cronjob crontab running message missing version mirrors editing address working unbound binary brings system stable should bottom random minute sha256 double resolv title https helps these apply start exact which would error amd64 found check your faq5 html from safe doas this line sbin will hour same time slow down jobs then with make sure want man org www not can usr day cdn pub sig 404 see for try ftp etc dns are may be by of os 8 7
+SiteAdmin.AuthUser:1751642873: PmWiki.AuthUser PmWiki.LocalCustomizations PmWiki.Passwords PmWiki.SecurityVariables : uv7tb320n8nw4j8hbwmxauulithnvntazdul03i0eff6qzjboiy4e szg7d334j0wxrt6z10wdfousucloey1jwsw0ivkg6gyvgocjinbim qjtdeoj70cst8ml4gojowul8rflfeb0ljdhqhhrupftuodfudgmh2 ie9xoswkeovtpinzj4ly7empvmpwzc99ia8jbfhfsorxvynewmame 66jkjxosix5cosun3pdyqoecdfk8qlgxyft8z9ygxcngwagxd0meq 1pnquver1cxhbyv5lov9lelgygjh6wynimfb3qzhaojtx5xbymelq wag2z1yjfasuaba4mxmbsou2ko3ustjmsl4nd8idl5spozzfhmfjy pzez59xbud1rgqtfz4kjketart6ktxi3ufshb1prgrlipsrlbu0yc aktvcerbb0sdxyotxcgtqox7nnawvtw5mp3fzrfehnjjchrxgpmuu ulu1o3dw6ai7kpjei7g8qestxykcd2w3fzyowe5hgq4whuqc7n0ai ihauv3tzcsgfn1lwqevtkod52yrw2jtyldkkuvgpb9xaabw4zbfnu xasgfyoxhyutadgrshosxuze1eulwgr8asiasxv55y9v9b9swmtti kzxa069zaurvme2wtkwdzobecad6wq5dc4qaipfumc46kzjhzxcew rbbq6hjhv18yf0x7epgkseghb2dycibm9y8rt0rkvvzwpsl86x7as rgbffhuylfod5gdwiakagosqrfcumusbg0get4yo34cesai3bholm eg0gstvpzzkfdqvcwjhoukjygjheqg5jwipsypgxzfvryuybdyns nvr0aml4vitwsaiwbxomxe5bcpoemizd8ylzgb4z8xmb2vbpbxsx p0f7um4cefnoi5bc22ydrea70mwytcuucc1tpti1gvyjurprgyhl 6ebwthcykp9i58fb2o6e2vjqpt518kagfktykw6kjsynfvpj8g2 qmudpox7rienwmktganomgigewmryogzrbba3hzpftednpygfum hvhl15tubmv02b5mwgufti7im13ewpicurr2itigd9oszvuma2 sqduis8wadu8znym4jkutnibju3ubscdmyqxhsi6lrzjb0d3 lvwv9ovfqynfsrp4eumyu2lj74qi9c7id4chuudje7uxd7u r9bi5akhnf95kewd8tgz1uxewhhxxcyxadzvpgq1juwtaho ss8tuxkvkbof96voledbuucyi9ttcike0yybrzo4tyrae32 g9w8qg4ue8v43o5arh9rduwc7oerlrtfjpproodhsk7c2 qrfr1hwxytpatdc2yvfiveabomhk9w3m4trsy1jhi7ekk m7cpbk5jdy57jo7ks9brzvniuyrgelixeef7rtpwogvxm zgbs867t7iewra9ii4ugpeyujpig74fbgiks0bncopydy 1g59vanvkriwopnzpwnzp4ippsh4p9njje7hcj5oowyy zmxwtgvqfhegupguo2pvgpzimh3xds0dujoj7suipo0q itpy2rbjtkrho3klnbtpprzx8gfv8deutmy31g4rsl2u atlu0ewhjdaiiechhgjmhawd9guli7jldkmfr4wohq8 c01gpw8lwjdosppykaj4c4i87yapdztvkazrzaecxnk umwmoir2cr7niiop2qeaezph2nofkimfrx5f9uhpbm vfc1fev5rchhweu8zhmvaaa5dh8vh6oylw3xfeiaif yk9cfpbfosetivlifjlrzzykg6upyqmoxepksideim lhkxmkz8jjkp3yv0x9ww6uzgjczn3ahkmrqzzjxqn xlah3mevoenpgpaoe1mkj22e2mmaahvieaeyglatu ioz7lg2n4fqy56yfunk11ojrryocf8ufpvljxj14 qo2rq1ioupw7soob8pi1x5gaxojgddwy4f0flsuk afs8a0w9zccpmytwe4pl0uifydvk5fe9g9roqggb uy0qfjunaqhboa5f7tjz0ecj5dng0ugtmv9ndlfw da9wcjtoa0vw36x9jmvhdedcnon8266cmlzcevy hkca3foog9jjrr0i2ijhfqw0wui5bpoqlnwnrgk psiwryupbin7gljgcvnzba4hrapwisefyhmuni uxv3bpvhyrdshbjqg96jhu0vq6jff4ixyveqm4 ethxrqerfaa354dguosuujotxevxj5g1aa71zc 6qnynlbctuprbw4n3ywjgogbhmhpgdctw1umlc obhuysubnkyj8jvsv4g5u7ozxlt6j143wexcu le5wzugfbgd7eoj34bkwxbpy3jcmx1xxr83fy zu7uqwpwimccwio0lw0zce8l1xqapekqj5zs 8qdfodwtozjtuxzkh91hw3ukbb7igotee78i nnmrvuvdgbdtsahmsaepdovxrc814hun9alh ej5u185vundv3ggm2sy1tlmc1rxcylkfdfm z98eph7otcsgsxnknjqy2dae3lwp5n8skas l7vubxwc5llgnc83mofl3t1fic7ct4a1dkc wstnetyibyndhha4tvvotzuep3qo4t1aju mllh4vqqhgo8thxisycj3o9gxmqhchlsc1 yv2ne76jgp6ptzu8sinytoaai6zx9b4zhw mxprwnztv15akg39ugen3e6bwdvils1ny wuqziqxgofprem0ltjpu4jtkqhcrqsmke rywyoyngb8a92316xg2hrrbxjmu9dnym civjwtmqvmsoqtgc1bxugoao1o3kqgov ycsfmmxoj1ersj4ie00egabz4tdf5cvj 8ayeqbf2rydjavxaamqaau32fkpvpurg u0yfpdpmxysiowz53lupsbfx6gwur6ay qrco9ginmv2ejeldfbe31oz2yclac1ik zhb46wocsop6occy4eexy7b2nsbfhji orbrzwetldeoygfpq1ilnmrnc1uje2q 84zy6cqydcxzs60avrhndi1c9owhnzq sbfyefrwctlrx1quqrgafusyowyyjzw drhfmw6raqrxzf3zdvpvntakjorgphq 3oxtsaj8x80dyigvouihe2zjdwfkn22 jsvcw6ejfypdaq5ofim7nohbcrvyrvg k8f2oxfp4ipbjllclnakeh04qka4bca pdumkmvz9zctvlxkdcpzdwvzy8xg2cm vnf29ixrgyonlyjlwltiaq0hvlfmktc hmezurgyzvkxagxg0w813ve62fzyxbg tv62dbotx3hqstfucuc3mrnl2xtjfai mr35li6zvu5cbo7z7jacruze9jvklpq cslnbsoosrjy2gatllybzznvqk2vkaq 3yqmn4ja0o7nxkunz9iebct3xqagt2a jeukvrvwnmnfx3qgqnn5sabpn45jgna v0z18o4mwjtqz5jf4wv2doufp1mdubw bzsoxmp7owshe24o7fiiqvxxqxktul6 gronpdkh2nsoqx4twmefwenfid9b6n eklex8ktxrvgzzktc5kpkezpzafsbh pcztnczypyvyxslw0eha1ow1vgzhgh ec2hgiszxo1q5xdyyfqozqubk4fhs2 jp8or2zol3npv3vqgeu8aemdsvkadh agrmydmtrtv5j9ugzohrwduprerl7c ey00b8w6olostkiyuwestefklwbh1j masjz1qzlxjxf0n65huznoetifbrz uqgdbqdoluvdev0w5fthbi5kakvxb z1hgrq8ikpue7k9cmk9sl5xpwfl8c 0dsq4eby2pu72cd8brkmkughclpyl pdczw1yt7vm2l9k7n3vhjocykxwae qaslgkztkc2cncvblpoz2dwcosy5s hkznqgwolbzgxympawplkhiktiv6 7p6mjnlbj5nebyazfgramefu9ee2 9hbw193lb03gcnggdkslf1ppclqc binnpzxqolydmhezezeihewrlhvg fvx6enlijp803jwidmfjdo5th4xk nkxwxnngbzm9fs1enbrfuuawwlq 1uajaodrgaoxlyabfuectxulwpf xgp2dx1gezdrnxawf3xlxonb9ps iax4dfaxzp9uozjsahowah7dtbi tfeltu2k9h08hwq3sci6wd6jse 7doxdoqywmaounqwli0yieosgq a0nce4yaeelti78la6kz5vxuc2 we2yrcw5jtxroskwb9dizesl4r biq3ofpdk7snwc11fh04efjhyf yfj0ulciacmdioryqqejwla4k 71jltjbjajnswv5bgax331mgu ehk94ub5zvoggkpovufykrnbo vx86rtea1slyyruevsuore4h6 i0owuedgkabq6gwuoq5v5e2o a7zaamj7kvwdn9yanfqv20ag fomakvhwn8kn03sxgksiqryq 0jozbg6xmfccs2cbiykufiw3 y1ooa0x4ddcekgsjpgkpjpmo s3mmcyr8lzbxpckon7v0vo79 natdp7x0rwn49o0j856lz3fy gwcs6rlxghahs5dukoe7mmg xjhd7ohzh7ag08whhcsgcdu cjli0qjweqvtrrahtiafsoq lrwrdezrbvvnshf4v9qk7ug njqmeqej1mvzbhbqzb34guo lboktrzby6cpcbxvx9i4qni 5msdan8yv21snlpngzyp3ul 9omzcn6xhzhturuqevwhuu 6ko5ph4gyoanqyihtctgma gqoob7em1lz6ohyabxhv5u 3jaodve4mftaqjnrbeqmbr peht2wtpmlkegdedywddwh yzx2efmjb2tstlbpzjvbyi h1ebwcfkqkscku7srgylfs 2faeti2yhn3wdswmj7umc6 kup1dogmojd45nqsv5uqud fiwjo4qobuwjgpvp94qqy0 qybnuzyu6upsrx6zy9lsvs dpwgproatmm8vfwsa9ugvw hhddyu4r8u08etxbargkbi enjlijpqrqacxicen6u4gy mz7xzjzwqbgcb5fr2jtjte wlt6pigtfmyqu55jqg8pvm sj593ercmttjm3fk26hcv1 onkf9n7zptixlmegxjjog yydkuesj23fyvvvwsj0wd xudd8uwoxxsce51f89nn4 8qrrymyolfpgjtdkahs5m socjm4cmoilvjivbc8khe pung6ln1yvvlbhupjybif mkhixzcyrdshlu0fm6ch3 ulkjdqk1izobvkm2j7cz2 dxdjdqo5m7qxfdglo2qpc hmdvlziy2johd3nnxbbcd omqamx8c88oi6aps9rjas 4a3ubwzs3sir8r5q1fxp6 pltltcxdjnf2vryi43vyh whfqq0jm3vgux5hdbxnt0 ouorr5eqof2paopebvaw1 neqvlwxdft1lds30oqo28 koemylipc9lfxwmzl7z3y kfgqaqdokuvt59y6dsxpn ucvbrt0gpzcqdknvfmudm fxiqoyvxkfhk7yfqt3ky5 g9asiddmu0hhoinsarerc xqnpth6al1kizgex3zb5r qvhtmtmyxpj0wcsvvvitz f4zua5eqrchm27oovgkb e1u8nykpmimoyfo0fz7h 7ptsttfhgfy5gljy7pkf f2cwt7rydsvrf0rpok1g inef0edyym7owq38us8b 49eddxffecgs4sp67juk 6ole59b9mytmzfxfmjv2 ay1xpkv5lflmqxlf3cgu pmumzjc5phkk0rrkni54 v2cgzesi6wtmrcaucc0a qu3bqdxc6lcobpmp3ewm localcustomizations ypywz3uernyqwc0oxs4 aqoxbsz6tkaq6zbo1tm hmxvx33qkei6j7qd20w sametdg8clzbquz8p76 iag0cwxsruwvm00t7a ztyudzxyfmctdryepu 5itiwlrplpj6ftetsx otx5vcipesddc56y8s ceo7yksgn9uwsxwj8l nwv81niquopiisnaae fp7oiarmjfgalbm3is mm5fkbh3wiibzgojtu wnxd84phwsssrcdxn6 9coq2zkunfzjunx8cb st8mmnxusgzx3akxu kjr6tvshk0hhwhdv3 zrenqeftxooceaawe wmoubc5jmwjtljjkk clnznlel9swsn4xyd oc9jb0oetn5rm3t3h yz7sobvnxy5dtt30h ton0wxx68ocqgdgnc securityvariables 7mlxgsurkmnaelj6 h7k4iws7bu7ly41d eqlfgml2sfuopuh7 kynjefuacurq4esg pl8ht02qfvzkgxxg 8haadaxreogkfd9c nbgzmpqx1gfadg3e l9droffo7vzcztyx bgl5db0pbw0xixwu w20ji3bo8bxz5drw 9xrlszfqwaplkpmm zkmaoqobpo9seov4 nrfg9q0zawtcbjnw defaultpasswords nolinkwikiwords m3vvbxqcimslxdp jp4auon7wjygzdg mbkc8cuskhuqbda beiclitwodvkuyg category_mirror sveqgihrgb9i24r vy9hpakkevcrs2f lmxahw9irmgumhy 1n3jwaxihhglefo sebovrbswkugraj nstbbogpojkrnel ailkpigbkmoflkm uldshqanxmyo0zo blu0weexcvofpgf 3iokkmeyzcziymy b2sqibohgzgupob wqa6rttgbbmviem raghavgururajan cherrychapstick pogz4btt8ja8fzu rzlneutjupvqxga wwsem8im4qe4kgb fvvzrhqxdanhlqf authorisations authorizations enableauthuser wxur7gwbhxtxru sn7ivhcolzdmok b3egsdgj3nijio jdekoeg7ueannx huzkhlwnvmvzpa xuq06t1tpt1fds smiwzcq5sptw2m vmibxshkt3dnys eklzrcmvedpjck legzuuq15zxpxe vaseocpdiuzqck htdeaxyyyo8hc9 configuration ancientwisdom f9fgt0srt04be ywcuec1yjsztc lin1gjxbbogbs wb2sfo5grmljb openbsdtai123 phsartzftbvdc bejelentkezni frleiwxjzhzsg hiqijvgibsp1j 5ysifk2tlkpwq honest_monkey nxr4bhwdufkrj b9jkkv3bmdejx documentation instructions include_once r7d4u6dkw4qo l2aw44ypveld rottenbuytes z0yvlf3tonqh searchsocial dr9um9nkequ5 aamjpfeqogxc pjuebgoxw5ge ins9xxwb9n4h gv0hgxcnq7hn pl6mpr4oevmb lzi4vmboxpjq kltphcaeztoj 9x93nprdutyo rqn0brfrakl9 dragonmaster gp8sc432fsy 1yx2yfpb3pf xhvxanipeii oddprotocol vdjkr2tambh planetofnix zny2cvztvrg gdr3mpykmfl ydst9exlfyg bvegxfnzpuv otlilpysrm4 f4eesyrsb1n debiankaios xtb0zdegrf1 5srfraco53s mdlg7lxw0ke generating connection extensions pyritepyro inspirenet ircforever cqbdq791ds 7oyx8h15yl thunderirc locustlord miniontoby qge5dqqnfw 3mzsz3hyjz irk6sag7aw hydragyrum pystardust summersonw 0x6vt8zflt jsljbw0pyr posterdati z035hjc024 wonderland filesystem lightblue generated bsdforall 1t5wabidh lecturify nastycode voidkrypt ztrdmpvcu i1dbsojqs shelltalk xh4gyeydm outge5fng fkkvb0omc w7cptvctw 5vthrlqy0 neonshell noxturnix fee1d3skl fqcz1wfmv astroanax gvlyotbvn craziness noisytoot evfglv95k starewind bugzbunny 9refsvlyg 8cndcvokq sulieztya hqnhbzrgg beginning encrypted something authorize specified belonging obtaining siteadmin identity overflow accounts splinter tmiebubk inactive bountyht th8u98nq teamless comptech unsorted gezwnjqq 2kllevcx obv5wmjw theguest wwgi6nv9 snowcode aegilops q4m0jffj gtlsgamr tlwqzfu7 suzerain mandarax fallback 9h35c3hr giziydno jrmutest v3zq2jnu tiramisu akoizumi redrum88 guardian initfree udtwqlny monsieur b13o3k2j username examples 0gcdan1a wsp2r80i specific external htpasswd summary bgcolor padding private message enabled appears present scripts freeirc tomglok cloud9p bvwcivn donjuan xxmqpw3 members gandalf quiliro waitman t9iowtc geekzer 05fmm2l ircuser subline baytuch 4ztyavj zshnf2g ik3apry zouheir spookan bangcat ebhzbn8 3mvnu1n mistera asdflkj fossdev eodrc6x naglfar kkzzumm nickman nixdork wh2d8m6 shokara pufferf ojtrijm limutoo thelion specify builder xv30yz1 leading writers editors sources define margin pmwiki ircnow action shared bcrypt places should secure manner admins maddie tcache groups moocow forero lutzke sylv1a al1r4d kiliro sergio bogani lohang menche pirata dennis shrini ui0uos yalbcu anasko quofan 6knc4w bwfdzd hhgmlh koragg monaco yahsie arthur caesar zxtv1e erhard almajd josiah rsxxte fvrbe6 trench limits lelfey jacobk devune yiming kilroy entrex result logged either people based block black right https index users other doesn farmd ifend izzyb saeed yonle rpblc maxxe rrrry c8pzu pyr3x pkxzw rgvua ugxga sarah uo1kp jykzl zlpwd pxkbu error st13g w16wa d6cu6 moshe 55vvs 4h5jw gpzok lepht scara glono nicoz robyn lbtwy zleap 7hjez hed0x gj1ae sxngg allen kolev tqosd barth notes login alice saved pages carol left auto this used hash with here like have them your f2zo matt zfgw njpc fizi taa2 siva db4w fgbo kqpp ayam tony kont dima jgtk fear skar punk tool hawk jan6 rahl icri 41ic 20he pbug geze xfnw qsg3 zzgr form that will when look attr mean sign dave then from path ldap 5em 1em php see can mkf pra gry w3i zao gcz old ret 2rp usr 4y2 1xa ixg jlj g1n m16 pkn tby zen oiw jim bob any uid 09 07
+Tmux.Config:1751398800:  : configuration configuring workstation connections complexity shortened different following hostname commonly multiple sessions machines terminal default instead windows command modify status option reload source change hotkey useful screen layers remote single reduce prefix title right using local could these enter tmux show echo time have keys mode file ctrl this want same uses also your with each used from line type bar set day are run ssh may via for can fly to of as by
+Humanities.Reading:1751396337:  : utilitarianism metamorphoses disputations commentaries experiments exploration meditations christopher tributaries misérables reflections antiquities philippines advancement marcellinus montesquieu consolation illustrated nonfiction meriwether adventures california dispatches connecting narratives expedition livingston protagoras musketeers muqaddimah revolution capitalism schumpeter protestant federalist occupation population hispánica crevecoeur chronicles philosophy humanities traveller goldsmith montaigne histories herodotus companion mountains alexander confucius symposium euthyphro cervantes alighieri sophocles guanzhong alexandre hunchback shahnameh galbraith socialism democracy thorstein leviathan suetonius condition friedrich authentic babington principle guillermo céspedes froissart christian wonderful pimpernel gulliver jonathan journeys conquest castillo journals colorado aurelius battutah interior prescott masterly writings stickeen columbus humboldt republic phaedrus immanuel wolfgang murasaki kingdoms apuleius battúta exupéry complete perrault golestan rubaiyat ferdowsi affluent josephus hamilton atlantis american caesarum tusculan learning agricola greatest lippmann macaulay anabasis ammianus polybius plutarch américa contract rousseau boethius anderson sherlock robinson brothers children treasure thousand mahatma thoreau travels dinesen history william unknown núñez boyhood voyages letters zambesi jacques cartier mencius apology timaeus gorgias aquinas ivanhoe quixote odyssey oedipus shikibu chamber romance camões beowulf antoine leagues phantom charles masnavi sa’di shirazi khayyam khaldun meadows chekhov liberty economy society kenneth leisure francis emerson getting flavius madison working england bushido tullius younger carlyle germany tacitus beamish gallico opinion malthus barrows aladdin arabian russian gillian bilibin hamelin cruesoe willows railway scarlet audubon reading gandhi oliver essays michel london george orwell africa bernal wesley powell marcus álvar cabeza volume mexico nature summer sierra phaedo thomas miguel divine comedy aeneid virgil johann goethe xueqin golden lusiad margin victor little prince cristo center around eighty gaston leroux gift  masudi france stuart seneca theory veblen spirit hobbes utopia barnum papers engels nitobe cicero french julius walter arrian empire appian robert farmer nights retold fables wizard secret garden holmes gables island family reader truth henry david paris swift marco spain díaz lewis clark james river youth first being books plato crito homer dante faust genji cheng dream three luís water naian saint count dumas notre under jules verne earth world opera fairy tales saadi hafiz divan hafez jahiz anton burke weber stoic class ethic bacon souls black ralph waldo money lives jacob japan inazo pliny march bello civil lucan later avery aesop piper grimm green swiss with down isak true cook john vaca peru muir four kant ovid west born yong hugo dame days rumi omar mill from folk bois more jews half riis vita 1844 wars rise fall good life jean laws kids hans pied wind just anne new del ibn its von red cao luo vaz jin 000 max jay how of by 20 oz
+Ambassador.Networks:1751220352: Ircnow.Ally Ircnow.Networks Ircnow.Ilines : communications onlinegamesnet aerospacechat establishing coordinating allnightcafe explosionirc hackthissite organization universalnet universochat unviersochat responsible advertising discouraged simpletable description communities chathispano chatjunkies chatlatinos chatplezier chatsystems roleplaying darkscience forumcerdas germanelite insomnia247 kampungchat overthewire performance programming environment trendsohbet umbrellanet ambassador allnetwork allz4masti amorlatino banglacafe chatlounge digitalirc friendsirc irchighway coolserver liberachat nationchat technology redhispano shadowfire characters spiderchat superhosts tildeverse twistednet virtualife zwergenirc quoservers obtaining alliances teammates alphachat amicachat canternet chatgentr chatspike chewbakka darkfasel dejatoons desirenet enjoychat freeunibg freshchat shelltalk gamesurge globalirc community hybridirc volunteer ircfreakz ircsource malaysian malikania mindforge puntochat quartznet redlatina robothive rootworld minecraft pineapple swisschat siamnarak streaming viciochat zandronum nastycode lecturify networks handling friendly sortable absoluty afterall afternet allrednc buenchat chat4all chatasia chatopia chatzona darkmyst europnet frantech freenode geeknode geekshed greekirc provides services internet irccloud irchaven librairc oltreirc openjoke quakenet recycled scenep2p simosnap skychatz slashnet smurfnet spigotmc spotchat everyone oriented svipchat swiftirc swissirc trsohbet tweakers platform undernet romanian zeronode protocol software telegram foreign partner reports contact support example perhaps bridges closely address 2600net austnet ayochat azzurra bitlbee blitzed bolchat brasirc bsdunix cavenet deepest english chathub chating darkirc eggdrop epiknet evilnet geyiktr gigairc hackint hazinem icqchat irc4fun ircgate irczone italian juggler etnies6 webchat browser morphie netchat rezosup scratch snoonet sorcery technet thaiirc xertion channel ircfree halogen discord gz4m3m2 ilines ircnow future relays column should border hacker orange afterx banana apropo jujube barton bsdnet modern chateo dalnet efnext ekolay exchat exolia geveze gotham ircnet kalbim luatic mibbit glined rusnet master cherry sturtz synirc stable secure twitch tested zonebg matrix invite title other these abuse email claim users today width class grape 42net anope atrum bgirc chaat mango lemon based edgy1 efnet esper euirc evolu ewnix irctl amici myirc nfnet ptnet rizon lucky where place uugrn wenet zairc zemra zenet zoite zurna https will with from ally also page note they best that many want name 6697 6667 pear irc6 plum lego axon 6668 ipv6 noxt 9090 ipv4 irc2 text gimp 7000 ircd link easy fast your oftc perl pirc 6660 room safe used bncs 6670 wnet nfld city xmpp may but 100 znc yes fig ask 127 xyz mif non jp pw uk gt tk xi tv w3
+Openbsd.Ed:1749689683:  : replacements dynamically usefulness expression containing different arguments standard commands document returned combined includes notation filename advanced executes replaces previous examples anymore mounted assumed termcap happens writing current without warning unsaved default verbose instead explain toggles deletes regular reverse symbols repeats opening quietly scripts openbsd editor simple linked almost always behold mighty manual crisis friend border append insert before cleans buffer errors number prompt search marked which found doesn needs exist often ships power these niche there times worth modal means modes input where empty enter after basic opens print quits level shows lines until finds moves joins first upper using handy when life page gold your only like text such type into exit this will note that some they same sets last undo read from many them done nthn next book can usr isn but ksh are too day has get did had mth see ah wq wc nj nv by lc 1
+Oidentd.Install:1749397769: Oidentd.Install Identd.Configure Oidentd.ZNC : installing afterwards necessary providing configure interfere following suggested spoof_all uniquely identify spoofing optional username oidentd provide bouncer account changes prevent confuse openbsd whereas package ability replies pkg_add _identd warning ensures default example botnick replace desired public system easier notice enable proper socket inside starts bootup title helps which shell users based makes abuse third party first local group allow needs force reply your this with will bind doas sbin then echo wiki work ipv4 that runs want irc can out was and etc put usr znc now to be we
+Oidentd.ZNC:1749397716: Oidentd.Install Identd.Configure Openbsd.Znc Oidentd.Changeident : configuring permissions directories changeident temporarily recommended installing identified afterwards necessary providing identfile reference configure interfere following suggested spoof_all symlinked connected setformat permanent currently uniquely ensuring username possible matching oidentd bouncer prevent consult confuse openbsd whereas package ability replies pkg_add _identd warning ensures default leading account through loadmod setfile spoofed however desired public always making easier notice enable proper socket inside starts bootup module loaded create folder tricky chroot latter rights client status global appear delete title helps abuse https third party first local group allow touch chmod chown write which reads least while using admin reply that your want wiki with base will bind this doas sbin then echo work ipv4 runs make need home from made more fact turn what must each send sets does znc can ban and may etc put usr now 664 755 are rwx irc msg fix new be by ln
+Dig.Usage:1749079449: Openbsd.Unbound : 4fede294c53f438a158c41d39489cd78a86beb0d8a0aeaff14745c0d izbhjsub4nrdwbjfoigoofxfgdx4drdflsjymtec0iixpdokvkbyyp1a bnvfctax1w1oiurbnlbt4usuc2krxwfuxuultcthjei0bdebbnwezz 4qkg9jzlco1h1srg5zuokl13u8uabt378ic6ajyrtfvairk3s1sy 3awzwovpnim0u4rccuz4nz6nprazveeapwk2hxkqml qeps3buvqvl14ttkgltcuuxqooacusuznwbu3xaj xuc0kelaamwxhlqjy4pe75fgzgpo3wwrqgx4tpev cwjnmkinfyf8v9aoxwiddca03xofvshzpcu5zo8 sjrx7aawp5wpswi5iofzkuot3bv0mzpxov utzafaqh4dc0qal9ufjiuqnepwtalagcnz nv31ewhff5t0tiwepsrluipnfc3anphea zunq39daer9pzgakssyhlgxc7wkacrxt 1i870vj5h429vj9pci7ar6e9gki74tr7 1i87r64gaju4o91mhkbu7i9ekbs7k8ut dd5mibgab03im9bnjrjia69igfiona2m dd5nd6btbkeq2d0352tnpa24dskua3du modc09a40cwnfyzaioffp7bkcxfje7 piadxjop4abn6w7l6cplv128wxebf dqvwwvpsmkoir8gmrfljfxxq46hl vb9kjjyimzrryzu3mmbdc0uqiiai igqv2xkjzfmnu3o5cz5z321oab o4aveplpbu0xvrpmhshweep v3airebvv9tjnmyqxtsdvni dh8tx9wwgiqrto6rlnl7p la9t83cnutqkmbzwfnzr jr1wne6pxvrbjpas2ocx 5ewquv1hydmduitnsue dqhlyhfjiu9lham9m6 a7kpppp36dpqiwt7kb kurewcvpge4gbbwrrt xv16tqubgsqhfd3w2 rdl9kus23ps65h6vz a3jr31viutgkzuft jxwcrg98xpfsmcga 332539ee7f95c32a troubleshooting 20210516200000 20210503190000 lv9k4hnlyozz3r 20210525020414 20210504010414 20210522152710 20210501142710 pseudosection twbo0rwues0sp authoritative milliseconds xs0zp5wixlqg e3dzg9p63mkq nameservers reconfigure 3yb7pkjaukt invaluable additional connection propagated delegation especially nsec3param 2021032508 authority indicates succeeded important different responses vjlcpfp7u completed hostname question nxdomain believes computer exchange retrieve expected received 16e1de32 querying backward previous tutorial utility helping address example options noerror version success failure records reached openbsd unbound caching details request because suppose correct answers changes testing offered opennic getting default returns tracing afilias 544jjki qrcshgo 1209600 started lookup errors ircnow global header opcode status exists cannot resolv please longer synced public traced useful 518400 hldbqd lkiwza 172800 g9zqga cherry banana jujube dnskey rejkrb moving action title which 15341 flags there other words timed could local means entry value 3600s after valid tells asked might https shows given using works rrsig 14631 bytes 86400 26974 mango lemon peach guava 30453 bmm0x admin usage with ipv4 edns 4096 msec when 2020 size rcvd this that zone does your live hour will took make very want what have like ones many mail aaaa ipv6 text also used 2001 4860 8888 path find root wvxu 1097 from info q8bz pear plum 1r4g 1800 7200 part dig for run org cmd got udp 192 168 485 127 fri aug cst msg are but out etc has ttl and two ns1 ns2 txt ptr net cxp lxy 198 nst 784 soa jhh 907 500 251 130 see end own nsd 55 mx b2 93
+Hosts.RecentChanges:1749027681:  : recentchanges configure hosts 01t14 2025 jrmu 39z 06 40 by
+Hosts.Configure:1748788839:  : prolianteth1 associations prolianteth2 nameservers oddprotocol localdomain associates associated cisco887va networking consulted addresses separated character indicates localhost interface following configure database internet loopback mydomain zxhnf601 athlon64 warning openbsd instead aliases peppino comment ignored fastweb indigo2 gateway before coding values change stated manual format simple border spaces starts title https hosts avoid using quite holds every field akasa other setup file hard that best rely each line this ipv4 ipv6 more tabs from edit just doas with four plus fe80 16dd a9ff fee9 also faq6 html and org may any etc 100 one end use 127 106 d17 192 168 lan see www 20 31 of vi 24 25
+Unbound.Control:1748749150:  : flush_negative list_forwards certificates nameservers generating dump_cache validation directory following validate hostname previous building solution unbound control openbsd private modulus success created inspect example failure invalid because manage signed client enable lookup reload config record cached marked dnskey anchor title https setup which fails first error 45846 rrset trust while chain zones with keys self 3072 long file used read time this will info you can org and the var etc rsa bit are com get all of 01 34 41 as no
+Ircnow.Servers:1748651212: Nastycode.Hardware SplinTer.Bio Oddprotocol.Hardware Error.Bio Bsdforall.Hardware Planetofnix.Hardware Izzyb.Bio Ircnow.Hardware Jrmu.Bio Pbug.Bio : afwiql4eppwbyoipvrzgkzqnc3isebwovknbba7wnnkym7hku3ndqqqd bsdnetoezbtsbrzlnrgxn7iv6qokouuyr4dkd7f2xt6fmmacvi2kjjad novanetia3hthx2mlipvunm3akkvreuztojzixxmm527odjax5yvj5ad 4ufrikyorlatp5ekgz6tlre22v6b5jxqbiid6cp7nuhemklukiohidqd ksr52n2hs3g2mxbi3rkwd6knm7ow4mv5kryyqsgikjegn7emel3555id ircnowww2n24aluccfzydqelohej55yrgfkpnp6jc6geijmqht6w77yd 6sntav3syf2yls5a sysop_nitestorm thor_of_angels alphabetical simpletable oddprotocol planetofnix ambassadors federation inspirenet ircforever thunderirc pyritepyro committers governing sysadmins different encrypted associate bsdforall lecturify nastycode shelltalk minutemin codeforce fediverse fosstodon internet services hostname sortable bouncers location hardware splinter bountyht outreach almanack servers provide freeirc hosting website project mistere border jujube tcache duties matrix mentor width class plain onion rpblc 31337 texas https error izzyb email self team ipv4 ipv6 text port irc6 6667 6697 jrmu nick xmpp nfld pbug run its own who 100 org bnc vps usa bio gry jlj
+Main.HomePage-Draft:1748651030: Freedom.Federation Ircnow.Goals Freedom.Freedom Gry.Bio Baytuch.Bio Profiles.Yonle Profiles.Tcache AncientWisdom.Bio Profiles.Jrmu SplinTer.Bio Vps.Vps SplinTer.Hardware Oddprotocol.Hardware Bsdforall.Hardware Izzyb.Bio Thunderirc.Hardware Jrmu.Bio Ircnow.Hardware Ircnow.Servers Minutemin.Bootcamp : monkeybusiness45 sysop_nitestorm ancientwisdom disconnected libertybell simpletable planetofnix oddprotocol federation themselves inspirenet ircforever pyritepyro luxembourg posterdati thunderirc interested community sysadmins different following minutemin lecturify shelltalk schnitzel bsdforall nastycode voidkrypt bokamosho anonymity protocols currently excellent improving ecosystem provides internet services sortable location hostname governor profiles phreedom monsieur splinter soda_man hardware bouncers messages download security multiple networks combined whenever bootcamp examples homepage freedom servers ensures baytuch naglfar thelion england novanet agroena freeirc receive offline request channel bridges account reasons hotspot storage support parties hosting openbsd reading working covered ircnow attach source create border tcache yiming london entrex dennis moocow forero sylv1a inter9 client cloaks others relays useful access export guides topics title users goals width class ports vegas https yonle rpblc maxxe pyr3x allen izzyb roost barth miami 16667 16697 texas vpses while helps later bible since hides sites email total third rsync learn pages about draft that each with team chat logo siva york lawl leia wiki 72px jrmu 6660 6670 type full list will save your once also lets from bots this such wifi news more give imap smtp want sell data sftp join ircs here main png one its who can 100 usa tls gry bio org gif pra svg ops any vpn get 1gb pop not scp add git cvs how aim by we
+PmWiki.Functions:1748298208: Cookbook.Functions PmWiki.CustomMarkup PmWiki.CustomActions PmWiki.BasicVariables PmWiki.LayoutVariables PmWiki.SecurityVariables Cookbook.PccfToPcfOverride PmWiki.LinkVariables PmWiki.OtherVariables PmWiki.EditVariables PmWiki.UploadVariables PmWiki.Functions PmWiki.Variables PmWiki.Internationalizations PmWiki.FmtPageName PmWiki.MakeLink PmWiki.ConditionalMarkup PmWiki.Drafts PmWiki.IncludeOtherPages PmWiki.UpdatePage Cookbook.MarkupExpressionSamples Cookbook.ParseArgs Category.PmWikiDeveloper !PmWikiDeveloper : markupexpressionsamples makeuploadnamepatterns my_global_var_callback preg_replace_callback internationalizations enablecookiehttponly array_search_replace makepagenamepatterns internationalisation enabledirectdownload pageattributesstring callbackfntemplates retrieveauthsection enablecookiesecure callback_arguments intldateformatter cryptographically callback_template pccftopcfoverride linkpageexistsfmt linkpagecreatefmt conditionalmarkup includeotherpages securityvariables enablelocaltimes saveattrpatterns replacement_code htmlspecialchars get_magic_quotes defaultpasswords retrieveauthpage readpage_current disableskinparts asspacedfunction create_function qualifypatterns string_or_array uploadprefixfmt groupattributes initializations layoutvariables uploadvariables pmwikideveloper customizations inconsistently enableftimenew search_pattern authentication specifications pageindexterms basicvariables othervariables handleactions unfortunately password_hash automatically compatibility double_encode parenthesized substitutions corresponding administrator authenticated authorization configuration correspondent authorisation recentchanges notifications customactions linkvariables editvariables installation array_values accidentally custommarkup markuptohtml subsequently restrictions successfully representing alphanumeric linkdownload isauthorized conditionals enabledrafts include_once conceptually interpreting asspacedutf8 initialized information gmtstrftime simpletable pmsetcookie my_callback roepatterns rospatterns manipulated backslashes equivalents recursively subpatterns interpreted definitions fmtpagename translation occurrences directories permissions immediately imaplinkfmt appropriate downloadurl sessionauth authcascade alternative pagesection raspagename responsible unqualified brackets〛 translators explaining gmstrftime deprecated additional previously developers compromise difference reasonable containing deprecates strtoupper evaluation constructs array_keys references ent_compat characters ent_quotes internally fictitious directives stripmagic processing assumption incomplete conversion sufficient urllinkfmt formatting associated attachment extensions linkupload ff3w34hash implements authprompt specifying especially updatepage preference regardless identifies accessible preserving disregards historical overridden categories functions describes correctly typically timestamp different including platforms dependent installed providers depending available currently displayed formatted typeerror returning providing evaluated anonymous following performed something converted quotation specifies processed described sequences remaining directory safe_mode exclusive processes specified alternate lowercase validated parameter pipermail operation important searching generally protected otherwise 〚double container auxiliary inclusion groupname beginning technical preferred retrieved necessary stdconfig disabling parseargs wikiwords audience advanced workings overview instance cookbook relevant intended language timezone changing replaced shortcut slightly updating unlikely readable versions provided existing php_code required optional supplied messages settings continue contains haystack callable possible creating displays warnings multiple varibles relative absolute encoding modified requires sections whatever although inserted commonly modifier markup_e contents verifies converts assuming replaces headings restored includes checking manually finishes acquired released makelink linktext computed intermap resolved removing unwanted attached uploaded returned respects sessions elements authlist building condauth prompted browsing listings combined separate extracts anything selected original imported wikitext probably apparent produces included provides feedtext behavior revision ignoring directly sidebars redirect declared category summary writers accepts recipes without because behaved locales hosting percent formats reasons reusing earlier shouldn outputs english ordinal january timefmt visitor between missing strings integer pmcrypt authors matches regular migrate usually example suppose causing running omitted instead creates globals snippet calling notices rewrite comment subject passing shorter applies markups invalid removes expects results created matched escapes returns details greater already ignored control applied finally escaped scripts imposed telling written editing writing reading another follows linkurl linkalt defined uploads manages keeping checked refused similar publish history loading through however updated happens prevent context pulling blogend browser several numbers sending attempt notitle admins useful called widely became safely system better always rarely before suffix either seemed intval strong caller second lambda cached italic future passed allows arrays simply cannot review patern source become having unless supply stands inside quoted single inline delete assume around strips engine occurs vspace mostly mkdirp needed checks unable aborts modify server shared target anchor beta28 forces public groups writes authpw passwd levels secret bottom 012804 entire faster things mypage obtain object starts square dollar stages higher marker refers pulled tabula enough within header footer noleft xlpage brief these added https which cases where pmhlt calls would class month names works since human 25t11 frame false empty older raise first there third style green wikis pairs could newer needs limit count flags regex makes named ifend links blank sites never front marks wrong right rules block notoc horse _post under major apply prior while after order doesn might files steps being means comes takes every saved user1 three farmd users april going reads looks given shall meant signs curly later chain pulls cdata about notes mimic house tasks email erase this more sure that been psft null uses your were they also show from will 2022 1970 cast salt path wrap same font ppra such when real ppre into prcb vars just than phsc true many 8859 wish them _get lots adds says each fmtv chal best near said 2005 much stop soon kind 301a 301b pack rasa easy via www net had its may try day 1st 08z dom two few now pss was iso bit don div xyz txt ids org isn xml rss won of by tz 09 49 62 56
+PmWiki.BasicVariables:1748298208: PmWiki.Variables PmWiki.BasicVariables PmWiki.AuthoringPhilosophy PmWiki.EditVariables PmWiki.AuthUser PmWiki.Categories PmWiki.WikiFarms PmWiki.WikiGroup PmWiki.GroupCustomizations PmWiki.LocalCustomizations PmWiki.LinkVariables PmWiki.WikiWord PmWiki.MarkupExpressions Cookbook.LimitWikiGroups Site.Search Site.EditForm Site.PageNotFound SiteAdmin.AuthList SiteAdmin.AuthUser SiteAdmin.ApprovedUrls PmWiki.Skins PmWiki.LayoutVariables PmWiki.Functions PmWiki.PageVariables Category.PmWikiDeveloper !PmWikiDeveloper : enablepostauthorrequired enablerelativepagevars enablebasenameconfig authoringphilosophy groupcustomizations enableredirectquiet localcustomizations enablelocalconfig logoutredirectfmt markupexpressions asspacedfunction basenamepatterns nospacewikiwords resolvepagename enablestdconfig functionalities enablewikiwords limitwikigroups nolinkwikiwords wikiwordpattern layoutvariables pmwikideveloper specifications siteadmingroup administrative enableftimenew basicvariables authorization authenticated documentation categorygroup configuration automatically logoutcookies editvariables linkvariables pagevariables variablename categoryname cookieprefix applications defaultgroup enablepgcust redirections preformatted grouppattern alphanumeric markuptohtml pagenotfound approvedurls representing potentially authorgroup sessionauth replacement defaultname pagepathfmt defaultpage enablewspre underscores information controlling currenttime explanation myasspaced discussion authorname population categories individual farmconfig completely processing directives identifies characters accessible determined precedence containing deprecated versionnum components understood regardless available currently meanwhile pipermail prepended different conflicts following isolating specified beginning anomalies directory remaining redirects performed sometimes debugging indicates treatment uppercase sensitive sequences configphp including groupname sitegroup according september functions histories describes wikifarms defaults profiles implicit authuser password replaced fullname comments multiple separate __file__ homepage behavior probably addition normally intended settings disables provided outlined included standard features confused sections ftimefmt override allowing cookbook affected requires followed callback possible actually entirely editform authlist strftime releases controls displays physical previous versions asterisk summary convert strings request entered scripts similar pmwiki_ startup whether defined without linking usually prevent notably history uploads reshape behaves configs enabled example browser message instead recipes results actions leading treated greater minimum regular mygroup visitor removed invoked hyphens globals storing utility spacing formats preview outputs changes produce 2001040 2001000 2001001 2001027 2001901 2001902 2001918 2002000 written browsed earlier changed rfloat reader authid tracks person authpw august 030386 allows domain unique substr exists really effect within called should before cannot loaded please trying unless causes useful spaces number letter switch linked target inside become search locked manual footer recent padded zeroes digits beta18 revert always where shown value pmhlt users sites using based login isset https draft avoid named other wikis store field doesn alter below order prior means might these cross being large rules skins would pause issue occur lines valid names pages links which after array gives still theme dates major minor three first beta2 they into also this been 2006 hash from same each when note that will want take must your work part need many turn text than bare more once wish look like such 2005 psft next last who see www key but tmp md5 off via may etc net 900 999 was vs by 57 09 08
+Openbsd.Gns3:1747283109:  : installation requirement environment networking afterwards simulator following packages required activate emulate devices servers clients various related openbsd pkg_add python3 command virtual finally setups docker covers system other while guide first since local gns3 used both made much lack qemu thus this only side doas then make venv site flag pyqt can has not due kvm py3 pip qt5 run via bin you may be of we
+Team.Announce:1745521510: Openbsd.Wall : announcements maintenance procedure important scheduled upgrading teammates broadcast downtime expected restored patience networks supports anything affected messages upgrade clearly roughly service example minutes openbsd updates mailing channel connect because changes website before system result should around thanks please ircnow second client during status repeat notice notify title doing which users state begin place email major reach wrong using every shell write your what plan when will 2023 take send list also want that case goes need this some motd wall doas wiki may the utc and jun are com org set can znc msg see etc log 28 30 22 00 cc 10 of 7 6 5
+Ngircd.Install:1745444773: Irc.Guide Openbsd.Install76 Ngircd.Patches IP.Myaddress Ddos.Intro Pf.Intro Hopm.Install Chroot.Intro Netcat.Irc Ngircd.Ssl Password.Management Dns.Vhost Ngircd.Link Syslogd.Configure Openbsd.Rcctl Anope.Install : abcdefghijklmnopqrstuvwxyz noticebeforeregistration _______________________ maxconnectionsip defaultusermodes allowremoteopers merchantability operchanpautoop requireauthping troubleshooting implementation maxpenaltytime cloakhostmodex opercanusemode syslogfacility documentation configuration vulnerability automatically maxnicklength cloakhostsalt alternatively installation nevertheless instructions contributors unexpectedly service_name service_user eavesdropper lightweight configuring uncommented recommended maxlistsize pingtimeout pongtimeout connectipv6 connectipv4 functioning interfering infrigement permissions service_pid information advantages understand references administer installing conditions particular admininfo1 admininfo2 adminemail unfiltered motdphrase examplenet compromise uncloaking harassment encryption management impossible maintained automation terminated connecting restarting disconnect disruptive absolutely platforms developer install76 configure compiling installed currently copyright alexander typically localhost myaddress addresses different listening servergid serveruid firewalls otherwise unlimited identical chrootdir invisible receiving debugging necessary sparingly operation disabling passwords sensitive somewhere character customize plaintext available specified including reloading netsplits portable overview messages compiles features actively packages security charconv examples building although download software includes compiled properly openbsd7 homepage warranty comments precedes helpfile commands probably hundreds motdfile contains standard maxjoins spambots monitors sysadmin generate hostmask channels stalking connects validate moderate enabling simplify instance operator username rejected familiar multiple bouncers accounts designed bitreich violence gambling cracking straight logfiles intended remember upgraded wherever existing chatting services spammers clients another written filters scratch website assumes warning disable pkg_add support editing consult helpful scripts created extract ircnowd patches testing version ircplus unknown copying fitness purpose enabled present ignored network provide replace hosting listing servers heavily offline mistake periods usually instead without private pidfile process _ngircd besides handled options prevent contact cloaked perform lookups notices because differs however welcome storage illegal threats slander syslogd directs expects already correct creates symlink outside libexec cronjob crontab friends working running appears careful barton source modern easily simple longer module flavor sample allows issues buffer should x86_64 remove actual global planet public always ddosed domain unable writes bypass nobody limits better glines unique linked random joined reduce daemon netcat needed normal causes events entire please string single tested stable become blocks attach insert resolv inside invite errors verify ensure secure title guide setup https helps linux short clean which hangs found after these share pages using begin sizes those fixed first above minor there while earth every avoid intro taken since hello world users offer ports 16667 abuse proxy leave order would keeps whois power owner below until match vhost aware shell 16697 drugs libel terms index three touch rcctl mkdir chown needs chmod pgrep check pkill crash being anope this free send code bsds easy fork such from lead docs also html must doas note that next more will make have xvzf only your zlib 2001 2024 been want each real when left 6660 6661 6662 6663 6664 6665 6666 6668 6669 7000 like hopm turn used runs then show does they data best once goes 6670 porn wiki logs into sets null many stop php one new has was usr due ftp org tgz few ssl see txt 127 192 168 db8 ips may get var 300 120 yes dns had tls day vpn bin via don hup try
+Openbsd.Sysupgrade76:1745441231: Openbsd.Dump Openbsd.Restore Openrsync.Usage Openbsd.Cu Vmctl.Usage Openbsd.Syspatch : congratulations automatically configuration installation successfully sysupgrade76 proactively substitute particular performing hypervisor installing operating openrsync signature powerdown rebooting partition switching completed completes succeeded download provider fetching verified progress username detected location syspatch sysmerge packages messages openbsd reading version earlier restore running console syncing loading probing xserv76 generic welcome example pkg_add ramdisk should system recent before serial offers sha256 base76 begins access vmmci0 making device secure ircnow repair title guide quick https using first check uname files usage above vmctl amd64 44889 71424 login disks drive 2046m 20070 nodes after error index bsdrd this html note need your find type says beta most make sure back dump doas will sets view from 2324 once host done com0 638k been able last 2024 unix like want then that also wiki with org man www faq see are any and can vnc ftp pub 100 tgz pc0 mem a20 hd0 hd1 cd0 nfs has ssh mon nov 138 111 332 sep mdt fix may php 16 kb 01 65 97 90 30 08 45 17
+Pf.Guide:1745430799:  : environments production redirect examples relevant firewall pfstable consult openbsd servers ircnow filter packet sample https index usage guide intro title built conf wiki page used well man the php org for how one as is be to 4 5
+Pf.Intro:1745430789:  : environments production examples relevant firewall pfstable openbsd consult servers ircnow packet filter sample index https usage title intro built conf well page used wiki the for org php man one how to as be is 5 4
+Ngircd.Patches:1745429034:  : conf_maxconnectionsip writebuffer_slink_len writebuffer_flush_len have_arc4random_stir conf_maxpenaltytime writebuffer_max_len conf_maxnicklength ngircd_getnobodyid conf_connectretry conf_maxlistsize conf_pongtimeout conf_pingtimeout keyfilepassword io_library_init package_tarname connection_pool generated_docs single_user_os conf_serverpwd have_setrlimit toplevel_docs conf_maxjoins conf_helpfile configuration rlimit_nofile conf_pidfile unprivileged config_error recommended datarootdir static_docs log_warning certificate have_mtrace sysconfdir privileges parameters initialize sslkeyfile strcasecmp cipherlist attention numerical getrlimit secure128 chrootdir unlimited serveruid log_alert servergid otherwise help_file protocol conf_uid conf_gid increase pid_file examples makefile defaults strerror dhparams instance timeouts log_info getpwuid hostname original addition routines readable received strength getpwnam certfile started crlfile maximum openssl allowed feature _ngircd strlcat ircnowd strlcpy restart hellman decrypt patches instead mkdir_p install destdir defined include seconds process pw_name defines 1048576 diffie dhfile etcdir gnutls return hashed pledge select suites unistd printf unlink mcheck sizeof limits secret strcpy sample docdir rehash should srcdir client binary bytes 32768 group atoll stdio rpath 65536 65534 under fatal could which files cpath later needs using debug fcntl ifdef false ident errno value types found endif anull every empty build child 2024 fork 2025 tmpl 4096 this only long work with been must 7215 1546 inet 2202 else done hook then real exit goto high some motd vers ssl3 pem 644 564 159 not 575 755 won grp apr sat 266 dns 588 265 xxx 599 mar sun 282 new pam var 618 704 715 294 fri can run you 777 lld 160 399 arg 703 14 11 81 50 19 23 13 51 31 07 30 33 01 08 mb 47 00 05
+Openbsd.Install76:1745426036: Signify.Verify Openbsd.Buyvm Vmctl.Usage Openbsd.Bsdrd Vmm.Configure Dhclient.Configure IP.Myaddress Hostnameif.Static Dns.Overview Unbound.Configure Openbsd.Fdisk Openbsd.Disklabel Openbsd.Base : 1b7ff2bba74aebde congratulations configuration automatically architecture verification installation asynchronous registration independence successfully partitioning inconsistent specifically nameservers maintaining dynamically recommended information softraidfde configuring hostnameif prepending installing eventually networking utoinstall configured unverified administer interfaces cloudflare passphrase fontconfig encouraged substitute encryption maintained developers particular simplicity statically resolution management manipulate directory libraries available addresses subdomain myaddress described fragments disklabel install76 loginname qualified carefully timezones sometimes allocates megabytes completed invisible including allocated disabling important relinking selecting fw_update packages download properly cylinder password location provides programs pathname internet software accident disabled autoconf security downtime included provider dhclient freetype possible selected pressing overview entering terminal labelled xshare75 continue graphics remotely 0xaa40e8 username 12900448 contains 22746368 settings physical 19285344 prohibit 34010176 guessing 14270432 targeted openbsd enlarge minimal present release hundred invalid records require causing booting connect improve 5190752 consult replace 3388864 logging 1279840 signify virtual machine restart upgrade without central default relying gateway xbase75 outside unbound chooses against xfont75 usually hosting simpler because decided netmask details command pubkeys routers correct realize audited forever reading warning example control 4076463 1688576 pattern sectors 7932864 3891240 probing mistake attacks already mounted options process prompts caching closest seconds console answers 7883296 instead welcome 1279776 reduced account loading printed xserv75 special groups blocks screen offers faster should nosuid number layout assign length prefix rather change inodes follow cancel offset before verify please game75 finish fstype comp75 unused sha256 subnet create double either unless speeds unlike 115200 ircnow accept google during reboot common system unable return unique bypass normal saving needed status kernel werase cdboot except escape virtio likely guides typing mirror device 464016 708608 bootup random 317541 making cannot simply single really where avoid proxy safer shell 16384 abort leave state flash quad9 bsdrd would amd64 usage buyvm allow shown vmctl drive files local bring reset check twice newfs other needs 25844 79984 media disks which ustom 19200 38400 57600 setup 79352 nodev x11r6 rsd0k 19840 2046m lower there trick below rsd0a vt220 image https about often fdisk later whole chose fixed 20480 users fresh wrong short fonts quick faq14 ports panel email after vlan0 begin might title intel fsize first bsize notes man75 match 2bsd done home 4575 swap this 1314 3873 skip 1029 2449 none your 1690 have data 2448 sets once 5499 when exit been such must then long risk only esc7 list will 8080 that from most sake them html root team faq4 sd0i ipv4 98mb 9919 each sd0e last left mind does text ipv6 sshd than uses 2001 dhcp echo com0 vio0 make sure wish case 9600 638k intr rd0b dump same ctrl both kill wait cd0a rd0a seed back what help abcd want iso its any em0 org may url dns tgz yes nfs has 255 but db8 vmm run few web www foo usr src var 668 hd0 100 obj pc0 mem a20 tmp mbr gpt 879 624 alt vps cpg etc sd1 mnt 109 9mb 162 154 5mb 512 e0 kb 03 65 81 rw 0m 7m
+Ngircd.Install-Draft:1745424684: Irc.Guide Openbsd.Install76 IP.Myaddress Ddos.Intro Chroot.Intro Netcat.Irc Hopm.Install Ngircd.Ssl Password.Management Dns.Vhost Ngircd.Link Syslogd.Configure Openbsd.Rcctl Anope.Install Acopm.Install : abcdefghijklmnopqrstuvwxyz noticebeforeregistration maxconnectionsip defaultusermodes allowremoteopers requireauthping operchanpautoop troubleshooting implementation opercanusemode cloakhostmodex syslogfacility configuration automatically maxnicklength documentation alternatively cloakhostsalt unexpectedly installation service_name service_user eavesdropper instructions service_pid lightweight uncommented recommended maxlistsize pingtimeout pongtimeout permissions configuring information infrigement restarting encryption admininfo1 installing disconnect nullrouted references admininfo2 adminemail administer terminated uncloaking examplenet absolutely maintained motdphrase harassment unfiltered management automation impossible connecting understand techniques minimalist advantages compromise localhost myaddress installed configure reloading invisible sensitive passwords identical otherwise including suggested copyright operation install76 interfere described addresses platforms different necessary untouched chrootdir firewalls character serveruid sparingly typically somewhere developer generally debugging servergid unlimited listening receiving operator precedes function straight commands messages portable violence sysadmin connects generate examples validate finished remember moderate channels software security multiple upgraded gambling download overview template hostmask solution intended building helpfile logfiles properly comments username packages includes motdfile existing familiar standard secondly features chatting services contains probably compiles enabling stalking spammers rejected cracking maxjoins actively servers friends instead symlink syslogd prevent process provide outside correct ability _ngircd network another contact editing besides cloaked pidfile options expects hosting threats lookups listing libexec mistake directs heavily perform slander illegal privacy openbsd already enabled replace periods crontab cronjob usually linking ircnowd filters monitor because website pkg_add extract warning created scratch written scripts running differs however ignored careful appears working assumes clients without inside custom tested please bypass writes stable barton remove global should public events policy secure entire ensure glines random netcat resolv source modern unique string limits insert reduce nobody single simple easily handle errors blocks verify domain daemon unable invite buffer joined causes issues actual become planet ddosed sample needed normal leave power users libel terms would helps index until aware https below agree keeps using vhost whois going speak owner match order three these drugs every staff title sizes after rcctl found avoid since share which anope clean chmod draft intro pgrep hangs being world above pages pkill guide while crash earth check ports those begin hello linux chown mkdir proxy acopm abuse 16667 needs short first exact setup that hopm this when your only will long make doas stop then best also have sent once must many wiki sets send porn into from logs text used next turn show does code want note real easy lead xvzf docs runs 3000 6666 6660 6661 html 6662 6663 6664 6665 6668 6669 7000 each they free ipv6 data fork 2001 bsds been ipv4 such has few 127 var usr see 168 192 one 120 txt hup new fix db8 bin may get tgz don but ips ssl org via ftp was try yes day php tls dns 1p2 let off had 26 cp ln
+Openbsd.Ngircd:1745423876: Irc.Guide IP.Myaddress Ddos.Intro Chroot.Intro Netcat.Irc Hopm.Install Ngircd.Ssl Password.Management Dns.Vhost Ngircd.Link Syslogd.Configure Openbsd.Rcctl Anope.Install Atheme.Install Acopm.Install : abcdefghijklmnopqrstuvwxyz noticebeforeregistration allowremoteopers defaultusermodes maxconnectionsip requireauthping operchanpautoop troubleshooting opercanusemode cloakhostmodex syslogfacility implementation configuration documentation automatically alternatively maxnicklength cloakhostsalt unexpectedly installation service_name service_user instructions eavesdropper configuring permissions pingtimeout lightweight service_pid pongtimeout maxlistsize uncommented infrigement information recommended disconnect nullrouted restarting connecting unfiltered understand techniques encryption management terminated admininfo1 compromise automation installing advantages adminemail uncloaking admininfo2 impossible references maintained harassment motdphrase minimalist absolutely examplenet copyright configure myaddress suggested sensitive passwords including untouched addresses localhost different character somewhere unlimited listening servergid typically platforms necessary debugging receiving chrootdir reloading otherwise invisible installed serveruid firewalls sparingly operation developer described interfere identical generally helpfile precedes straight download software logfiles comments building messages cracking redirect commands secondly probably motdfile contains hostmask validate connects stalking moderate channels generate sysadmin security properly function standard enabling gambling violence template finished multiple operator includes familiar rejected username maxjoins portable official services features upgraded remember intended spammers packages chatting compiles overview existing solution actively examples perform lookups provide cloaked instead openbsd however another friends slander network editing pidfile written illegal threats pkg_add servers ability filters heavily warning because mistake scratch listing working differs consult careful correct periods scripts replace usually without appears running hosting privacy besides monitor libexec _ngircd syslogd ignored outside symlink extract ircnowd options contact enabled linking clients process created already expects prevent cronjob directs crontab needed netcat atheme handle should random joined reduce glines unique custom remove daemon ensure secure string unable insert please policy inside resolv entire events issues causes normal verify blocks become stable invite tested errors single limits source buffer writes sample barton ddosed public domain global planet actual bypass easily modern nobody simple clean drugs agree share hangs libel intro users https rcctl vhost until terms earth pkill while three these proxy using acopm staff speak index guide leave below going every avoid title owner power which setup aware match anope order those crash pgrep being sizes chmod after ports check pages since short mkdir chown helps begin above linux needs first whois exact world 16667 hello keeps would abuse 6668 will used have 6669 doas xvzf into this 6665 from 6666 when your runs want that make text send turn once docs 2001 also 7000 note each 6664 only does wiki show been 6660 must 6661 then 6662 porn 6663 logs next code bsds sent fork easy many hopm 3000 they stop free such long ipv4 sets ipv6 lead data best real one var usr tgz bin was org fix ftp has try yes new dns hup php ssl 120 see 1p2 few via don 168 192 db8 127 day txt may get ips but tls had let cp ln 26
+Opensmtpd.Maildir:1744447713: Dns.Overview Nsd.Configure DNS.Mail Acme-client.Configure Opensmtpd.Openrelay Opensmtpd.Lmtp Dovecot.Install DNS.DKIM Opensmtpd.Troubleshoot : misconfiguration a8d16cd2144222fa 83bd6b3b1669649f troubleshooting authentication authenticated check_fcrdns inconsistent alphanumeric information permissions credentials temporarily mtaproxy511 configured check_rdns encryption optionally abnormally consulting california characters forwarding connection submission reputation postmaster interfaces mtaproxy2 passwords opensmtpd connected temporary firewalls otherwise following relayaddr mtaproxy1 _dkimsign disabling ownership addresses important listeners specifies directory plaintext supported receiving identical confirmed specified typically openrelay delivered explained forwarded exploited assurance sunnyvale including available contains outbound received username required indicate digicert sections requires increase overview directly mailname properly programs external ifconfig fallback selector delivery variable checking replaced loopback hostname tempfail poolporg destined complete matching security hundreds 00000003 yahoodns starttls s_client possible enabling response provider outgoing packages _dovecot filtered starting messages defines domains timeout private trusted labeled example maildir defined install without suppose aliases maillog packets because senders relayed similar spammer reverse showing openbsd smtpctl signing sending clients instead servers default entries network openssl dropped finally working related handled allowed pkg_add earlier filters specify actions request limited blocked readmes running offered current passing willing special nothing written account warning records mistake desired already returns express dealing happens further offline symptom length _smtpd should passwd egress likely except public stored socket please emails having strict verify checks listed inside header issues source delete entire errors victim signed second tables macros trying marked blocks letter handed headed create decide ensure unable answer forced script linked folder result adding reason exited intend before github author sample group being using often setup phase local users reply esmtp hosts first entry share third which child rules lines smtps these files depth queue point https state means login helps title might rcctl spool times least mtree daily those chmod about chown route valid value pairs tells dmarc 39035 ports evpid guide pages apply begin exact avoid delay wants 16h2s mta5 root junk more your from ipv4 gets this sent free that must also exec make note s843 next proc mask keys ipv6 rate easy been test what mta6 acme each such mta7 used doas pop3 lmtp need safe only same keep flag imap them find path part 2001 stop real into when most have does anti many pony lost book vio0 base case sha2 high both here last some unix they plus hang else oath says rcpt bind may etc due pki can one see too spf via fix 587 nsd 250 ne1 jan 104 15s way 168 usr 106 am0 vip gq1 192 vps doc 220 395 650 451 228 195 crt 204 bf1 www but src lo0 465 db8 new now 440 rwx 770 17 by 29 67 47 55 mx 33 cn
+Ircnow.9force:1744235793: Freedom.Freedom Ircnow.Servers : enthusiasts practicing community madeonirc reference interview marketing subscribe projects internet document freedom servers contact qualify improve provide regular working sending support mailing ircnow resume coding mutual friend 9force deploy minded inter9 rfloat attach reward source commit duties worked email quick below write after setup share admin staff plan9 title learn width 80pct https apply over with code keep find your list hang like unix join help open out the vps get png and org how add one who can to of by ll we cv
+Pxeboot.RecentChanges:1744071824:  : recentchanges configure pxeboot 07t19 2025 jrmu 03z 04 18 by
+Pxeboot.Configure:1744053483:  : tftpd_flags connecting configure customize tftpboot filename specific machines ethernet hardware address openbsd pxeboot specify netmask restart routers servers default example booting network ircnow device option enable client subnet domain fixed mkdir rcctl chmod local title first setup want host will mdec this next echo bios card note that dhcp org all var usr etc 444 and use 255 you 10 we go be by bb of aa ee 01
+Pxeboot.Configure-Draft:1744052993:  : connecting customize configure machines specific filename booting example default address network specify pxeboot openbsd subnet enable device server client title draft setup first this will that card bios note want dhcp the all use and you f6 e7 d1 78 7b go be of we by
+Ircnow.Scholarship:1743488756: Unix101.Unix101 : developing_country demonstrating opportunities requirements historically scholarships participate educational demonstrate additional preferably classified commitment wikipedia committed community providing offering training hardware provided unix101 studies qualify request service servers nations network program passing resides months ircnow source three users learn https apply above email admin with will send more that upon from free have been open must this able for vps the and who org not you by
+Ircnow.Adminforces:1743350566: Adminforces.Training Freedom.Freedom Ircnow.Servers Vps.Vps Ircnow.Scholarship : professionals documentation livefreeordie scholarship adminforces interviewed enthusiasts disciplined demonstrate experience financial generated marketing community dedicated sysadmin internet training promoted complete services freedom contact improve regular qualify welcome private virtual openbsd servers support serving trained attach cannot rfloat ircnow income highly afford minded commit admins resume finish reward become coding duties needed email staff hours basic after title their apply users learn width 50pct team many your help duty like keep hang work with rent send over join sell add and out are who vps jpg new how get one may org to cv
+Shelllabs.Reading:1742970448:  : list_of_important_publications_in_computer_science patrick_collison_s_book_shelf musicmindmeaning characterization thermodynamics mathematically correspondence transformation interpretation and elisabeth superorganism personalities confederation individualism mathematician civilizations radioactivity autobiography computational 9780521277037 philosophical communication peloponnesian understanding attenborough civilisation micrographia schrödinger consequences pennsylvania constitution independence observations transposable biographical experimental fundamentals permaculture differential disobedience continental buckminster perceptrons declaration reflections montesquieu cybernetics tocqueville revolutions schrodinger thereabouts experiments machiavelli masterpiece electricity meditations variational strangeness plantations hippocratic mathematics electronics description collections anniversary greenberger engineering civilizing holldobler cathedrals frédéric meriwether scientific washington mcclintock hofstadter copernicus concerning relativity feyerabend philosophy heisenberg mandelbrot disbanding schumpeter government refinement mismeasure continents researches employment discourses principles capitalism protestant schumacher discipline federalist everything crevecoeur thucydides theodosius democritus analytical huntington christiaan provincial prosperous gettysburg collective experience 1590560402 selections dobzhansky copernican archimedes integrated biomimicry 0070108986 innovation functional connection psychology radiotron influence engelbart aristotle discovery institute designers knowledge inaugural sociology jefferson lavoisier dialogues political roosevelt loadstone shoemaker structure molecular classical friedrich mechanics hiroshima universal chemistry frederick computing goodreads descartes leviathan traveller goldsmith cornelius lightning religious suetonius mayflower histories herodotus economics documents shelllabs bronowski hardcover democracy alexander montaigne communist ourselves treatises collected varieties mirabilis manifesto beautiful socialism paperback americans nonlinear gustafson whitehead education promoting thorstein wonderful galbraith rivalries scientist computers wikipedia governors signature societies expanding essential novanglus proposals eddington wohlleben founding universe chapters niccolò richness november mattered geometry circular circuits analysis business foucault farewell benjamin interest contract rousseau secondat writings clinical marshall rothbard baptiste military thoughts virginia aurellem franklin friedman horowitz articles aaronson plutarch xenophon patriots december affluent castillo elements johannes journals sciences machines republic aurelius lovelock elegance lederman gorillas bertrand vesalius immanuel magnetic heavenly theodore nicolaus literacy hoffmann saunders congress birkhoff vannevar frontier critique handbook voltaire carnegie legendre approach smolenck mycelium infinity hemenway movement harmonic infinite conquest cousteau einstein sessions mollison opinions physical genetics sketches whitcomb boosting humboldt masanobu classics inspired lectures huizinga relating address algebra garrett edition enquiry richard eiseley galileo ecology physics feynman society laurent antoine russell century charles huygens galilei letters francis animals freedom william history barrett greeley friends jacques lanczos general bernard getting schultz dealers michael sussman hiltzik natural jackson kenneth emperor amusing reading maclane lincoln abraham western pillars liberty norbert desoler network fourier almanac thoreau captain medawar stephen leopold selfish ricardo genesis alberts balance biology pauling stewart fukuoka courant herbert robbins nebulae dawkins against georges stamets running british account decline faraday polanyi systems origins process barbara mumford leisure serfdom malthus bastiat wegener stanley maynard wounded fathers andreas species harmony spheres feeling gilbert morison volumes fractal economy apology shannon nations inquiry eternal tacitus outlook accents mandela hershey hamming orality citizen special douglas lantern roberts updated charter erasmus quantum postman caesars ptolemy slavery audubon mistook chapman english penrose sharing compact pilgrim nkrumah strunk darwin edward france samuel autumn papers reform kepler wilson united keynes escher thomas insect essays worlds edmund rights golden theory middle veblen empire beagle hidden voyage anyone fabric reason seneca states bodies gibbon common garvey marcus jevons ronald fisher milton carver fossey bernal julian modern orwell method watson cuvier hobbes carson rachel double malone arthur benoit atomic werner cities booker walden jacobs alexis hubble ludwig coffey oliver useful county europe murray walter enrico praise planck alfred spirit stuart advice author beauty engels ascent joseph menger around growth dudley claude ethics making herman livius future minsky action howard eugene benyus survey pieces steady ortega revolt masses people wealth martin gasset manual marvin motion harvey popper gallic analog garden editor silent cooper limits divine euclid beings wiener janine 144828 julius asimov horace cosmic prince cosmos quarks optics michel gandhi blaise elting school eyquem farmer prison spring oceans flying fuller pascal punish causes newton turner annals storrs nelson would adams gould henry niels where xerox error james burke times hayek think first teach sagan great sense helix clear later trade might david lives human paine brown scope other https peace media heart money since steps braid kwame lewis style order plato locke clash youth hardy scott meyer doing folly weber godel roman press guide baron books study taxes mises death drake trees young notes roger north annus titus loren clark ideas among blood bacon rené small dewey isaac seven doubt scale logic linus flood bruce marie hooke curie elias realm brief score straw sacks erwin díaz tales stoic gamow birth three chief thumb roald truth panda edwin spain fermi chen karl from grey todd john toby ones home life chua jean odum deep easy html hume more bill heat gary down show what last 21st cell ages isbn mill bury livy rome with knee leon muir 1776 daly marx neil 1985 bush want 1897 2004 belt bach fall wife walk carl 1971 dawn parc dale hill gaia road 30th wars 1986 kuhn long 1973 unum kant 1944 1859 wind body 1543 laws 1983 jane half 1979 1845 army dian true aldo 1665 1814 1947 rene plea sand riis same arts pure bohr made oath that dna – sir max jay crc qed tzu 3rd sun see abc big who acm six www 4th yan yes rca 2nd 23 jr qm
+Humanities.RecentChanges:1742933055:  : recentchanges humanities reading 25t16 2025 jrmu 15z 03 08 by
+Ifconfig.Urndis:1742293258:  : samsung_android congratulations configuration automatically transferring smartphones connections proprietary configured everything duckduckgo tethering supported interface something switching possible settings ifconfig detected normally internet wireless computer charging hostname displays terminal requires possibly example default realtek openbsd apropos options drivers because chipset urndis0 enabled address between someone machine hotspot network without typing having should laptop dongle either mobile choose during starts reboot device 8723be iphone thanks lenovo kernel share using linux based https uhub0 there asked gotta doesn files could dmesg still after cards would which again comes only like want will test that also type data from have been good sure case midi what echo wifi this then line root when dhcp list make need tell soon now usb but you get can rev see has who etc for not how via org man by my s8 of 4g 00 57 55 6c 3a 02 10
+Ifconfig.Urndis-Draft:1742258802:  : congratulations samsung_android configuration automatically transferring smartphones connections proprietary configured duckduckgo everything something supported tethering switching interface internet detected possible settings hostname computer terminal wireless requires possibly charging displays normally ifconfig drivers openbsd realtek options chipset hotspot because example apropos default urndis0 without enabled someone address between network machine dongle should starts during mobile 8723be typing either device iphone laptop lenovo thanks having choose reboot kernel share using dmesg there gotta after uhub0 still files again asked draft linux based doesn https could would comes cards which type from midi will this like sure list test that only also have when case data been need line echo dhcp good soon then make wifi root tell want what rev usb can but see you for get now has who etc not org via how man by my s8 of 55 3a 6c 57 00 02 4g 10
+Opensmtpd.Lmtp:1742240133: Dns.Overview Nsd.Configure DNS.Mail Acme-client.Configure Opensmtpd.Openrelay Dovecot.Install DNS.DKIM Opensmtpd.Troubleshoot : h5itbhzs73t4jshaj9yx6tf63yrataqugbxocx67wyekhch4zqiod6lkh configuration_manual userdb_quota_rule 83bd6b3b1669649f misconfiguration a8d16cd2144222fa troubleshooting authentication automatically authenticated check_fcrdns inconsistent alphanumeric permissions information credentials configuring temporarily mtaproxy511 postmaster encryption check_rdns abnormally characters connection translated interfaces reputation submission optionally california forwarded including following opensmtpd sunnyvale connected mtaproxy1 _dkimsign addresses authcheck receiving separated available mtaproxy2 listeners whitelist fullchain assurance firewalls specifies explained important disabling configure openrelay exploited otherwise usernames supported passwords plaintext ownership confirmed recipient temporary identical gigabyte programs checking virtuals fallback response contains starttls hostname yahoodns outgoing filtered 00000003 required outbound received directly starting increase properly matching security indicate sections digicert complete provider multiple mailname selector enabling variable _dovecot loopback generate replaced s_client messages possible transfer requires protocol ifconfig overview poolporg tempfail prompted delivery hundreds packages receives private example openbsd network packets without install relayed allowed trusted signing managed folders defines request dropped openssl because labeled limited include readmes records senders working already domains blocked reverse maildir maillog filters related suppose pkg_add express earlier defined nologin warning useradd sending storage offline entries specify version spammer timeout passing default finally similar showing symptom instead logging running actions mistake smtpctl nothing written servers account special happens returns aliases dealing further forced except socket strict script marked author header issues delete listed length checks before inside source please finish passwd second handle single result emails actual victim github decide _smtpd signed create blocks tables verify should entire public adding egress ircnow having macros linked intend exited choose reason handed answer headed unable errors trying letter gssapi might admin vmail field which avoid using hosts smtps store rules phase these lines colon group first known users tells local queue setup third enter often https daily title entry route fruit state apply files rcctl being spool times share depth shows whose value pairs point valid child reply esmtp 16h2s delay chmod evpid 39035 chown basic begin pages guide offer mtree least those about ports s843 from lmtp pony your root this hang many been vio0 must will 2001 ipv6 ipv4 else acme lost want have mean that like doas mask sbin used bind sure make note when rcpt sent says plus same keep exec path need flag pop3 imap them find much here each data sets does last more only hash type also ctrl quit goes free mta5 good safe into test oath high sha2 stop real mta7 mta6 easy anti next unix both case junk proc done they disk keys what book some part base see can 220 ne1 am0 168 104 15s way 192 395 vip 106 228 195 gq1 bf1 204 vps get src may due pki db8 but 465 doc 587 usr jan etc lo0 fix nsd 451 650 too www 250 crt via new pem 770 rwx 440 47 55 33 29 mx 1g 17 2b
+Ircnow.Minutemin:1742141161: Minutemin.Bootcamp Ircnow.Goals Freedom.Freedom Unix101.Unix101 Main.HomePage Vps.Vps : applications interviewed emergencies experience guarantees minutemin volunteer sysadmins improving marketing training bootcamp hardware homepage internet position promoted tutorial complete unix101 qualify already openbsd improve freedom support friends promise virtual private regular network contact minimum respond within cannot unpaid ircnow duties rfloat server attach become notice reward resume finish commit hello goals party after hours staff email title apply while learn 80pct width your have week team help hang keep this over send rent main from join user the vps add png out who and for get run new org any how try own but say 3rd cv of 5
+Vps.Vps:1742082983: Openbsd.Vmm Openbsd.Vmminstall Openbsd.Vmmuser Vps.Users : 8wm7wrb30ewu5lw6os 00g03z3ay7usb6gbij aeueyt4ec5mka2c00a 00gaid1sq5mk1vgaek 00gbmhgnkg0yb6g28f 14k03z0omewu1vg14f 14kaid0omdsq3do144 simpletable vmminstall controlled networking providing corporate homestead marketing bandwidth business internet sortable platform monopoly herdquit storage digital against pioneer address virtual private openbsd upgrade details vmmuser consult servers stripe months 25mbps border subnet rfloat system future rigged attach guide burst https users 400px 60usd build cloud 100gb class 15usd there title trial 30usd 256mb 20usd 2mbps with year 8usd ipv6 ipv4 20gb life your then 9usd disk plan more buy com vps ram per own 5gb day ssd org are 2gb hdd don jpg 64 by be we
+9.Stone:1739430137:  : trampoline changeuser sysupdate disklabel dnsquery timesync syspatch tcpdump eggdrop shithub dovecot client passwd wircrc chatfs gotweb wikifs xxiivv fossil pmwiki telnet ngircd relayd ubound wrkey httpd snoop smtpd acmed ircfs stone venti emacs irssi ipmux git9 cwfs werc host ircs irc7 hopm prep sftp ftps hjfs ping auth upas hold ntpd doas znc bnc sic aux con vmm sam rsa ffs ndb dig nsd vmx mg vi pf 8 1
+Main.RecentChanges:1738235914:  : recentchanges wikisandbox december homepage february ircnow dennis august terms shell 09t13 2020 july main jrmu 2025 2022 mkf 38z 54 by 31 07 at am 01 36 pm 12 03 11 05 35
+Openbsd.Hopm:1736360077: Stopm.Stopm Rcd.Configure : command_queue_size your_network_name reconnectinterval negcache_rebuild command_interval command_timeout troubleshooting address_family lookup_branded target_string disadvantages configuration dropbear_2012 dropbear_2014 dropbear_2013 automatically uncategorized installation instructions experimental occasionally reconnecting issuecomment ban_unknown dns_fdlimit connections recommended compromised autorooting blacklisted spamtrap666 dns_timeout target_port information statistical heuristical readtimeout advertising ssh_server deprecated dropbear_0 compatible bcfiioqrsw cacheflows determined privileges foreground dictionary spamtrap50 proxychain blacklists particular connregex uncomment automated addresses openssh_5 301276082 target_ip configure parameter encodings hostmasks httpspost hopm_user positives reference installed indicated openssh_4 template httppost protocol hopmpath username autohopm contains extended identify nickserv password operator chanserv messages realname checking hostname compared flooding efnetrbl executed previous upgrades cloaking brackets download modified versions howtouse resolver possibly detected scanning innocent analysis supports requires 16fb7987 torsocks dreambox max_read dronebl suffice replies channel contact seconds replace bottler scanner gateway wingate attacks service example spambot somekey specify expects another looking proxies instead prevent checked warning default through ignored release cronjob running crontab scratch hopmpid options toruser however section banning scanlog because pkg_add extract appears created archive coconut missing refused useradd servers pidfile openbsd monitor minutes perform pattern drones either ngircd abused threat socks5 define switch result before should litmus needed syntax append change github record reason hybrid system invite public cannot daemon actual botnet script folder master broken readme unique solely sample follow please issues ircnow longer errors latest socks4 notice stored rosssh myhopm nobody exempt squery client router blocks failed kbytes trying listen ircbl 38884 reply local kline types stopm 18844 worms 10000 class 64101 visit after using first found 29992 dnsbl owned chmod where ifend guide onion start fails 23t09 17771 again 31121 false since squid email seems users 16667 kills order hours april short which sdbot thing every these title begin modes setup match allow 9036 4438 7366 team 7198 6826 4914 also 8081 8080 5104 this 5113 7810 9100 8814 must 8520 8148 8130 3600 been ipv4 7464 6561 6552 5634 5262 with will 8000 8001 aaaa 6588 docs 8443 blob more bind 1080 want home from 4480 they 3128 uses exit null then make keep sure that 0600 2021 doas when 9186 page away 9447 9578 past data have come only note many bans oftc same fyle does join ipv6 fast both node tags xvzf pure zone bots mass sent 2020 ddos next 180 org ftp var put 5p1 was few www may has 255 vpn new vps 754 ovh ips its etc web don 241 dev ksh yes let tls 512 txt too but via 400 due 22 42 32 md 69 15 9a 53 mx 59 gz
+Adminforces.RecentChanges:1735999912:  : recentchanges adminforces training 01t05 2025 jrmu 14z 46 by
+Gotwebd.RecentChanges:1735755654:  : recentchanges configure updated gotwebd called daemon 01t05 since jrmu 2025 page 32z the now by 47 is
+Gotweb.Install:1735710614:  : configure redirect gotwebd install status 301
+Openbsd.Gotweb:1735710425:  : got_max_commits_display madeonirc128x128 got_repos_path got_site_owner got_site_name got_site_link configuration periodically got_logo_url installation got_www_path permissions openrsync configure marketing location cronjobs redirect slowcgi gotwebd running uploads example fastcgi crontab pkg_add include openbsd htdocs ircnow listen daemon enable import public delete inside server socket daily start https mkdir httpd rcctl chown these needs write share block types root your have doas user this misc 1000 wiki mime var png git org usr tmp etc bin ftp 80 to cd
+Gotadmin.RecentChanges:1735383232:  : recentchanges gotadmin usage 28t06 2024 jrmu 21z 12 29 by
+Minutemin.Bootcamp:1735367299: Openbsd.Intro Doas.Configure Syspatch.Syspatch Openbsd.Pkg Minutemin.Questions Lists.Ircnow Freedom.Selfadmin Ngircd.Install Openbsd.Loginconf Ngircd.Loginconf Ngircd.Oper Netcat.Irc Netcat.Usage Openbsd.Rcctl Freedom.Fork Chroot.Intro Openbsd.Chroot Openhttpd.Configure Openhttpd.Website Netcat.Http Telnet.Http Acme-client.Configure Openhttpd.Tls Openssl.Http Openbsd.Php Pmwiki.Install Openhttpd.Hosting Openbsd.Httpopenproxy Openhttpd.Perl Freedom.Firstamendment Ircnow.Dogfood Ngircd.Ssl Ngircd.Link Hopm.Install Hopm.Telnet Anope.Install Freedom.Software Znc.Chroot Znc.Admin Znc.Support Relayd.Acceleration Znc.Relayd Relayd.TLSMulti Freedom.Religion Tcpip.Overview IPv4.Overview IPv6.Overview Tcpip.Sockets Ip.Netmask Tcpip.Ports IP.Myaddress Openbsd.Ping Openbsd.Dig Ifconfig.Usage Ifconfig.Change Hostnameif.Static Freedom.Openforeveryone Dns.Overview Unbound.Configure Dig.Usage Host.Usage Hostname.Usage Hosts.Configure Netizen.Become Netizen.Rights Dns.Records Dns.Registrars Dns.FQDN Nsd.Configure Dns.Zonefile Nsd.Zone Nsd.Masterslave Nsd.Troubleshoot DNS.RDNS DNS.Ipv4rDNS DNS.Ipv6rDNS Freedom.Unix Dns.Vhost Oidentd.Install Oidentd.ZNC Ambassador.Ilines Freedom.Federation Opensmtpd.Lmtp DNS.Mail DNS.SPF DNS.DKIM DNS.DMARC Netcat.SMTP Opensmtpd.Test Opensmtpd.Inbox Opensmtpd.Openrelay Dovecot.Install Openssl.Imap Squirrelmail.Install Mlmmj.Install Servers.Rights Minutemin.Code Openbsd.Botnow Bouncer.ZNC ZNC.Admin ZNC.Support Minutemin.Duty Got.Usage Gotadmin.Usage Got.Repo Gotd.Configure Got.Mirror Gotweb.Install Minutemin.Server Openbsd.Dump Openrsync.Usage Openbsd.Fdisk Openbsd.Disklabel Disklabel.Partitioning Newfs.Usage Mount.Usage Openbsd.Newdisk Openbsd.Quota Openbsd.Growfs Vmm.Intro Vmctl.Usage Vmctl.Newdisk Vmctl.Reinstall Vmm.Install Openbsd.Vmmlinux Openbsd.Install Openbsd.Upgrade Openbsd.Sysupgrade Openbsd.Bsdrd Openbsd.Singleuser OpenBSD.ResetPassword Vmm.Linux Pf.Guide Openbsd.Ddos Openbsd.Tcpdump Openbsd.SSDP Openbsd.PFStable Openbsd.PFTesting Openbsd.Pf Crontab.Edit Openbsd.Adduser Openbsd.Localtime Ln.Intro Openbsd.Fstab Dmesg.Usage Openbsd.Hier Ps.Usage Kill.Usage Openbsd.Panic Openbsd.Sysctl Swapctl.Usage Openbsd.Outofmemory Openbsd.Vipw Syslogd.Configure Syslogd.Remote Openbsd.Ports Pkgadd.CheckUpdates- Ntpd.Configure Police.Intro Police.Fingerprints Team.Security Password.Management Openssl.Encryptfile Gnupg.Create Gpg.Verify Signify.Verify Shell.Limits Openbsd.FilePermissions Pledge.Intro Unveil.Intro Openbsd.Setuid Iked.Configure Vpn.Vpn Vpn.Myipaddress Iked.Sitetosite Tor.Torsocks Tor.Irc Tor.Hidden Sshd.Configure Ssh.Fingerprints OpenSSH.Connect OpenSSH.Keygen Openbsd.Sshkeys Openbsd.Sshbackdoor Team.Welcome Team.Testing Team.Announce : responsibilities filepermissions troubleshooting openforeveryone administration firstamendment fingerprinting resetpassword announcements httpopenproxy automatically investigation miscellaneous acceleration fingerprints partitioning checkupdates squirrelmail applications introduction environment description myipaddress simpletable encryptfile sshbackdoor filesystems outofmemory masterslave dogfooding management federation ambassador blacklists connection singleuser techniques hostnameif installing registrars partitions networking sysupgrade understand hypervisor roadwarrio sitetosite nameserver operations restricted minutemin opensmtpd openrelay configure webserver openhttpd disklabel openrsync moderator religious procedure hostmasks loginconf myaddress selfadmin questions criminals addresses passwords signature localtime reinstall pftesting construct processes jumpstart hierarchy generate sortable security software webpanel resource multiple insecure securely services syspatch overview ifconfig bootcamp pfstable operator increase networks religion vmmlinux tlsmulti torsocks netmasks commands database packages downtime zonefile ipv6rdns firewall changing ipv4rdns binaries phishing bouncers symbolic gotadmin stopping webpages addusers spammers openbsd support netizen account mailing logging provide records display webmail openssl message storage control version monitor getting openssh syslogd sshkeys setting caching swapctl servers dealing signals newdisk pkg_add domains oidentd tcpdump backups crontab editing freedom attacks against packets prevent request signify abusers defense proxies acquire virtual updated machine clients ramdisk dovecot inboxed reverse sending unbound website sockets liberty execute traffic hosting chroots closing private classes welcome channel gotweb civics reward remote sysctl lesson recite access mirror extend border ngircd botnow police rights pmwiki netcat inside limits sample defend panics filter growfs kernel buffer quotas telnet shells create pkgadd vhosts setuid basics keygen behind custom relayd unveil ircnow pledge hidden origin verify change static lookup choose become ilines report detect folder letter speech higher repair gnupg guide ports setup bsdrd topic usage tcpip email leaks dmarc cloak avoid learn ipsec anope rcctl audit parts links dmesg vmctl mlmmj mount fdisk newfs error space state title apply honor types press clone ethic using about repos block width weeks perl unix lmtp your dkim team with from imap acme sshd hopm doas what ddos fork vpns iked fqdn ssdp code gotd kill duty vipw into hard read ntpd good keep tree cert znc php 100 spf nsd vps udp gpg how dig the ban oom git pgp fix by 2
+Gotd.RecentChanges:1735326599:  : recentchanges configure 27t18 gotd 2024 jrmu 48z 12 43 by
+Got.Usage-Draft:1735325198: Ksh.Profile Openbsd.Ed Ksh.Editor OpenSSH.Connect Git.Usage : f4ade537d550b872b7e86e6ffce940dfbad4c60c 3c627dd70d032fa2c5087617da27586cf85e899a c8b12af1d2d155ec79dc2044a4ff177cf07de4fe daa88b765111b14047c97256bd2a9a2daabe123b ab0eb099e9c0ed60d25fb50dd78d2a638d3b49b8 71ae2b7d7f9ae7bc02ed072c07100de0027373d6 02850008f4a4e8fff5799157d21ee7924345b3e1 complete_got_1 have_stdint_h hinzugefuegt modification inconsistent repositories environment requirement simpletable expressions branchename gameoftrees development unversioned configuring recommended respository branchname repository got_author encryption additional debopenssl compatible completion afterwards substitute references recursion conflicts directory re_format currently different reverting alexander christoph branching committed required restored modified sortable specific checkout starting possible branches manchmal insecure deletion provides worktree provided protocol revision building variable requires multiple commands pathname reverted response metadata expected occurred reusable existing pointing filename removing compared tracking username contains ancestor replace openbsd message regular tagname example deleted object1 objects another already creates meaning sources updated changes newcode forever blocked missing merging unstage between history commits ircnowd initial display limited release produce suppose tracked default warning without fetched rebased ignores because running connect openssh profile specify staging control license install rebases pkg_add object2 folders common gnutls adding ngircd allows before export staged inside merged import editor result remote enable status border debian remove recent hashes single system manual column script during freely second barton master origin number github switch exists become remain called actual visual those first added biedl https there blame usage codes print files mkdir about avoid width class local regex these above using draft match paths title hello clone under world still begin ahead empty today guide every must uses will made note this sha1 item only from tags most text sure make your used they test sent 2001 need send show that been also then into undo blob list next some step junk info echo 2021 once safe asks 2016 urls anoy aims html onto easy them past view doas tell just news part give when line want can org ksh see any way may set try but src utc jan sat log due dec ulm auf tue non via two fix by 26 22 48 13
+Openbsd.Anope:1734909654: Ngircd.Install IPv6.Overview IPv4.Overview Ngircd.Link Ident.Intro Anope.HostServ Anope.Chanserv Anope.Operserv Anope.Botserv Anope.Memoserv Anope.Global Opensmtpd.Intro Opensmtpd.Configure Opensmtpd.Test Crontab.Usage : abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789 ed3383b3f7d74e89433ddaa4a6e5b2d7 use_server_side_topiclock use_server_side_mlock allow_undotted_vhosts disallow_start_or_end internationalization registration_subject registration_message emailchange_message emailchange_subject ngircdpeerpassword restrictopernicks ngircdmypassword troubleshooting administrators reset_message configuration automatically reset_subject memo_receive confirmation memo_message memo_subject require_oper configurable operpassword sendmailpath modelistsize killprotect unnecessary recommended servicemask simpletable configuring networkinfo description vhost_chars networkname parameters installing sslconnect restarting examplenet registered thoroughly hide_email ns_private proceeding serverinfo automation connecting executable configured connection directory questions nicknames operators requested untouched opensmtpd according hide_mask ns_secure localhost generally passwords services overview nickserv silently provides ns_ajoin operserv platform complete remember hostname ajoinmax chanserv hostserv initiate settings identify whatever channels defaults drawback enabling properly received networks memoserv download releases commands approves comments sensible downtime building sendfrom openbsd address replace pkg_add nicklen usemail botserv because maximum userlen warning modules hostlen variety chanlen crontab support running defined anoperc passive written changes loading already finally _signon svsjoin matches archive results follows useradd anoprog gettext anoargs cronjob anodata seconds disable anopidf anopath create double actual global adding helper github logged certfp border levels belong ircnow ignore please readme admins latest length before reload squery folder binary uplink barton sample expect number allows autoop within killed listen decide option likely issues should again usage check block looks width class users debug entry while index group login error their delay using false https rcctl intro 16667 lines chmod fails title first these linux cross asked guide value ircds press other enter every cmake quote tools setup mynet must sure home that sent this edit just does motd your have turn plan they logs will same need four want bind into doas ipv6 note uses many most give real ipv4 only more know file well both left sbin runs type such next main refs some root each tags much none caps docs page lets chk off new ksh are 127 zxf yes msg see org php 100 don why was can has usr 168 192 ftp out 73 60 5m 64 32 md 17 cp gz
+Vmm.Configure:1734804067: Ifconfig.Tap Ifconfig.Bridge Ifconfig.Veb Ifconfig.Vport Vmctl.Usage Pf.Intro Pfctl.Usage : troubleshooting virtualization automatically configuring recommended performance sufficient forwarding interfaces individual respective explicitly networking install76 dedicated including therefore confirmed signature fw_update configure addresses whitelist filtering similarly processor otherwise preparing broadcast specified ifconfig machines groupadd provides prevents hostname spoofing vmdusers hardware inspired defining commands increase username together physical verified allowing supports requires firmware download replaced although devices warning switch0 connect combine correct openbsd logical specify problem changes causing confuse signify routing traffic bridged defines nologin ruleset because proceed makedev console useradd summary default belong subnet handle action vport0 format actual inside locked packet create vpsnow ircnow server lladdr reload memory serial sysctl random permit reboot issues number access appear socket images maxlen enable delete verify sha256 better owner https qcow2 link1 usage pfctl intro avoid vmctl order lines after start icmp6 rcctl macro named owned chown cdrom amd64 files octet these every which proto first block while 2048m title egrep inet6 below guide offer faq16 could check intel dmesg 1024 veb0 with need doas ipv4 html will only 5678 used 1234 ipv6 next from pass tap1 easy arpq stop 2001 disk sbin four home then echo this sure must your pick drop such once path that tap0 each have slat root come mask many same obsd rely upon they does done want note base iso etc rvi can pub org cdn ip6 may ept svm ftp var pwd run git 20g vmm vmx 168 if0 192 vms 255 db8 www see new put odd jot 2gb way we by 50 bb aa xx 11 mv ok f3 f1
+Unwind.RecentChanges:1734430607:  : recentchanges configure unwind 10t05 2024 jrmu 20z 12 59 by
+Dns.Dnssec:1734308634:  : introduction cloudflare learning helpful dnssec guides works title https www how com to
+Unbound.Opennic:1734303031: Unbound.Configure Host.Usage : queryselectorall troubleshooting alternatively configuration nameservers configuring supporting forwarding configured childnodes frequently javascript networking connection aggressive validation regularly innertext temporary specified disabling addresses correctly indicated obtaining supported permanent innerhtml remember document properly servfail addition obsolete hostname download disabled related unbound follows warning enabled openbsd command comment srvlist opennic instead foreach queries failure certain control default failing invalid because earlier example reached changes receive attempt setting updated handled console browser execute install quickly provide causing methods specify pkg_add article attach should dnssec appear append reason longer become system issues anchor lookup domain unable bottom sample adding failed dnskey daemon secure unless either forgot happen before window usage 18434 https prime trust there level rrset order below shown basic lines three often guide works again begin being which check first after timed might error could found buggy title setup shell frame above clear info this mail want 8b2c zone find does data step used once only will need 80da af6b 6820 have must them curl then view been also root ones note case cb07 body 2800 that your 2606 ipv6 they real auto file many nsec from logs kept with edit try off may var can div are 195 134 has 215 dec but 21f non out 113 fix 203 yes txt run web 192 100 198 17 16 by 93 14 51 db
+Unbound.Localzone:1734299146:  : configuring forwarding localzone localhost priority section invalid another example unbound server static nobody master 604800 10800 block zones about ifend store title cache first false using from 1200 data name addr 3600 this need aaaa are 127 soa use set you com 53 ns
+Resolv.Conf:1734159758: Resolvd.Usage Hosts.Configure Host.Usage Dig.Usage Nslookup.Usage Unwind.Configure Unbound.Configure Resolv.Conf : historically nameservers censorship components configure specified overwrite resolver obtained berkeley indicate although included nslookup recently manually suppose records control openbsd caching example depends default section unbound command changed consult warning resolvd enabled privacy specify prevent values cached unwind domain prefer longer should result family system answer issues guides relies inet4 stale query inet6 usage https might local title hosts those tells first which check these flush other cause bind ipv6 file like ipv4 this line have help case time live want edit that also with your will more msec note then fill 3600 used when rcvd size 2024 next dhcp dns old how for etc may was two can dig org far 100 198 own ttl run 215 sat dec cst msg add 184 now 127 by 51 53 14 56 37 of 55 93
+Znc.Chroot:1734155107: Chroot.Intro Openbsd.Ddos Znc.Install Openbsd.Buyvm Openbsd.Syspatch Znc.Patch Ftp.Usage Tar.Usage Openbsd.Adduser Openbsd.Loginconf Openbsd.Vipw Grep.Usage Tls.Overview Openhttpd.Configure Acme-client.Configure Dns.Vhost Dns.Overview DNS.RDNS Dns.Records Host.Usage Relayd.Acceleration IP.Myaddress Localhost.Intro Openbsd.Relayd Oidentd.ZNC Pf.Intro Bouncer.Bouncer Znc.Webpanel Openbsd.Cron Netcat.Irc Znc.Relayd Znc.Usage Openbsd.Nsd Nsd.Zone : 49396054dc8263b573d11c9c01e43f89ee772f6dc89b3c630e6dffa9acea4a3e 014eab533f25fe65621963f712ecaf3b86fe840859ab6f4c675200c73d02e6d1 protectwebsessions authonlyviamodule configwritedelay troubleshooting daemon_pidfile ssldhparamfile serverthrottle misconfigured configuration maxbuffersize znc_server_ip automatically understanding service_stop controlpanel project_name installation dependencies alphanumeric connectdelay segmentation service_name acceleration mtz5cmce5ijx introduction service_user disconnected unprivileged descriptors connections sslcertfile established incorrectly ovexwsl50cc dccbindhost anoniplimit simple_away certificate configuring recommended ipv6_v6only checker_znc service_pid hideversion temporarily restarting installing loadmodule nameserver convention frequently connecting completely individual preferring saveconfig mistakenly attributes sslkeyfile selecting addresses plaintext libraries supported reconnect something chansaver username_ identfile following bindhosts responses customize openfiles hostnames generated available unlimited alternate listeners loginconf localhost listening stacksize myaddress necessary compiling beginning openhttpd resources otherwise rc_reload protected specifies listener1 sometimes processes uriprefix duplicate described listener2 listener5 important arbitrary listener3 untrusted indicates lockedmem listener4 listener0 verifying defaults followed coredump requests networks solution 33554432 flexible overview formerly although displays security commands webadmin programs makeconf messages infinity allowweb allowirc password controls instance insecure properly webpanel creating directly shutting yourself original searches incoming makepass recreate database changing separate lastseen location connects explains checking settings s_client certauth requires visitors adminlog addreses symbolic optional supplied syspatch normally filtered internet packages nickserv mismatch applying multiple computer nxdomain hostmask problems offering channels familiar probably chrooted freenode confused provider download services whatever software openbsd nologin example changes replace however configs without running records section bouncer extract attempt library missing suppose altnick modules exactly enabled editing account logging because usermod reached servers useradd chroots complex confirm adduser encrypt initial changed concept earlier working nofiles looking seconds oidentd forward warning reverse options current meaning private pkg_add upgrade against attacks finally compile keeping replays ruleset gettext creates runtime instead generic maximum openssl consult happens patched created certain applied sockets browser belongs assumes maxproc contain crashes prevent specify getting writing offline entries invalid returns minutes testing usually signed inside relayd launch locate cannot public unable logout rehash ircnow manage within global viewed sha256 export signal supply single actual should better folder allows update delete erbose either easier vhosts reason method resolv plenty status memory netcat number spaces result rc_cmd detail access shared before powers unique errors subnet likely causes glines lookup tested stable system needed limits family afford passwd master je2ecm ulimit exists editor packet blocks edited kbytes 329478 985092 forget output begins during values notice person amount please easily proto quick state 31337 there xargs usage these https using fixed icu4c versa rerun needs users pfctl every leave 65535 means guide found empty later _host ports above loads build binds first wrong blank buyvm timed could false chmod mkdir touch 10000 pgrep rcctl ifend inet6 while inet4 which pkill fruit after order still party fails cheap blame avoid where enter point their chown wants gives shows types unzip class helps uname least tools press 32768 shown asked cmake shell boost amd64 field hence tells 65534 saves going below phone title stays this will doas 3000 rdns says just wiki then home aaaa 1310 4096 that when ipv4 next more back fall sbin deny chsh read have 6697 sure 6667 most must 2001 ircd true good 1338 bans 1025 from ytz8 none xvzf same been both ctrl also note come 1001 salt man5 vipw 2020 best 256m echo tabs cron safe send much sets room live many null 6400 2605 move 8182 subr esac case real ddos does 2048 libc pick such info acme done copy zero zncs runs nice typo zone they chat them bnc usr var nsd ftp did abi ksh may tls env new rpe msg 168 192 db8 was due bug 2v0 3rd src crt tcp pem cpu yes won bak 127 ip6 job try cut 5th 79 _g uu mv 07 0a gz
+Resolvd.Usage:1734152543: Resolv.Conf Route.Usage Dhclient.Configure : automatically information nameservers dhcpleased overwrites incorrect supersede configure sometimes providing interface disabling dhclient override manually changing openbsd default enables resolvd methods replace command disable located network devices sources various persist specify manages happen remove actual adding lookup daemon simply slaacd starts bootup ignore family route usage https inet6 inet4 edits rcctl there those other title using added file bind this used want iked note from will stop such that case ones your also must give with can org 127 203 may if0 set etc 113 dns are don was fix now by be 8 9 5
+Openbsd.Bsdrd:1734140982: Openbsd.Install : installation installing substitute particular upgrading automatic sometimes existing finally quickly upgrade openbsd booting fastest reading damaged options process mistake should repair system follow rescue attach bootup during cancel https avoid using guide enter bsdrd press bring title might files cases other these stick note then must make type html faq4 this ctrl want your lack rest from back usb any may png and for www way org cd of do if 1
+Unbound.Configure:1734135800: Unwind.Configure Unbound.Control Unbound.Opennic Resolv.Conf Resolvd.Usage Dig.Usage Nslookup.Usage Host.Usage Tcpip.Sockets Fstat.Usage Hosts.Configure : 0xffff8000008ec9e8 0xffff8000008ec070 previoushostname troubleshooting flush_negative configuration amplification pseudosection authoritative intercepting respectively information importantly nameservers downloading workstation configuring forwarding permission configured additional 1733812265 convenient validation aggressive meaningful 1733887244 directives documented forwarders optionally censorship checkconf localhost interface verbosity internet6 establish whitelist recommend signature chrootdir increased validator indicates addresses algorithm authority directory guarantee depending potential according following comparing determine political recursive incorrect security starting identity building solution internal provided nxdomain controls provides services nslookup continue expected returned validate benefits actually personal identify receives limiting anything although question already specify unbound openbsd default resolvd _unwind version process quickly opennic message another sockets options setting noerror working queries trusted network running confirm utility testing finally results prevent clients caching allowed attacks refused failure example missing because records require support operate comment invalid domains several privacy header should status opcode sample answer global plenty google ensure anchor forgot dnssec system failed dnskey secure before errors change cached public speeds enable double bypass giving reason sanity faster laptop beyond checks remote unable listen marked inside access simple define stream easily notice daemon query hosts usage using fstat https rcctl fails first tcpip order flags 53037 dgram 65464 fixed rrset prime basic chain level stale while above exist lines could these 45846 lacks ports fatal 77049 which debug found 86538 title users place comes write block hints tells until below shows there avoid built about rcode guide range helps stop this 1232 case file edns ipv6 6934 zone make that uses with nsec send does your from will time drop size rcvd next when such then only auto 2024 mode hide grep same ipv4 msec very bind easy edit have some part need live like logs base want keys must runs note and may man 127 dec var can ips see are off 208 get etc yes udp has cmd dig 167 251 142 old 300 102 101 ttl ask but tld 100 tue 139 mst msg 135 138 113 56 db qr 48 21 p1 76 41 dv 99
+Openbsd.Unboundadblock:1733893698:  : unboundadblock blacklisted blacklists adblocker geoghegan resolver prevents produces suitable download redirect getting include example restart service command curated openbsd taboola section domain should answer return order https place using small setup found error rcctl check conf this from with 3600 line that name html oisd have play like give such role the www can for use dig trc you var etc add one of as by be to if no ip
+Unbound.Adblock:1733893672:  : blacklisted configuring blacklists geoghegan adblocker prevents produces resolver suitable download getting unbound restart service include command taboola section example curated return should domain answer error https rcctl check place title small order using setup found name with that oisd from have such role play 3600 also html this line like give dig the one www for see can trc var add you etc use if of by as be no to ip
+Unbound.Dnssec:1733887166:  : configuring unbound openbsd anchor enable dnssec update https title this file with will root that can key the man org you var so db 8
+Unbound.Configure-Draft:1733812434: Unwind.Configure : queryselectorall previoushostname troubleshooting flush_negative configuration intercepting nameservers configuring blacklisted workstation forwarders forwarding aggressive childnodes 1733812265 javascript validation censorship meaningful blacklists originates everything convenient interface regularly directory localhost configure checkconf guarantee recommend adblocker listening indicates chrootdir addresses innerhtml potential suggested otherwise specified signature political providing generated commented innertext comparing something available personal identity document priority navigate internal building provided anything although services resolver prevents computer benefits outgoing spoofing randomly security produces multiple dhclient starting override suitable download network earlier opennic queries contain openbsd browser unbound running console command default example failure missing instead include because answers quickly caching section control locally invalid srvlist foreach counter working however another support curated privacy records restart domains several taboola causing version machine getting public unwind update system access static refuse attach enable except ignore change remote before master ensure dnskey laptop should giving lookup reason inside google anchor sanity window cached sample simple blocks option return dnssec nobody button marked beyond 604800 bottom bypass allow https 10800 setup order again ipv6s found ipv4s dhcpd users error rcctl speed there comes small tells basic place chain trust click known draft clear frame these ipsec title 86538 fatal false files hosts entry 45846 stale while lines which 26496 fails rrset exist about first guide ifend store zones play that have edit from oisd role 3600 your make also info will want this such like age0 2001 test give does doas auto with bind aren when both send nsec they used hide find data runs logs kept tail aaaa then uses 1200 view sock base need part note help easy only 100 org 212 165 237 227 may 163 141 198 can 127 dig txt got 111 193 see web off div var 132 etc 142 217 172 169 144 trc old 175 yes 185 117 154 ip6 248 171 244 192 soa 119 162 236 103 170 118 vps db8 251 183 112 101 168 254 208 115 34 99 31 29 67 35 39 89 87 40 43
+Unwind.Configure:1733810360: Resolvd.Usage Unbound.Configure Dns.Cachingservers Resolv.Conf : autoconfiguration cachingservers authentication automatically configuring unencrypted certificate nameserver validating preference restarting configure resolvers providers forwarder addresses resolves flushing validate detected example because resolvd openbsd replace another unbound running defined records queries detects process blocked network through learned sample unwind simply behalf simple system enable switch useful refuse falls three rcctl cache where stale usage above match would title https guide local note must this over done have with real that from back will your they like else dns1 dns2 very need case man and 198 100 113 see are org tls 252 233 203 dot put etc can may old by of 51 we ip
+Dns.Cachingservers:1733809299:  : cachingservers administration recommended frequently ultimately censorship cloudflare secondary addresses download specific provider simplify opennic uploads unbound current opendns privacy network endorse primary issues ircnow bypass script change online status google choose their https avoid shell title quad9 there from this list that does wiki many see org 112 txt url and not its 208 run can 222 220 you 149 www to 67 of
+Unwind.Configure-Draft:1733808579: Resolvd.Usage Unbound.Configure Dns.Cachingservers Resolv.Conf : autoconfiguration cachingservers automatically configuring validating nameserver restarting resolvers configure forwarder provider detected flushing resolves openbsd network resolvd running include learned through because example opennic uploads another process unbound queries records blocked detects unwind system should ircnow sample simple enable behalf useful switch simply usage rcctl cache first stale place those title draft guide https local list fill have with this wiki like that link over will need line done want your very dns are old see can and man org may txt tls of if by we as 5 8
+OpenSSH.Connect:1733795437: Ssh.Fingerprints Ircnow.SSHFingerprints MITM.Intro : verifyhostkeydns sshfingerprints ulqwp4stgck4 ysc50aziekvi authenticity established incorrectly ofe4jf8n0c connecting configured described publishes installed probably continue sysadmin alerting matching security consider username servers ed25519 warning records example enabled replace command openssh contact system ircnow method prompt better middle cmfill dnssec sha256 should attack again there found intro known worse using other below names check sshfp their title first https trust order line when this even type sshd sure want will does mitm your with also list some band need not are yes any how can has see may ask for set put out to up 10 by
+Vmm.ConfigureShared:1733724325:  : configureshared vmm
+Usermod.RecentChanges:1733497976:  : recentchanges usermod usage 06t06 2024 jrmu 39z 12 52 by
+Usermod.Usage:1733467959:  : inadvertently recommended processes existing problems continue groupdel unfreeze accounts moreover cronjobs running warning execute usermod careful deluser deleted access causes watch might files could still after usage leave with them will that need same this gid and you new old all but two uid for get may out to if be
+Dns.Overview:1733363344: IPv4.Overview IPv6.Overview Host.Usage Dig.Usage Dns.Records Nsd.Configure Unbound.Configure Dns.Zonefile Openbsd.Vhost : t_tcpipnamesystemshosttablesanddomainnamesystemdns authoritative organization introduction astronomical remembering nameservers represented information responsible distributed registering recommended resolution associated registrars convention subdomains censorship everything tcpipguide particular providers hostnames authority configure addresses delegated utilities resilient practical computers difficult providing hierarchy resolver requests internet overview purchase workload millions multiple inverted possible services designed directly provides zonefile nslookup example usually openbsd unbound require outside records instead caching handled control numbers relying contain billion follows privacy results running storage browser webpage offline because achieve further queries perform answers correct someone setting specify process within robust entire global create define single shares served should across wanted annual second typing charge common caches called center router client humans issues belong spread period actual there types vhost files zones known would might other usage helps these speed panel money level could named after makes which scale party often those maybe query their forth input where avoid title knows least visit https three means works needs about since root your 80da 6820 cb07 2800 2606 ipv6 once free such will that into 8b2c iana tree tlds like find have next this come mail when glue base take from uses also time ipv4 data then been size af6b more rfcs went fail each were only let www 184 two 215 ns1 ns2 not isp can see its 192 168 why nsd dig htm how top pay was non 3rd fee 21f go 14 93 by
+Dns.Registrars:1733362188:  : restrictions recommended filesharing registrars reputation censorship acceptable guidelines guarantees searching offensive important operating political religious questions providers criteria customer commonly services shutting torrents required support respond contact options payment legally country content servers because insists policy before domain notify easily rights speech define check which order court these reach email other title abuse first have free this time been does give them good they what upon long down name game vpns lack used over and dns are any ask but you few has how irc law can by
+Profiles.SysopNiteStorm:1732739405:  : sysop_nitestorm sysopnitestorm requirements friendships experience depending something bsdforall primarily struggles networks profiles various usually shorter through cheers always ircnow unlike online perils trying length times afnet would admin among other nick have just afwi been 6697 many home here what most alas busy live need life ping etc are use guy can but you
+Create.UserEmail:1732543198:  : encrypted_password prompt_password mail_conf_dir domain_name prompt_bool mail_domain postinstall create_user environment vmail_root vmail_user vpn_domain characters useremail nastycode vmail_gid vmail_uid questions user_name username nullecho cert_dir creating log_file virtuals manually default support smtpctl dovecot domains restart command unbound aliases control channel without specify created dirname running creates reload result cannot failed purple return vusers update export server yellow relayd listed passwd whoami colors chmode script strip table hosts panic setup catch smtpd green guide rcctl httpd usage unset doing empty enter helps befor logs have what doas that sure this hope norm make note stty more read bold exit eval case esac feel perl free exec them dev txt etc tee bin var ssl yes msg red 033 ksh our got you vps any irc 31m 32m 35m 33m to 0m rg fd z
+Create.User:1732542661:  : encrypted_password prompt_password mail_conf_dir domain_name postinstall create_user mail_domain environment prompt_bool vmail_root vpn_domain vmail_user characters vmail_gid nastycode vmail_uid questions user_name log_file username cert_dir nullecho virtuals creating manually running dovecot default specify aliases without smtpctl domains created command channel support dirname unbound control restart creates update failed cannot purple reload yellow passwd export result colors vusers whoami return chmode script server listed relayd table strip usage rcctl setup guide green panic smtpd hosts befor catch empty email doing enter helps unset httpd have that feel free norm them logs note doas this hope what stty read bold exit exec eval case esac make sure perl more dev tee txt etc bin var ssl yes msg red 033 ksh our got you vps any irc 31m 32m 35m 33m to 0m rg fd z
+Minetest.Minetest:1732531865: Openbsd.Minetest : installation webassembly multiplayer planetofnix functional downloads dragonfly available unzipping features minetest checkout building yourself dustlabs password releases nickname windows distros pkg_add openbsd browser android address joining servers freebsd version pasword ircnow ubuntu github engine source liking offers debian mostly client called double better folder after https click exile linux usage about again start other first win32 enter later based intro there games macos voxel win64 works mods doas make port ways like list tabs that more sudo wiki many from type need time site one com gnu for bit bin www can apt exe 1 5 8
+Team.Team:1732531865: Router.Hardware Ircnow.Hardware Oddprotocol.Hardware Bsdforall.Hardware Planetofnix.Hardware Nastycode.Hardware Sysop.Hardware Ircnow.Hosting Ircnow.Services : oddprotocol planetofnix bsdforall nastycode hardware services network hosting details router ircnow title sysop team page
+Create.RecentChanges:1732531865:  : recentchanges splinter create 25t09 user 2024 19z 11 21 by
+Almanack.CreateUser:1732525386:  : encrypted_password prompt_password mail_conf_dir domain_name prompt_bool postinstall mail_domain create_user environment vmail_user characters vpn_domain vmail_root createuser questions vmail_uid user_name nastycode vmail_gid log_file username virtuals cert_dir nullecho creating almanack aliases unbound domains smtpctl dovecot default creates created restart dirname running control channel specify support whoami relayd purple yellow failed export colors reload passwd vusers result update cannot listed return server panic email table setup green rcctl smtpd usage hosts guide empty enter httpd catch unset strip have logs doas norm free feel help more eval that what bold exec perl with exit read stty esac note case them tee dev vps etc irc got any com for txt our bin red yes 033 32m 35m ksh 33m 31m msg var ssl to 0m be rg fd z
+Chess.Chess:1732388117: Xboard.Connect Eboard.Connect : simpletable associated interfaces registered connecting originally preferred important graphical modernize microsoft downloads computing developed freechess currently emulation codebase sortable internet software security features winboard variants everyone username actively terminal provides possible install suggest windows address running account openbsd improve because details example icshost license android richard created network eboard easier telnet become xboard server player ircnow please mailto client public nubati border cygwin bridge world https valid width login class using rpblc linux while title email stage later added other maxxe being main 5000 nash with html that goal like fork will your want bugs sent fics join wine www org mac ios 100 web try mid hgm fix can lot via gui man new by if 90
+Ircnow.Explorer:1732384613: Ircnow.Servers Ircnow.9force : contributors distributed filesystems innovations independent development namespacing interfaces stroustrup everything completely technology integrated philosophy landscape influence windowing operating community kernighan protocols dominated uncharted sacagawea resources computing explorers marketing original berkeley software thompson replaced offering invented frontier language included clusters possible keyboard internet designed services computer process elegant wayland special creates network ritchie extends servers follows sockets removes chroots project forever lasting adopted desktop account created should ircnow rfloat clones future procfs before simple ioctls easily attach unique 9force global thirty easier change thanks impact dennis twenty itself bjarne client appear simply 50pct email train about learn write plan9 width linux first watch apply grids years union never using title brian mouse build space takes sound team free unix want from been have bell labs with same code that pike star help join come over were open like next will make live demo more card idea mind each need this your sees all the own utf jpg how set was png has can ssh ftp x11 9rc rob ken new by 8
+Resolvd.RecentChanges:1732380448:  : recentchanges resolvd usage 23t01 2024 jrmu 36z 11 27 by
+Dns.Overview-Draft:1732330305: IPv4.Overview IPv6.Overview Host.Usage Dig.Usage CloudFlare.Cons Dns.Domain Dns.Zonefile Dns.Providers Dns.Records Openbsd.Nsd Unbound.Configure Openbsd.Vhost : authoritative introduction registration astronomical coolchatclub distributed represented nameservers remembering information associated subdomains resolution cloudflare convention purchasing recommend registrar providers addresses computers hostnames configure utilities authority difficult elsewhere practical delegated resilient requests purchase nslookup probably internet overview resolver possible services register username referred networks workload millions multiple provides anything zonefile contains designed offline however browser imagine control example webpage storage instead because handled usually another setting perform records answers openbsd caching unbound someone queries achieve process billion specify numbers system across spread charge humans robust unless within typing shares ircnow actual single second router create entire client global called should center depend period would given title using these forth which comes offer files vhost usage panel owner makes scale zones level after might 20usd draft their every about knows https there three means could needs since visit your when glue then that upon cons this will want data size free 80da just 6820 cb07 root they af6b 2800 next have such 2606 8b2c once take like mail from find more only were fail time ipv6 also uses went ipv4 iana type base into part tlds team able year isp org can dns let run nsd 168 192 see dig why ns1 ns2 don top 21f was non pay fee 184 215 www by 93 14 go
+Resolv.Conf-Draft:1732327414: Resolvd.Usage Unbound.Configure Resolv.Conf Unwind.Configure : nameservers recommended censorship localhost configure specified provided resolver running openbsd unbound depends default privacy instead prevent records disable resolvd freedom caching follows suppose present whether restart updated differs changed lookup unwind values decide relies choose simply google domain prefer family before issues force flush inet4 first stale title cache which setup usage using tells point rcctl again inet6 draft https query given want fall have dhcp with file that bind will stop this fill then your what case edit doas ipv6 back help home ipv4 from more need sure make pick uses put are 127 etc man org dns can and 198 100 ask old own how znc isp may get we of 51 by
+Host.Usage:1732324338: Dns.Overview DNS.SPF Resolv.Conf Resolvd.Usage Unwind.Configure Unbound.Configure : troubleshooting information significant descriptive nameservers associated explicitly performing configured underneath providing subdomain remember exchange recently specific reversed properly overview resolves attached example handled records whereas openbsd grouped address provide pointer happens another include changed running depends whether resolvd suppose forward unbound utility because default numbers holding useful lookup suffix unwind notice before option rather first shows might title https usage setup cache flush query stale which added using digit types least gives mail test host know ipv6 rdns text used spf1 that arpa with your ipv4 have make sure this find want been will also last only than rely from 2001 when same four com may www new txt man org db8 see but has ns1 one all 168 192 ns2 ip4 don ip6 by to of mx 10 we
+Openhttpd.Perl:1732322238: Category.Perl !Perl Openhttpd.Configure Chroot.Intro Openhttpd.Tls : 00000c12054ca000 00000c0f12e8d000 00000c118de58000 00000c0f12e92000 00000c113a3b6000 00000c118de26000 00000c11cca8c000 00000c11cc985000 00000c1205877000 applications dependencies successfully configuring directories compilation interpreted filesystem requesting dependency executable definitely retrieving documents directive configure chrooting site_perl debugging challenge libraries directory openhttpd extension properly category continue internal chrooted location remember complete exercise received specify libdata example content slowcgi process openbsd libexec fastcgi contain running aborted copying scripts missing created command because initial install libperl seconds entries serving confirm default further reloads execute message pthread checked stdout strict search unable errors htdocs server escape locate inside grpref module client active copied failed trying enable daemon listen sample adding should output cannot echoes actual folder means index mkdir users equal print guess start chmod often https rcctl build title known strip trial perl5 iname tells which intro order bytes first touch found these amd64 local empty 37391 clues begin rand line this need case hold next that 1774 logs your left show null make over html text type with will here util find into port path libc must what turn rlib libm ctrl runs test acme well org web www var usr ldd for inc may bin dev ftp 192 tmp 168 tls its are etc was 100 set see cp up so kb 49 24 pm 28 z
+ScanFfs.RecentChanges:1732107514:  : recentchanges scanffs usage 20t04 2024 jrmu 34z 11 31 by
+ScanFfs.Usage:1732077094:  : disklabel corrupted scan_ffs recover backups scanffs usage been must has you use var it
+Team.Welcome:1731977996: Team.Announce Ircnow.Dogfood ZNC.Admin ZNC.Support Police.Intro Ambassador.Ilines Openbsd.Dump Openrsync.Usage : responsibilities announcements configuration investigate responsible precautions disconnects permanently forwarding 2022042001 individual ambassador coordinate whatsoever advertised connection teammates following openrsync timestamp currently donations ownership configure governors transfer personal accounts virtuals services channels followed security username trainees yourself operator yyyymmdd checking frequent properly customer downtime network example support website webpage welcome editing actions sharing request disable provide present openbsd members restore dogfood servers regular domains running changes bouncer contact arrange backups history collect clearly warning joining please serial botnow client online offers number ensure create emails ilines digits police notice banned enable either ircnow update broken taking notify assets making before assign remain single entire rather report folder usage admin shell intro these their users daily abuse using basic links every guide would after money right there title tasks track cause taken need with list make done copy will doas been form this keep file save from home each that some want know like them than dead free does owns have meet jrmu ircd dump goal read data away bugs look pay znc and log are can any all let may add who get new has yet etc fix see by cp
+Openhttpd.Hosting:1731812028: Openbsd.Adduser Relayd.Acceleration Chroot.Intro Acme-client.Configure Telnet.Http Pf.Intro : troubleshooting configuration compatibility automatically certificates acceleration alternative directories encryption requesting components connection afterwards additional openhttpd prepended therefore challenge configure documents processes directive listening directory subdomain backwards providing requested actually requests multiple hostname username remember creating computer modified searches location symbolic redirect response supports firewall blocking advanced provided examples browsers slightly replace restart virtual besides putting another working hosting servers testing similar fetched packets openbsd content assumes finally adduser respond running however default chroots htdocs create folder rather relayd delete points blocks notice client begins inside should unlike telnet custom length adding active errors enable wishes daemon change shared debug intro check index lines https using known again tells below rcctl guide break files users chown pkill first strip mkdir alive would title alias might match extra setup basic names acme with will them want home this html doas each that have does next link need 2021 your stop time read must mode were when last date says more well keep type text note runs look path else used from some than get org sat feb web var gmt url www sun and 200 off two man tls any ssl see new can may dvv has 443 ips pf 80 by 34 28 55 07 27 22 10
+Openssl.Cert:1731811222:  : certfile redirect example openssl netcat http com 443 nc z
+Netcat.Daemon:1731808984: Acme-client.Configure : troubleshoot application connection following requested configure language encoding priority 20100101 insecure requests document navigate modified private command running browser example webpage mozilla openbsd clients upgrade firefox deflate accept should netcat public daemon server image fetch https mimic alive gecko xhtml visit agent title first using since acme used host user 2024 gzip avif with text keys dest zstd mode keep then none site your xml ssl can gmt nov png svg tue org dnt crt get see 128 443 x11 to 19 as be by 15 06
+Openbsd.Galene:1731607194:  : yourpasswordhere credentialtype yourauthsecret subdirectories automatically configuration canonicalhost administrator conferencing indentation permissions definitions cgo_enabled configuring invitations accessible networking particular turnserver stacksize openfiles subgroups recording directory autostart groupname transport operator cowsrule proxyurl username examples teaching infinity download ordinary wildcard insecure publicly software suitable stateful running already openbsd ldflags created defines defined servers replace install maxproc present website contain entries useradd pkg_add crontab allowed compile typical _galene reboot domain tokens videos logins called script github spaces golang daemon change users order build looks mkdir below entry under which clone https makes jitsi while class found using haven says meet true 1234 that with 8444 done disk this like tmux sure tabs john 8182 want 512m does will data urls link json copy easy jech hmac doas skip sha1 step not the for jch and may etc tcp fyi any cat ksh new eof bin ice org see if cd by 0
+Almanack.AdvancedMailServerSetup:1731551299: Openbsd.Loginconf Openbsd.Rcctl Dns.Overview Nsd.Configure DNS.Mail Opensmtpd.Openrelay Opensmtpd.Troubleshoot : h5itbhzs73t4jshaj9yx6tf63yrataqugbxocx67wyekhch4zqiod6lkh advancedmailserversetup disable_plaintext_auth auth_verbose_passwords configuration_manual auth_debug_passwords quota_full_tempfail valid_chroot_dirs userdb_quota_rule specificpassword a8d16cd2144222fa misconfiguration 83bd6b3b1669649f ssl_cipher_list troubleshooting _rc_rm_runfile _rc_parse_conf authentication login_greeting info_log_path authenticated automatically mail_location unix_listener dovecot_flags log_timestamp configeration inet_listener instructions check_fcrdns alphanumeric inconsistent installation certificate letsencrypt alternative temporarily credentials information dovecotcert mtaproxy511 configuring permissions verbose_ssl oddprotocol senderscore check_rdns mail_debug optionally _rc_quirks executable publicipv6 california publicipv4 connection translated postmaster reputation characters abnormally submission encryption interfaces assurance debugging firewalls _dkimsign specified protocols directory opensmtpd connected important authcheck separated usernames configure indicates temporary ownership otherwise openrelay loginconf listeners suggested disabling mtaproxy2 addresses forwarded mtaproxy1 openfiles whitelist following recipient euhb95xlq authority receiving confirmed specifies available explained including rearrange supported sunnyvale exploited contains directly multiple properly outbound security _dovecot gigabyte hostname database blowfish generate increase allowing mailname ssl_cert doveconf rc_check _rc_wait rc_start requires received starting loopback complete checking required virtuals fallback matching replaced poolporg starttls programs sections receives settings packages cap_mkdb explains prompted s_client variable selector overview transfer 00000003 digicert delivery enabling messages yahoodns possible examplee outgoing filtered hundreds ifconfig response provider mail_uid almanack mail_gid default instead signing warning maillog allowed network nothing missing returns openssl private records specify happens running defines express sending smtpctl openbsd defined earlier located filters reverse service entries finally because without correct working relayed dropped aliases domains trusted actions packets blocked already limited pkg_add contact spammer buypass account privkey webmail version written readmes managed request labeled dealing further related folders maildir staging useradd mistake nologin dhparam suppose storage rebuild libexec offline special ssl_key include logging symptom similar timeout passing showing intend passwd egress checks second vusers trying rspamd ircnow letter tables inside errors choose handle smptpd fourth should gssapi emails extras driver strict webirc listed static socket macros please delete create signed change finish passdb scheme script blocks ssl_dh length mailto issues marked unable _smtpd result single source victim forgot headed handed adding exists verify entire failed forced spaces decide aiyngk actual denied answer enable remove turned reason header github linked daemon secure having before exited phase mtree admin https being least group often esmtp chown these hosts chmod reply first entry those whose daily about rcctl child state below known apply rules route fruit guide 16h2s field using depth local queue enter spool smtps value lines shows which tells pairs might point vmail offer colon avoid delay ports basic 39035 store evpid where chain imaps write fatal fails pages doing empty order since sslv2 share again _mail owned begin test4 class from best just lmtp doas rcpt wiki each need also want will 4096 2001 real your this into goes good that must 8192 help have used many sbin than sure make note tabs sent more jrmu euid egid done only 1003 mode 0750 last proc when junk find mask been case logs such high sha2 oath pony part else plus mta5 mta7 2605 6400 mta6 easy free lost like s843 says bind vio0 mean ctrl same does quit type hash much sets safe anti 1024 0600 stop them sha1 pop3 args home keep acme keys both book 2023 disk they some next what txt etc blf 168 url rwx src v02 jan yes see may can due pki 465 too fix pem 587 via crt nsd 451 8p0 770 440 650 ips 5p2 am0 www 220 bnc ne1 250 vps 195 but get usr lo0 204 vip bf1 228 106 5bf 395 119 251 198 104 gq1 993 143 15s way 127 new 518 231 125 db8 doc 1v0 max 80 37 17 41 my 29 57 34 mx 2b 1g 55 47 33
+Kill.Usage:1731551125: Ps.Usage : including processes example warning caution matches replace openbsd server string intend actual pkill title using httpd safer usage https first doas with will that find then name pid man not web org use you did for its any to by 1
+Ps.Usage:1731550850: Rcctl.Usage Kill.Usage : representing information processes actually running stopped openbsd example command killing active useful double server should daemon guides output number system ensure rcctl usage check httpd https pgrep title lists below used this have been with see the you org can has web aux if no 1
+Almanack.SystemStatsSh:1731547796:  : systemstatssh recommended utilization currently expensive connected nastycode processes questions regarding splinter almanack detailed support channel netstat fimstvz vmstat enable server sbin19 mailto please logins memory script uptime author email total print xargs usage about shell ports tells flood cause disk echo help have date most free open hope head some list auxf this last tech join come feel path home root unix your need any irc tcp may and udp but awk usr who for top 11 10 ps df 3 4
+Almanack.DumpBackupWithSCP:1731547772:  : backup_destination dumpbackupwithscp localbackup frustration nastycode uploading patiently directory partition extension deleteing sysadmin creating splinter complete starting solution directoy requires hostname password puttygen location security almanack command current openbsd working private concern curremt reading channel openssh partnaz without storage support author weekly server please script backed remote sbin19 mailto public folder screen custom copies shell files mkdir needs least x11r6 going thing crime title posts above using which begin setup paste store hours doas home note date from echo pair your root when size keys copy bkup calm keep this take will like save ofen join made wish path tech unix bash free that into text can run vps the dmp var use for its usr tmp get src irc obj df cd by rm 0
+Roundcube.RecentChanges:1731490725:  : recentchanges roundcube splinter install 13t03 2024 24z 11 34 by
+Almanack.SetupMailServer:1731470836:  : ssl_prefer_server_ciphers alertphishingsslmismatch allow_username_mismatch whitelist_sender_domain pop3_fast_size_lookups alertencryptedarchive pop3_no_flag_updates temporarydirectory alertphishingcloak alertencrypteddoc wl_sender_domain ssl_min_protocol pop3_uidl_format symbols_enabled scan_mime_parts scan_image_mime setupmailserver alertole2macros ssl_cipher_list login_greeting misclassifying authentication databasemirror unixsocketperm sign_networks inet_listener configuration automatically unix_listener mail_location communication circumstances unfortunately authenticated skip_process combinations dkim_signing restrictions 1amapassw0rd preparations maxrecursion certificates customizable wl_antivirus whitelisting introduction localforward misbehaving environment notifyclamd dkim_signed effectively furthermore connections alternative letsencrypt assumptions comfortable logfacility attachments greylisting localsocket information configuring management bruteforce containing accessible submission completely maxclients especially hostmaster configured postmaster disconnect redirected log_daemon identifies clam_virus installing legitimate forwarding definition connecting encryption _domainkey reconsider quarantine additional particular challenges mailboxes addresses localhost opensmtpd interface depending _dkimsign necessary following passwords trainable debugging sign_only sign_auth recipient doesn’t providing available transport disabling mail_home attackers rejecting therefore positives groceries freshclam protocols authority listening detection confident logsyslog no_fcrdns including tcpsocket detectpua openfiles preferred fullchain negatives exception recommend signature instance whenever _dovecot hostname multimap ssl_cert removing packages blocking virtuals required generate settings contains actually commands requests almanack examples provider supports there… internet scanning selector overhead creating outgoing provides tweaking increase messages handling teaching describe outbound detected purposes fighting incoming limiting probably delivers you’ve silently software received although catching requires services manually overload attempts firewall building together strength accepted failures addbrute original guessing mailname aliases no_rdns logtime restart ssl_key options timeout running warning equally blocked don’t trusted private smtpctl tcpaddr _clamav daemons privkey allowed staging account problem attacks include lessons entries similar without testing started expires malware persist traffic packets renewed dropped defined opening through storage replace servers loading modules monitor improve domains doveadm instead correct listens scanner comment won’t easiest destroy logging general maillog default content browser readded another reached suggest between anymore machine sockets _rspamd usermod arrives systems perform handles folders nologin because let’s openssl primary openbsd finally useradd lengthy pkg_add already handful locally script pubout readme common extend create ignore minute bypass filter beware should santas passwd action static extras writer userdb driver shield rather public before expiry hosted matter either ssl_dh dh4096 import export passdb blocks scheme remove pieces during affect egress needed highly _smtpd rs_cl_ prefix chance number _redis around member notice adding memory sooner genrsa checks helper little higher stores source faster second failed facing it’s change pubkey called answer stored logged points always simple longer result suited course plenty guides beside parser first quick those rates chmod after vmail about names muser rcctl dbdir small known dkim1 above lines email clear least speed later could chgrp nuser these pgrep using cases leave found phase under every users radar fetch while posts https needs abuse valid which smtps types agent might right share chown pfctl httpd rules today cover flush value mkdir score strip group owner level touch adapt false order apply until flags daily stays makes enull 11334 anull tlsv1 gives scans stats below lucky hosts issue quite comes based cname punch relay pop3s named study trick knows three alone happy basic keeps shady want from done sure such that ipv4 both your next some whom ipv6 exec this doas path into used mbox rcpt echo find best lmtp args krsa kdhd 3des away 0600 will mode text must hard disk just have gets left many 020a sbin 2001 c000 down 0750 1024 2048 same them good spf1 zone well like aaaa tune take care acme page 0640 deal land they fill wild root dump 3310 kind what save free huge site easy feel link five tell even than show most 020b true 0440 once slow hold ssh var web yes put few its far 587 550 fly crt pki src 10m try but 127 lo0 192 usr db8 rrs too txt 770 may rwx bag 128 tmp org api v02 url pem 110 due blf adh rc4 psk md5 995 gid dss got fit srp mx my mv
+Roundcube.Install:1731468864:  : mysql_secure_installation exactly24bytesrandomstr upload_max_filesize output_compression includesubdomains mysql_install_db php_admin_value session_storage utf8_general_ci syslog_facility gc_probability gc_maxlifetime display_errors php_admin_flag configuration alternatively roundcubemail post_max_size memory_limit requirements instructions default_host certificate imagemagick smtp_server efficiently remote_addr recommended redis_hosts remote_port immediately performance installing commenting privileges components connection statements identified accessible extensions log_logins log_driver mime_types javascript auto_start compatible gc_divisor log_errors sameorigin sysupgrade protection dedicated installer directory following newsyslog localhost configure necessary upgrading openfiles something forbidden originals variables parameter offending webserver character available forwarded blacklist questions nastycode php82_fpm pdo_mysql transport installed blocklist resolving packagist databases changelog syslog_id composer php_flag settings existing required although commands whenever optional protocol security log_mail activate packages combined response generate browsers properly nofollow supports 31536000 splinter requires password licensed services together complete location chrooted function versions specific complain solution probably bsdhowto consider actually pkg_info mapping mariadb keypair certain example urandom request don’t running des_key headers content initial quality reasons presume private contain webmail already fastcgi options entries nosniff noindex db_dsnw restart message deliver collate without assumes encrypt traffic between daemons missing imagick pkg_add openbsd usually suhosin enabled openssl disable frankly plugins depends writing present logging prepare prevent written filling servers caching created suggest similar website replace easiest capable beneath working egress readme sample stored trying client listen should public string across making author strict relayd robots finish please allows rcube6 rcube4 choose adding socket remove system behind obtain within rotate values update mysqld pecl82 easily module folder placed anyway second itself always append answer really latest return match about would httpd lines click table found mkdir share likes using rcctl after setup might users while frame print order cases knows parts cause these array could write happy https style since first check there cache above still boost basic comes bunch under least i’m front gives 40101 grant 21600 tells group below proxy which usage offer copy need name 0711 imap must sure make will that want your doas last over quit temp dist logs only drop have json once done this path curl intl ones both misc send zlib 6379 from also then what more into true 2048 busy 1024 mode link urls ipv6 0242 does easy html very c000 ipv4 uses many 2001 sets etc www not but can xss 500 64m usr 444 tag got has org db8 pem 127 tls 192 cnf 403 lo0 ips two gpl due dev see may sf ln cd gd cp md 66 6m 5m
+Acme-client.Configure-Draft:1731466737: Openhttpd.Configure Dns.Overview Host.Usage Netcat.Http Crontab.Edit Nsd.Troubleshoot Telnet.Http Openssl.Http : uwhzmqhx6nepcv25levodmaeymb1gutfvtyktvzkjgs 03f7fd846802cb0689c2bbd7b6f5e89eb66b troubleshooting configurations automatically misconfigured certificates letsencrypt environment 11133258838 directories authorities configuring alternative blacklisted functioning simpletable permissions information requesting recognized beneficial encryption 8112730231 appearance automation management forgetting commenting censorship openhttpd listening beginning challenge important directory 113861127 incorrect following authority recommend directive encounter generated dochngreq something replacing currently dangerous community otherwise transport possible rejected solution location provided browsers examples template purposes security official provider tutorial finished provides practice automate remember although complain finalize majority consider hostname response computer overview sortable clicking products requests obtained nxdomain properly accessed username training contains includes openbsd testing address contact started staging forward invalid padlock whereas records buypass similar domains running someday account zerossl another special message created article servers privkey private openssl nothing replace warning putting already crontab failure trusted keeping measure enables defined website success unknown subject default sockets defines exactly several analyze meaning missing process cronjob renewed working command secure border client blocks daemon mailto inside netcat folder public random either causes having should number chance higher delete signed safely telnet common errors before remove exists change double likely issues cannot modern please status limits lastly depend single reason unable expire result strict bottom output again drwxr found names avoid which after https tells needs first usage token might check tests using these authz below point width under match there certs chain class index wheel fails while added speak draft email title layer short would test4 hours every guide 1893 25c8 acme 1946 doas make this 2800 note line back your ipv6 have _ui3 will both 2606 must with been that less ipv4 they file fake such upon want 4797 3272 root each edit once time stop days does docs most real then copy many says else also from used only what icon same next more html full free skip goes well www var crt see don 512 oct was aka dns v02 api nsd pem log tls 100 are won url has two one cas fix 184 216 248 220 bak vps set 443 bar ips rsa but 172 may san too feb 180 few by 07 v3 34 65 cp 90 mv 01
+Openbsd.Php:1731466617: Acme-client.Configure Openhttpd.TLS Relayd.Acceleration : troubleshooting configuration acceleration installation information simpletable everything requesting different extension php83_fpm challenge upgrading following openhttpd correctly depending configure sortable location document versions fastcgi example browser located phpinfo purpose php_fpm pkg_add replace chroots default openbsd htdocs placed border pmwiki access client relayd minute folder errors guides server within should enable listen create update screen domain actual socket visit files tells index block where title notes start lines known strip rcctl class certs space check will make sure that your acme else left test spam logs real into path less want full then have ends doas says this port well need web www var com run and tls got etc are ssl see set any new use of be 11 80 10 by 2 7
+Openhttpd.Tls-Draft:1731462541: Tls.Intro Openhttpd.Configure Acme-client.Configure Rcctl.Usage Openssl.Http Openhttpd.Website Crontab.Edit Pf.Guide : tiltedwindmillpress troubleshooting configuration renegotiation automatically successfully configuring certificate description connections compression information request_uri production configured 1614233943 references automation negotiated encouraged openhttpd necessary explained challenge commented handshake http_host forbidden directory reloading otherwise connected supported indicates expansion signature beginning listening plaintext uncomment requested establish security template automate protocol location rulesets contains s_client examples plumbing previous normally hostname downtime blocking incoming 00000003 firewall properly private website timeout encrypt openssl correct subject digital session replace written because browser seconds openbsd crontab certain specify cronjob running already renewed process consult putting reasons assumes listing however working address padlock helpful mastery renewal testing expires public should folder verify actual server return result issuer bottom secure attach highly relayd longer random unable ensure allows enable domain cipher aes256 sha384 x25519 needs names check avoid sleep rcctl depth start above guide quick https trust pfctl intro chain usage first users visit tlsv1 using error which about certs after sslv3 write bytes valid title draft strip known again lines tells pages index basic shows acme note root with this bits aead also will once your each 3730 must many such days well that used mean have from more view then doas ecdh edit sent here 7200 best pass into does stop idea good none alpn fine html want wait code were look docs 4096 been gcm 302 etc ctx 443 can may see key 403 org 300 tcp are let png bar log var www crt dst yet say but has ips did end 253 367 r3 80 cn x3 of 90
+Top.RecentChanges:1731389753:  : recentchanges usage 12t01 2024 jrmu top 53z 11 by
+Chroot.Intro:1731385816: Openhttpd.Configure Nsd.Configure Unbound.Configure Ngircd.Install Znc.Chroot Openhttpd.Perl Pledge.Intro Unveil.Intro : 000002282f00d000 0000022622dc8000 0000022622dcd000 000002285bdc7000 000002285c133000 0000022914fb2000 000002282f101000 00000228c7de6000 00000228c7e16000 applications dependencies compromised permissions limitations simpletable libprogram filesystem dependency developed openhttpd sometimes configure directory imaginary drawbacks necessary replicate processes enhanced chrooted provides security syscalls services sortable multiple requires creating absolute normally changing apparent openbsd libexec whereis install unbound suppose because however tighten network attempt default daemons unveil pledge access within grpref moment thinks target ngircd create binary change refers inside become modify update cannot border until intro start these using there their every https mkdir users still title party third width class first stuck find each home path doas only uses gets type libc that this need copy want also must many have make when what then libm rlib name runs perl next jail them usr may you var znc own www nsd its ldd for has org and now new our of cp by
+Freedom.Fork:1731383824: Freedom.Software Freedom.Selfadmin Freedom.Unix : interoperability infrastructure comeandtakeit proprietary communities guarantees understand philosophy protocols difficult selfadmin liberties standards marketing component restricts software hardware possible exploits platform function preserve network rejects trained educate project quickly freedom follows control servers against tyranny require focused vendor taking abuses allows making always retain online cannot ircnow source ensure attach rfloat unfair normal anyone forced reason merely access warned create elites power never every users using right hands rests staff their title rules leave 200px width guard have most with code them that quit easy fork from time open only this when lock duty unix data away host your png but new own few by
+FwUpdate.Usage-Draft:1731377502:  : installation reliability simpletable description networking firmwares depending fw_update microcode important radeongpu arguments fwupdate required sortable properly hardware security graphics inteldrm concerns wireless however openbsd include devices updates several drivers loading managed control webcams usually cameras itself called amdgpu serval border uvideo simply delete issues there using title width class patch other usage check draft while ships after image legal some such with will wifi find gpus your need doas this over ran and iwn for iwx qwx etc cpu run has may use not due 100 bnx fxp usb vmm be to os by
+Site.SideBar:1731376550: Bouncer.Bouncer Xmpp.Xmpp Shell.Shell Ircnow.Explorer Email.Email Email.Lists Chess.Chess Radio.Radio Vps.Vps Vpn.Vpn Minetest.Minetest Freedom.Freedom Ircnow.Media Ircnow.Minutemin Minutemin.Bootcamp Ircnow.Adminforces Adminforces.Training Ircnow.9force Almanack.Almanack Terms.Terms Donations.Donations Ircnow.Contact SiteAdmin.AuthUser Site.SideBar : adminforces minutemin donations homestead authgroup siteadmin training minetest almanack bootcamp authuser bouncers explorer sidebar contact cloud9p freedom service liberty clients patriot mailing express ircnow 9force shells action admins source email ifend media chess lists radio world right terms https vpses xmpp pony join code vpns edit org the doc got of
+Minutemin.Questions:1731376232: Almanack.Almanack : configuration oddprotocol gameoftrees questions opensmtpd reproduce minutemin openntpd projects almanack examples archives relevant pastebin software redirect howtoask openbsd consult readmes mailing exactly include keyword asking before output search please sample relayd ircnow assume files debug https error check setup pages share first title found local using good time marc info misc list wiki show tell copy your this have logs such all and the org use don pkg usr www got etc web doc faq if
+Ssh.Fingerprints:1731375560: MITM.Intro Ircnow.SSHFingerprints Openssh.Intro Dns.FQDN Nsd.Zone OpenSSH.Connect : a0f433e68e5ba29f23825b21a23660d94a5b8a814cd71827fb75cfb4e84e4c49 88fbc099391d1e37330409978e68bdeebc50fe9bc41c5e2fd4a2d29ecde20409 a1f1388dff27d02f942ea5a9e2cb6008ae3e0a61622e5ff2b1ce746b32049152 6a9facbb8693644063b1eee91cfce24ada5536ff52df98210fae3d350fffaf34 22ccda0cafee42f3e2cc53d5f695244677a1a88f 7251d06cf5cf9312b502388edd93ff924c52a73a c9a19b42a7165596f0d0e5bfa947232978901dcb 4dc3d59ef28733c89f83e0e078b10a4a816e2a04 ssh_host_ed25519_key ssh_host_ecdsa_key verifyhostkeydns ssh_host_rsa_key sshfingerprints hexadecimal simpletable nameserver connecting convenient algorithm qualified following installed requires generate protocol reserved security internet verified matching enabling openssh example keyword similar hashing publish records enabled include meaning prevent servers quickly replace seconds clients domain keygen ircnow before should sha256 middle making option border script period dnssec format better attack stores fully intro sshfp final using first which check width class putty found files added type mitm keys your time used sure live line with when then fqdn this will four zone last uses com can nsd ttl 100 etc md5 its run get yes man see of by lf
+Ssh.Fingerprints-Draft:1731374643: MITM.Intro Ircnow.SSHFingerprints Openssh.Intro Dns.FQDN Nsd.Zone : a0f433e68e5ba29f23825b21a23660d94a5b8a814cd71827fb75cfb4e84e4c49 88fbc099391d1e37330409978e68bdeebc50fe9bc41c5e2fd4a2d29ecde20409 a1f1388dff27d02f942ea5a9e2cb6008ae3e0a61622e5ff2b1ce746b32049152 6a9facbb8693644063b1eee91cfce24ada5536ff52df98210fae3d350fffaf34 2jjkseg5jkaajbpmtrmpof1ltrm4ve5ec7ylk9r2qqq 7251d06cf5cf9312b502388edd93ff924c52a73a 22ccda0cafee42f3e2cc53d5f695244677a1a88f c9a19b42a7165596f0d0e5bfa947232978901dcb 4dc3d59ef28733c89f83e0e078b10a4a816e2a04 ssh_host_ed25519_key ssh_host_ecdsa_key ssh_host_rsa_key verifyhostkeydns sshfingerprints authenticity simpletable established hexadecimal nameserver connecting convenient qualified algorithm installed continue protocol reserved generate internet requires matching verified enabling records publish example hashing seconds keyword meaning openssh servers clients replace quickly include prevent keygen ircnow sha256 format follow should notice attack middle domain making option period stores script before border sshfp found known fully final using which other added draft intro class width check first files putty mitm this zone will type keys your fqdn when with sure line time four used want last uses live 168 nsd can ttl com yes 100 192 md5 etc get run man its are any by lf
+Top.Usage:1731373373: Openbsd.Top : processorup processes averages openbsd number memory proper amount usage cores 2288m check cache 1023m 1775m real days intr cpu0 idle user spin nice cpu1 free 189m 392m swap 993m load have 217 top you the sys ram and run 216 137 tot act 67 19 on if of 61 48 66 41 01 49 33
+Openbsd.Upgrade76:1731373188: Openbsd.Bsdrd Openbsd.Sysupgrade Openbsd.Dump Openbsd.Restore Vmctl.Usage Openbsd.Cu Signify.Verify Openbsd.Bootconf Openbsd.Pkg OpenSSH.Connect Openbsd.Syspatch Openbsd.Fwupdate : 0xffffffff81001000 congratulations configuration automatically installation inconsistent successfully maintaining downloading filesystems recommended immediately proprietary interactive unattended simplicity networking optionally thereafter california installing bootloader university manipulate sysupgrade substitute particular developers fontconfig ramdisk_cd prepending utoinstall everything 0x1c86d50 switching copyright upgrading installed correctly succeeded something partition buildinfo installer directory megabytes interrupt signature operating libraries fw_update relinking completed available upgrade76 lightblue lightgrey lightpink existing pressing selected shutdown overflow location password reserved provider verified firmware sysmerge possible username tutorial checking entering probably external mounting security labelled xshare76 terminal 19912661 disabled hostname bootconf syspatch freetype continue graphics downtime programs fwupdate 0xab0b98 messages skipping packages upgrades versions required signify openbsd xserv76 xbase76 xfont76 advance pattern usually console missing another pkg_add closest outside servers padding process bgcolor timeout connect regents openssh seconds welcome default 3887112 editing 1721344 booting happens 4101039 restore proceed details careful corrupt arrived probing prompts replace answers example control decided 4029776 patches 1092498 1395768 1540351 1236992 reading 4318224 assumes generic written running updated minimal hundred present against reboot escape rights symbol except margin repair typing either serial define follow ircnow return sha256 verify should issues during bootup screen yellow change before 704512 proper 115200 465408 needed 318888 409472 booted comp76 mirror create unique easier mostly kernel cannot normal notify making device choose game76 amd64 fonts later nodes bsdrd point 20070 index 28007 leave man76 tty00 error uname allow intel abort ports would often https proxy above entry steps force flash drive clean using state vt220 usage disks which boots shown cause users vmctl table shell title first going login block black guide alert 2046m final root this faq4 sd0a done 2024 doas have html your sure from make then will long with 1993 sets 1995 fsck only risk same says note back that sake like dump must list none text such used 8080 just also even want view them warn exit 1989 1986 1982 left com0 hd0a been wiki baud else hard find idea 2324 638k new cst may way see org tgz any vmm www 128 nfs get elf cd0 iso alt has mon sep and mdt nov 332 few but 5em mnt 1em did etc vnc hd2 pc0 mem a20 php hd1 326 pub fix ftp was cdn url usb 30 67 ok fp cp kb
+Openbsd.Upgrade76-Draft:1731372500: Openbsd.Bsdrd Openbsd.Sysupgrade Openbsd.Dump Openbsd.Restore Vmctl.Usage Openbsd.Cu Signify.Verify Openbsd.Bootconf Openbsd.Pkg OpenSSH.Connect Openbsd.Top Openbsd.Syspatch Openbsd.Fwupdate : 0xffffffff81001000 congratulations configuration automatically successfully installation inconsistent immediately proprietary filesystems downloading recommended maintaining interactive installing manipulate networking simplicity thereafter california bootloader university substitute particular optionally unattended sysupgrade fontconfig developers utoinstall everything ramdisk_cd prepending copyright something upgrading correctly installed succeeded processes processor libraries 0x1a6a408 buildinfo installer directory following interrupt megabytes signature fw_update switching relinking operating available partition upgrade76 reinstall completed lightgrey lightblue lightpink beginning external hostname overflow sysmerge reserved freetype location tutorial shutdown programs firmware continue probably verified 0xab0b98 fwupdate 17741653 required provider skipping packages xshare76 syspatch labelled selected possible bootconf entering graphics checking username existing upgrades terminal averages downtime pressing password security versions mounting messages disabled openbsd usually default pkg_add bgcolor patches missing another seconds restore regents against console advance decided xfont76 outside xbase76 timeout minimal signify careful proceed corrupt replace details openssh probing example padding control arrived answers closest servers connect xserv76 pattern welcome prompts editing updated 1721344 running 3887112 generic written 4027400 booting reading 4101039 1391208 1546359 1232896 4277256 happens present hundred assumes define margin should 115200 reboot number sha256 rights bootup typing either change return memory verify cannot except repair screen serial amount proper unique create issues kernel 318888 465408 booted before device notify escape yellow during making needed mostly 413392 comp76 game76 088677 symbol mirror easier 704512 normal choose allow steps entry amd64 above point https guide shell boots drive flash using draft intel nodes 20070 28007 would bsdrd later ports uname cores 2288m cache 1204m table error tty00 often shown usage clean force which disks vt220 state leave vmctl fonts users cause proxy abort man76 title final alert login first block black going 2046m make sets none list hd0a sure html 8080 will hard done from that 2024 just root with this must sd0a 1991 note 1982 1986 1989 1993 such then 1995 also even view dump back only your faq4 text sake used like them risk long says find been exit have 2324 idle real 666m spin com0 756m 387m swap doas 638k intr nice else days cpu0 cpu1 want baud left warn same idea fsck 1em get 5em tgz top now few may any and has www see did was org elf but wed fix apr thu mdt 128 nfs cd0 alt tot iso cdt new a20 ftp usb pc0 pub vnc hd2 hd1 cdn etc url 109 vmm way 326 mon sep mnt ok fp 79 30 29 94 0k kb 49
+Openbsd.Upgrade:1731363984:  : upgrade76 redirect openbsd
+Openbsd.Sysupgrade:1731360569:  : sysupgrade76 redirect openbsd
+PmWiki.FmtPageName:1730627640: PmWiki.Functions PmWiki.Variables PmWiki.Internationalizations PmWiki.LayoutVariables PmWiki.BasicVariables PmWiki.PageVariables PmWiki.OtherVariables PmWiki.PathVariables Cookbook.Functions : internationalizations internationalisation internationalized lastmodifiedhost layoutvariables lastmodifiedby basicvariables othervariables groupfooterfmt enablepathinfo substitutions 28programming automatically corresponding interpolation pathvariables pagevariables documentation substituting availability replacements alphabetical fmtpagename centralizes titlespaced substitions corresponds groupspaced pagetextvar translation frequently processing formatting subroutine rebuilding substitute referenced incomplete performing converting assumption myvariable generating attributes namespaced convention functions performed character according sequences describes something expensive modifying different regarding scripturl typically instances filtering currently beginning available formatted extremely path_info arbitrary variable_ wikipedia remaining displayed basically replaced audience defining specific internal standard advanced followed cookbook security contents explains whatever intended normally fullname anything template probably readpage performs repeated multiple through appears actions limited happens trusted dynamic instead caching because however reverse exposes browser pauthor pattern shouldn perhaps strings globals somehow calling general pageurl finally related produce variety special summary phrases follows applies notably returns require needed pmwiki change values things newwin exists cannot simple become suffix unsafe unwise handle xyzfmt better loaded tables arrays coming markup people admins output letter robots pcache obtain syntax viewed moment rather cached ptitle called engine order which using under least pmhlt wrote usual sites their heart green there these being those calls defer means upper phase based doing needs going avoid since aware often items along hold this very with over that done into rule fmtv next like just only used also weak such work urls than list have tmpl will they must file else been exit from case more same ways note word then uris when hide aren php may etc pvs its set isn see pre why 29
+PmWiki.PageListTemplates:1730627640: PmWiki.PageLists Site.PageListTemplates Site.LocalTemplates PmWiki.PagelistVariables Cookbook.PagelistTemplateSamples PmWiki.PageVariables PmWiki.PageTextVariables Cookbook.DictIndex Cookbook.SimpleForum Cookbook.Cookbook : additionalpagevariables pagelisttemplatesamples specialreferencesend fpltemplatepagefmt pagelistvariables pagetextvariables localtemplates administrators grouppagecount mytemplatepage traditionally configuration automatically functionality distribution alphabetical supplemented referencing templateend simpleforum directives maintainer overridden structures deprecated bytitleend groupcount generating attributes conditions parameters particular separated displayed iteration eachcount increases involving pagelists dictindex arguments available locations enclosing generated specified following signifies advisable including beginning reaching creating identify examples contains iterates standard fullname defaults returned previous versions simplest cookbook improved intended included displays sections repeated tableend complete inserted indicate searches property postings redirect together replaced multiple upgrades database actually directly command options recipes specify opposed closure desired benefit instead formats signify control changed writing ordered enclose without summary content purpose entered returns variety grouped however current defined sidebar several changes anchors preview updated meaning denoted footer header closed markup output pmwiki cellnr breaks column starts second during within except inside custom values resets useful author tables appear enable easily syntax before common sorted stored titles modify entire script having quotes double every there pmhlt which first could write might their pages would total where ifend using equal found these looks doesn tests those other whose allow after still words usage being saved width class frame alone trail based match that only work uses from site then will your this many make than same ways last when show need used loop must into just body open jump divs have next acts like help none were upon item some also most been such thus once are new see may can was own now has its etc of 1 5 3 2
+PmWiki.Drafts:1730627640: PmWiki.EditVariables PmWiki.Passwords PmWiki.SecurityVariables PmWiki.LayoutVariables PmWiki.Drafts : draftrecentchangesfmt enabledraftatomicdiff securityvariables enablepublishattr allrecentchanges layoutvariables administrator changesummary contributions editvariables alternatively configuration customization authorization individually enabledrafts intermediate unpublished draftsuffix currenttime permissions distinguish temporarily capability authorlink publishing subsequent postdraft passwords otherwise summarize available pagelists sitegroup original requests previous becoming versions separate postedit recorded orphaned moderate included required multiple postings enabling searches provides removing official however leaving default further history editing created handled depends whether between entries similar disable instead example interim buttons setting changed defined module should ignore remain delete latest single pmwiki saving appear causes either intact anyone _post enter unset bring local array dates names saves usage saved using after edits these since entry final split could feeds pages start level which prior stage order clear ready until with have then both this adds will them from only also into file sets used thus copy when kept show that back note most been for can has rss may see non faq hlt php are by do 1
+PmWiki.Internationalizations:1730627640: Localization.Localization Group.Group Group.XLPage Group.XLPageLocal PmWiki.OtherLanguages PmWiki.UTF-8 PmWikiFr.XLPage PmWiki.PathVariables PmWiki.WikiGroup PmWiki.GroupCustomizations Cookbook.MultiLanguage Cookbook.MultiLanguageViews Localization.XLPageTemplate PmWiki.PmWiki PmWiki.I18nVariables : loadingtranslationpages creatingnewtranslations internationalizations http_accept_language internationalisation groupcustomizations multilanguageviews internationalizing internationalized languagelistend xlpagetemplate otherlanguages distinguishes configuration installations languagelist2 correspondent documentation i18nvariables pathvariables localization dictionaries include_once abbreviation local_string xlpagelocal information fmtpagename effectively wikilibdirs appropriate alternative uitdrukking recommended nederlandse expression characters includeend pageexists rechercher identifier translated containing definition individual internally configured maintained pmwikifrca particular operation typically published scattered alphabets directory selectors following wikigroup necessary wikilinks parameter different displayed beginning installed otherwise mechanism microsoft intention available contains enabling cookbook accepted complete advanced relevant converts included provided starting versions archives override function commonly consider encoding possible canadian optional separate entirely anything existing pagelist multiple standard changing instance specific localize addition somewhat received pmichaud download pmwikien accented pmwikies required pmwikiru supports allowing browser english headers another default content example changes without defined special spanish strings servers depends perhaps xllangs usually several context because library suppose runtime further _server summary defines desired denoted printed phrases already calling derived letters between umlauts limited options windows setting smaller scripts prompts specify improve looking charset created devoted wikidir french should access wanted simply substr method adjust easier if4end called adding slower before loaded placed matter rather insert switch normal rframe portal canada though allows proper others recipe within unpack locale german please ensure appear people enable number almost nobody search listed revert beware output system array files break pmhlt notes final there false which check ifend might https using these lines would de_de linux where doing point loads needs named since tools dutch order xlsdv offer first after those above could latin usage pairs tests right while trail below names clear later finds type your that been utf8 when fact from this them like work each long will thus uses docs into site then have size both font than sets ones even they used does case mijn rest mark wish help many were best copy made also says gets user 8859 good term such asks same easy word code near exit how web won has php don may see but its two was way org www cpp deu key few got due iso tgz yes faq my by 0
+PmWiki.RefCount:1730627640: PmWiki.WikiAdministrator PmWiki.LocalCustomizations PmWiki.RefCount : refcountcontrolsend localcustomizations wikiadministrator recentchanges include_once referencing referenced references following contains fullname existing includes performs searched orphaned database display selects example missing summary placing enabled scripts between newwin output action number pmwiki counts appear browse groups unless before which shows pages there names using links table bring where limit farmd with from long that each this make very only have will line file them must any url way you all add use and non hlt php can but don of by
+PmWiki.WikiFarms:1730627640: Cookbook.FarmSetupByExample Cookbook.WikiFarmAlternative PmWiki.WikiFarms PmWiki.WikiGroup PmWiki.Installation Cookbook.CookbookBasics PmWiki.LocalCustomizations PmWiki.PathVariables PmWiki.WikiFarmTerminology PmWiki.WikiFarmsAdvanced Category.WikiFarms !WikiFarms : wikifarmterminology localcustomizations wikifarmalternative farmsetupbyexample wikifarmsadvanced administrative administrators cookbookbasics authentication authorization installations configuration independently automatically pathvariables farmpubdirurl prerequisites instructions include_once intermediate interactions particularly session_name alphanumeric consistently responsible configuring information subdividing definitions cs559sessid recommended additional wikigroups accessible farmconfig components categories collection identifier completely considered inclusions scriptfile background motivation difference individual impossible reference generally pagelists directory regularly installed statement subdivide unrelated different difficult procedure contained knowledge upgrading structure describes configure wikititle processed mynewwiki computing xyzsessid important described following completes authuser existing separate sessions password versions category contains managing examples probably location remember choosing involved creating audience requires portions commands slightly absolute writable settings starting username assuming anywhere relative inherits contents updating included organize function directly provides services multiple written another recipes appears upgrade minimal scripts between choices default amazing browser working totally decided several domains because execute running apache2 windows changes testing attempt address largely defined message comment discuss sharing calling buttons primary summary across assign shared create pmwiki things server within choose before common reader cookie single secure simply stored phrase prefix points adding unique normal farmed become should quotes second switch repeat double affect matter option better search little allows simple reduce tested enough effort rather amount called their wikis wiki1 apply still steps track https these using index wiki2 there badly which place about links farmd holds under might doesn whole gives files notes ready least sound first pages error every loads would while sense skins makes order click based could same sure only code your that will home such have this each open need more used look turn both like into ways time edit exit must many good just want wide easy urls feel when keep uses self than sets from near most live been view line pick news rule move fact they data also them much some copy idea php can web two how www see may per hlt top try get has don why own gui of 3
+PmWiki.Requirements:1730627640: Cookbook.InstallOnIIS Cookbook.Standalone Cookbook.WikiOnAStick : administrators configuration prerequisites litespeedtech compatibility wikionastick installoniis litespeedweb combinations requirements information recommended application standalone webserver available executing candidate correctly passwords microsoft following resources cookbook internet reported standard lighttpd hiawatha anything audience provides specific edition linksys storage because network fastcgi windows running recipes enabled another example special release summary roughly current scripts version pmwiki before engine topics appweb device apache places builds nslu2 bones small later there linux https where start drive nginx basic used been bare that with sort some also from unix may www php mac usb isn org has ssl 47 19 0 8 5 3
+PmWiki.Installation:1730627640: PITS.PITS PmWiki.MailingLists PmWiki.Upgrades PmWiki.ReleaseNotes PmWiki.Subversion Cookbook.Cookbook PmWiki.Skins PmWiki.FilePermissions PmWiki.InitialSetupTasks PmWiki.Internationalizations Group.Name Cookbook.SimultaneousEdits PmWiki.SimultaneousEdits PmWiki.Troubleshooting Cookbook.PHP Cookbook.InstallOnIIS PmWiki.PathVariables Cookbook.CleanUrls Cookbook.Standalone Cookbook.WikiOnAStick : internationalizations initialsetuptasks simultaneousedits troubleshooting listlanguageend filepermissions administrators configuration documentation pathvariables instructions respectively wikionastick installation include_once deliberately titlesummary mailinglists decompressed releasenotes localization distribution improvements establishing subdirectory installoniis introductory requirements recommended directories customizing information temporarily dirsetupend overwritten public_html translation appreciated installing containing explicitly additional accessible subversion stylesheet initialize standalone manipulate temptation sufficient difficult installer cleanurls wikifarms webserver ownership structure filezilla pubdirurl obtaining generally otherwise templates activated contained executing unpacking changelog carefully encounter following different described important available languages download indexphp renaming manually cookbook pmwikifr publicly changing tracking pagelist location upgrades instance audience computer accessed explains creating contains software problems pagename platform preserve writable programs accounts commonly portable created command because default website browser opening wikilib example archive analyze methods country scripts achieve systems windows further wrapper provide extract missing closing usually project perform besides instead guiedit current related tarball shorter bundled offline gzipped machine recipes winscp called layout latest resist newwin manner enable single before normal folder stable should easily sample rename readme appear please french simply xlpage choice adding number placed peruse report ensure during rather needed always typing begin check named files https umask works chmod might needs group users about using these there ifend again which pages chdir loads cases reset above first skins unzip after paths false brief found write issue order doesn also beta from want more pits each i18n just copy this your must same then text with into make look most tips that 2777 unix done main docs take when have root part give will safe mode runs like some many step zxvf sort well been home feel data than them hold how hlt can 002 see tag faq why org www ftp dot css txt eng net two let job fmt 755 tgz red may my mv by 3b 3a 4
+PmWiki.DocumentationIndex:1730627640: PmWiki.DocumentationIndex PmWiki.DocumentationGuidelines PmWiki.LayoutVariables PmWiki.Introduction PmWiki.BasicEditing PmWiki.CreatingNewPages PmWiki.Links PmWiki.Images PmWiki.TextFormattingRules PmWiki.MarkupMasterIndex PmWiki.Uploads PmWiki.Tables PmWiki.TableDirectives PmWiki.TableOfContents PmWiki.WikiStyles PmWiki.WikiStyleExamples PmWiki.AccessKeys PmWiki.PageDirectives PmWiki.IncludeOtherPages PmWiki.InterMap PmWiki.ConditionalMarkup PmWiki.PageVariables PmWiki.PageTextVariables PmWiki.MarkupExpressions PmWiki.Forms PmWiki.SimultaneousEdits PmWiki.WikiStructure PmWiki.WikiGroup PmWiki.GroupHeaders PmWiki.WikiTrails PmWiki.PageHistory PmWiki.Passwords PmWiki.Categories PmWiki.PageLists PmWiki.DeletingPages PmWiki.WikiElements PmWiki.SpecialPages PmWiki.Installation PmWiki.InitialSetupTasks PmWiki.Upgrades PmWiki.BackupAndRestore PmWiki.UploadsAdmin PmWiki.Security PmWiki.CustomMarkup PmWiki.CustomWikiStyles PmWiki.Internationalizations PmWiki.LocalCustomizations PmWiki.GroupCustomizations PmWiki.Skins PmWiki.SkinTemplates PmWiki.SitePreferences PmWiki.WebFeeds PmWiki.WikiFarms PmWiki.FAQ PmWiki.AQ PmWiki.FAQCandidate PmWiki.Questions PmWiki.HowToGetAssistance PmWiki.Troubleshooting PmWiki.AvailableActions PmWiki.AuthUser PmWiki.Blocklist PmWiki.Notify PmWiki.PasswordsAdmin PmWiki.RefCount PmWiki.UrlApprovals Cookbook.ModuleGuidelines PmWiki.Variables PmWiki.Functions PmWiki.PageFileFormat PmWiki.Audiences PmWiki.Contributors PmWiki.MailingLists PmWiki.PmWikiPhilosophy PmWiki.DesignNotes PmWiki.ReleaseNotes PmWiki.ChangeLog PmWiki.References PmWiki.Glossary PmWiki.BasicVariables PmWiki.EditVariables PmWiki.FilePermissions PmWiki.FmtPageName PmWiki.I18nVariables PmWiki.LinkVariables PmWiki.OtherVariables PmWiki.PagelistVariables PmWiki.PageListTemplates PmWiki.PathVariables PmWiki.Requirements PmWiki.SpecialCharacters PmWiki.UploadVariables PmWiki.WikiAdministrator PmWiki.WikiPage PmWiki.WikiWikiWeb PmWiki.WikiWord : documentationguidelines internationalizations groupcustomizations textformattingrules localcustomizations howtogetassistance documentationindex pagetextvariables pagelisttemplates simultaneousedits markupmasterindex conditionalmarkup includeotherpages initialsetuptasks wikiadministrator wikistyleexamples markupexpressions pagelistvariables specialcharacters availableactions backupandrestore customwikistyles creatingnewpages moduleguidelines pmwikiphilosophy sitepreferences layoutvariables troubleshooting tabledirectives filepermissions uploadvariables tableofcontents passwordsadmin enablepmsyntax pagedirectives basicvariables administration pagefileformat othervariables wikistructure pagevariables skintemplates customisation deletingpages linkvariables i18nvariables pathvariables editvariables administering installation requirements releasenotes intermediate groupheaders faqcandidate urlapprovals contributors uploadsadmin custommarkup basicediting contributing wikielements specialpages distributing mailinglists introduction maintaining pagehistory wikiwikiweb maintenance development fmtpagename designnotes attachlist protecting trailstart accesskeys incomplete categories wikitrails organizing contribute developers frequently wikigroup pagelists functions audiences blocklist questions wikifarms community customise changelog following highlight security answered language webfeeds yourself authuser intermap upgrades versions beginner cookbook wikiword refcount trailend glossary coverage describe wikipage uploaded attached summary aspects answers section comment problem various others topics tables easier become newwin images listed appear notify always recipe skins links forms title which might about using files below these item want that part know misc feel free have more they some here make read just loop help well see are by 3 2
+PmWiki.FAQ:1730627640: Site.Search PmWiki.DocumentationIndex PmWiki.Questions : documentationindex corresponding includefaq frequently respective questions according summarize collated answered pagelist fullname facility commonly changes comment answers summary attempt pmwiki rather making search faqtoc please asked which below found those class using leave their pages trail this held will then make more link here your site some have than fmt can for are see isn and of if
+PmWiki.Links:1730627640: PmWiki.WikiSandbox PmWiki.BasicEditing Main.WikiSandbox Main.HomePage PmWiki.WikiWikiWeb PmWiki.Installation PmWiki.WikiWord PmWiki.LinkVariables PmWiki.Links PmWiki.InterMap PmWiki.NonexistentPages PmWiki.CreatingNewPages PmWiki.WikiGroup PmWiki.Categories Profiles.Author PmWiki.LayoutVariables PmWiki.PageSections Cookbook.FixURL Cookbook.DirList PmWiki.Robots Cookbook.PopupWindow Cookbook.DeObMail Cookbook.AddUrlSchemes PmWiki.PageLists PmWiki.LinkSchemes Cookbook.ExternalLinks PmWiki.Images PmWiki.ConditionalMarkup Cookbook.Footnotes : enablelinkplustitlespaced conditionalmarkup 28disambiguation markupheadersend nonexistentpages creatingnewpages characteristics layoutvariables capitalization addurlschemes configuration automatically linkshortcuts pagetitlename bibliographic rootdirectory externallinks linkvariables searchresults international basicediting capitalizing subdirectory installation tooltiptitle pagesections deliberately conditionals localization supplemental pagelistlink 28parenthese respectively someoneelse wikisandbox parentheses linkschemes popupwindow information differently punctuation encountered currenttime incremented wikiwikiweb othergroup signatures formatting subsequent occurrence identifies categories particular wikitrails characters containing reportedly protecting workaround definition incomplete parameters recipients actionname hyperlinks directives references mechanisms encounters consistent overridden javascript underscore sequential pmwikihome exceptions pagelists including addresses following intermaps wikilinks backlinks markupend evaluated displayed supported redirects robotstxt resources locations myaddress anonymous specially numbering attribute wikipedia wikistyle specified protocols validator checklink technical something configure camelcase footnotes somewhere recognize wikigroup othertext contains pagename provided selflink brackets behavior sidebars replaced produces appended wikiword cookbook internet internal profiles filename browsers position requires extended explorer homepage removing directly myanchor modified entering absolute followed pmichaud relative specific bookmark audience tableend nofollow projplan uniquely checkers multiple provides document deobmail examples fullname displays security category includes vertical wikipage pictures somepage actually spammers intranet versions linkwith organize together default creates subject history outside markup1 created anchors markup2 related another escaped somedir specify omitted website actions dirlist purpose instead summary jumping appears letters because server1 between network windows defined details similar written feature noticed further leading october allowed textual numeric fetched reasons entered mailing classes without several enables existed clients linking message formats servers brought problem urllink reverse becomes enclose systems authors google simply called within recipe shared attach syntax should fixurl center spaces struct option newwin change images prefix quotes pmform groups encode useful group1 mostly group2 exists elseif modify inside itself period double bottom digits adding simple hiding titled square things xlpage across target rather cellnr _blank advise suffix mailto better others assets invite custom https html4 below pipes pmhlt begin types using photo doesn email first would names reuse green entry slash which horiz paths found while drive sites words above brace users arrow ifend makes among gives there wiki_ start their falls tilde added field could every since three areas shown after learn works looks based align order those plain about more have will same such also them main blue than from that your then both only this open they kept what used hide like ways need each want icon body date dash lets when must next find nntp 2010 ease xmpp four kind into thus were idea easy any via can www faq see may put ssh php top css bcc few ftp key won gif jpg dot why by 29 14 48 50 04 w3 12 90
+PmWiki.Uploads:1730627640: PmWiki.PmWiki PmWiki.Images PmWiki.UploadsAdmin PmWiki.WikiGroup PmWiki.Links PmWiki.UploadVariables PmWiki.PageDirectives PmWiki.WikiAdministrator PmWiki.Passwords PmWiki.PasswordsAdmin Cookbook.Attachtable Cookbook.AttachLinks Site.PageActions PmWiki.AvailableActions Cookbook.UploadTypes Cookbook.PreventHotlinking Cookbook.LinkIcons : enableuploadversions preventhotlinking wikiadministrator availableactions uploadvariables uploadnamechars pagedirectives passwordsadmin imagetypesend configuration automatically international uploadmaxsize restrictions uploadsadmin unexpectedly intermediate distributed attachlinks information attachtable parentheses attachments executables downloading pageactions replacement uploadtypes individual webservers determines sufficient attachlist characters authorized extensions restricted displaying incomplete configured unsuitable identifier referenced currently displayed following linkicons directory kilobytes attaching beginning organized appending wikigroup uploading replacing otherwise installed depending accessing groupname eliminate file_name customize commented disabled uploaded increase security fragment filetype pagename modified cookbook original instance includes audience received directly notation megabyte followed archives filename existing behavior brackets location displays deletion addition possible special caption options escaped summary listing another removal missing running scratch someone example against enabled correct desired strings further 1000000 whether default viewing browser renamed removed reasons feature instead require present deleted control without whereby authors specify becomes details already office simply others resume spaces images pmwiki allows limits change system markup letter either appear groups symbol offers recipe double should syntax itself common listed files video pmhlt first sizes there about audio their check after cache using clear still note2 local shown delta wants click newer pages store newly https write embed mouse names known edits query false mydoc stuff panel lacks adobe jpeg also same such like make only when that host look have wbmp svgz webp epub text exit does html 50kb flac opus each webm your mpeg both pptx docx over free site user from used area more this than misc been part work them tool sure then fake will blue hide wide can see dox url may why and faq old php abc nix tmp box any 1mb has put xcf png jpg gif pdf txt per dot tip yet odg rtf mdb xls odp ods odt hqx rpm tgz psd zip kmz kml dvi swf css eps mkv mpg mp4 ogv ogg wav mp3 via ftp wmf go 7z qt
+PmWiki.Forms:1730627640: Cookbook.InputDefault PmWiki.OtherVariables Cookbook.FormValidation Cookbook.FormExtensions Cookbook.InputFormsAndJavaScript PmWiki.PageLists Cookbook.PmForm Cookbook.Fox Cookbook.Input Cookbook.WikiForms Cookbook.ProcessForm : inputformsandjavascript standardinputcontrols enableinputdataattr id_of_the_datalist field_attributes formextensions formvalidation othervariables formnovalidate accessibility inputdefault positionally autocomplete enhancements counterparts placeholder processform immediately describedby convenience suggestions unsupported description alternative definitions labelledby additional checkboxes parameters specifying formatting processing characters explicitly compatible directives following wikiforms different pagelists accesskey suggested autofocus markupend specified lowercase libraries invisible searchbox including maxlength separator selection arguments reference displayed cookbook required browsers dlist_id directly fullname readonly disabled sequence expanded contains newlines allowing clicking elements previous wrapping textarea selected explains attached anywhere detailed authorid existing password multiple pagename actually optional username supplied creation included formname advanced franklin tabindex between applied options uncheck checked letters initial pressed current summary assumed setting receive omitted onwards replace another 0beta45 enclose written example feature recipes general creates caniuse pattern accepts shouldn assumes correct appears filters notably enctype firefox fields output spaces submit button hidden action quotes inputs common usable custom opened causes pmwiki dashes syntax method config inline prompt number allows simply second ensure recent values starts typing little chrome safari inside having tables pmform handle title first login typed pmhlt https terms class opera needs latin alpha gamma basic their types html5 radio after these links later named email below reset image group state using begin found pages embed fully block doing knows doesn often size that step also menu have when ends item lynx more this jane them post your will then edge file msie cols site lang same note fill what ones from drop down give even null nbsp like with some must dl_2 used into role bold dl_1 addr most www see bit tag get how url via two yes org has css min abc src w3c 808 php its 30
+PmWiki.PerGroupCustomizations:1730627640:  : pergroupcustomizations redirects summary pmwiki
+PmWiki.Introduction:1730627640: PmWiki.WikiWikiWeb PmWiki.PmWiki Main.WikiSandbox PmWiki.BasicEditing PmWiki.TextFormattingRules PmWiki.Requirements PmWiki.DocumentationIndex PmWiki.Download PmWiki.Installation PmWiki.MailingLists PmWiki.HowToGetAssistance : textformattingrules howtogetassistance documentationindex collaborative introduction requirements instructions installation basicediting mailinglists wikisandbox maintenance wikiwikiweb restricted experiment maintained installing pronounced currently questions existing download websites creation trailing frequent authors michaud viewing summary pmwiki silent french system public groups except action normal modify before pages where makes built small based using what show look with help find easy know need free html feel they that have into link open like left use any are css see mee can you add new faq not of
+PmWiki.DesignNotes:1730627640: PmWiki.PmWikiPhilosophy PmWiki.MailingLists PmWiki.FlatFileAdvantages PmWiki.HierarchicalGroups PmWiki.PageLocking PmWiki.SimultaneousEdits PmWiki.PageFileFormat PmWiki.SearchImprovements PmWiki.FilePermissions PmWiki.WikiGroupMotivation PmWiki.WYSIWYG PmWiki.DesignNotes Cookbook.Worse Cookbook.PmSyntax Category.PmWikiDeveloper !PmWikiDeveloper : wikigroupmotivation flatfileadvantages hierarchicalgroups searchimprovements simultaneousedits pmwikiphilosophy pmwikideveloper filepermissions pagefileformat mailinglists designnotes instruction essentially information pagelocking separation discussion wikigroups categories plausible intuitive fckeditor protocols decisions unnoticed character something otherwise features settings category pmsyntax cookbook problems figuring directly required provides database transfer language editing wysiwyg buttons support toolbar markups between someone obvious authors newline scripts closing reasons summary without instead nested figure handle spaces manual change answer avoids common derive become engine native cause store which short about https pages worse files doesn basic blank lines links comes works these here also like down many uses that from have then omit lots see php gui why are how now can way don sql faq may net www has end of if
+PmWiki.PathVariables:1730627640: PmWiki.PathVariables PmWiki.WhySeeIfCSSExists Cookbook.SharedPages Cookbook.CleanUrls PmWiki.SkinTemplates Cookbook.PerGroupSubDirectories PmWiki.LocalCustomizations PmWiki.PerGroupCustomizations PmWiki.WikiFarms PmWiki.LayoutVariables PmWiki.LinkVariables PmWiki.EditVariables PmWiki.UploadVariables : pergroupcustomizations pergroupsubdirectories localcustomizations whyseeifcssexists uploadvariables custompagestore layoutvariables configurations pagecsslistfmt skintemplates farmpubdirurl administrator automatically manipulations pathvariables corresponding linkvariables editvariables distribution coresponding modification subdirectory mod_rewrite wikilibdirs sharedpages distinguish attachments associative associated accessible multiviews containing connecting explicitly difference skindirurl regardless determined farmconfig filesystem instructed statements typically currently urlscheme cleanurls webserver reference regarding http_host secondary temporary mailposts scripturl sometimes following including prominent described wikifarms accessing locations recognize something available browsers fullname whenever generate wikilib2 guessing defaults cookbook simplify features consists directly contains possible security advanced localdir building category protocol requires similar version between wikidir caching located confuse holding setting enables neither keeping entries provide because options bizarre uploads workdir scripts usually graphic editing backend correct another certain program example control variety bundled display exclude _server changed specify objects summary working include execute getting running dealing various refers manner within things rfloat inside pmwiki stored merely images reason always allows tested simple search having action fairly entire people places beta26 create merged string engine value field where types farmd mysql gives point cache track skins above green array pairs needs about while below makes these links lines https wikis which edits named start occur paths want that your same used uses this tmpl both note from copy base site last find good such runs more thus keys they adds disk into also look data tell does only wish turn each will them html must most php new for etc any can and one has com via how may org www dbm put own of by 1
+PmWiki.WikiWikiWeb:1730627640: PmWiki.Links PmWiki.TextFormattingRules PmWiki.WikiWord Site.AllRecentChanges PmWiki.BasicEditing Main.WikiSandbox : why_wikipedia_is_so_great documentationguidelines authoringphilosophy textformattingrules howtogetassistance documentationindex pmwikiphilosophy allrecentchanges characteristics comprehensive communitywiki configuration collaboration communication introduction categorywiki wikifeatures softsecurity whywikiworks titlesummary encyclopedia surprisingly basicediting wikiwikiweb wikisandbox capitalized communities designnotes everything mechanisms relatively wikivoyage consisting destroyed developed reference depending sitegroup rewarding necessary audiences including exemplary documents original creating existing involves brackets wikiword standard complete pmichaud entering hawaiian emphasis possible together pagelist meatball reformat browsing defaced content biggest browser restore putting process already another created patrick concept systems sitemap anarchy viewing someone meaning complex target square double inside phrase simply newwin simple almost person online result anyone things adding posted others rather joined sounds recipe happen mailto sites point about these often where using super serve after based while words built learn doesn first truth quick email pages pobox links world then like main them more this than have want seem that many come will http fast free easy your info made make open name send also term good been rich org www can try use but yes fmt two cw by
+PmWiki.Passwords:1730627640: PmWiki.PasswordsAdmin PmWiki.PmWiki PmWiki.WikiGroup Category.Spam !Spam PmWiki.Security PmWiki.AvailableActions PmWiki.SpecialPages PmWiki.GroupAttributes PmWiki.Uploads SiteAdmin.AuthList PmWiki.SecurityVariables PmWiki.AuthUser Cookbook.SessionSecurityAdvice PmWiki.ConditionalMarkup PITS.01417 PmWiki.IncludeOtherPages Cookbook.Cookbook : settingsitewidepasswords sessionsecurityadvice securityvariables includeotherpages conditionalmarkup password_strength defaultpasswords availableactions groupattributes writerpassword administrators considerations authentication passwordsadmin administration automatically unfortunately edit_password authorization recentchanges session_name specialpages _site_upload include_once capabilities interactions installation alphanumeric fmtpagename recommended information permissions wikisandbox controlling independent cs559sessid restricting convenience flexibility development combination description apostrophes _site_read _site_edit individual circumvent protecting mechanisms characters exhaustive identifier additional considered condmarkup protection _site_attr everything encrypted cleartext webserver following beginning reverting everybody situation decrypted groupname obviously overrides difficult described siteadmin wikipedia unchanged separated requiring protected otherwise unprotect sometimes injection fragments including rendering currently different related¹ generally xyzsessid wikigroup siteattr choosing cookbook authlist audience versions priority indicate encrypts possible suitable pageattr category multiple entering wikitext slightly authuser strategy visiting normally solution required probably internal function editable username reading scripts allowed methods browser another entered pmcrypt options editing uploads running janedoe machine prepare happens created viewing consist recipes however preview example systems history writing secrets display because calling without usually suppose opening cookies instead applied website applies details exactly enabled authors chapter nothing whereas readily private summary overall leaving various address replace support entire pmwiki simply access rights groups except double quotes spaces colons secure longer better config allows easily either should shared checks opened called nopass things within during common choose relies source ignore switch before occurs traces remove reason assign obtain edited really modify future stores oldest latest domain gives farmd older lines which error these local cases login avoid track their wrong hosts named great there above using alter holes apply https users built sites could files leave field blank doesn parts those since pmhlt ifend 01417 tells order value level would being first might about types issue pools small areas when that grow have what only same this them from want each they know your more like link hide pits spam stop pick near easy will keep ways most uses just many rely need show good idea used also else into than sets such make sure come both lock been back must even says beta deal wins who can see fix has one php new may isn why raw put two get foo bar … url don www try 500 net faq few of by 99 my 2 3
+PmWiki.WikiStructure:1730627640: PmWiki.WikiPage PmWiki.WikiWord PmWiki.Links PmWiki.WikiGroup PmWiki.WikiTrails PmWiki.Categories PmWiki.PageTextVariables PmWiki.PageLists Site.PageListTemplates PmWiki.IncludeOtherPages PmWiki.Search : pagelisttemplates includeotherpages pagetextvariables wikistructure automatically configuration customizable organization presentation combination fundamental requirement flexibility mywikiword collection designated organizing othergroup categories individual navigation attributes presenting navigating containing wikitrails structural capability selection important principle wikigroup pagelists providing effective shorthand controls multiple powerful wikipage searched requires instance security clicking relevant provides flexible optimize category previous another primary without becomes default current website visitor between content grouped defined sharing network summary aspects authors options returns support having within common images groups highly enough pmwiki markup across member inside either points choose choice place links refer pmhlt based range being means parts these store names right their words where clear guide every like that will data when from tags also then more need uses into used most same look both have aids only give stop next move can for are one lot see its own say any you of by
+PmWiki.TableOfContents:1730627640: Cookbook.AutoTOC PmWiki.LayoutVariables PmWiki.PathVariables : internationalization numberedheadings layoutvariables enablebacklinks tableofcontents pathvariables automatically specification parentelement configuration localstorage identifiers structural directives previously remembered translated subsection following different pubdirurl revisited minnumber remaining wikistyle otherwise structure numbering preceding uppercase generated lowercase scrollbar disabled browsers cookbook wikitext selector features overflow inserted suppress included numerals sections meantime anywhere defining selected creating visitors afficher settings pmtocdiv enabling sommaire elements somewhat maxlevel position audience override example autotoc comment exceeds display biggest usually letters default minimum control 9999999 ignored numeric pageurl linking masquer markups summary without strings authors maximum sidebar anchors simpler numbers cleared enabled recipe height latter create xlpage modify prefer appear styles pmwiki margin before french levels rather placed values arrows hidden inline define choice second blocks header based pmhlt exist there after 500px query first 600px right float still pages short roman third title class usage their close notoc later above basic only will this html more than less like want even i18n hide show have used also uarr long need then none open last your 15px hash both size wish font file blue when such 13px wins from left they form php can and own see 119 css but may add ccs top new few nh by ii h6 h3 h1 do 2
+PmWiki.CreatingNewPages:1730627640: PmWiki.Links PmWiki.MyNewPage Site.SideBar PmWiki.WikiGroup Cookbook.NewPageBoxPlus Cookbook.EditTemplates Cookbook.EditTemplatesMenu : edittemplatesmenu creatingnewpages capitalization newpageboxplus characters especially wikigroup different beginning dutifully mynewpage directive unlinked cookbook audience question organize existing whatever normally drawback describe clicking remember everyone contents location override wikiword brackets surround because written summary finally another browser address related replace however sidebar default entered unloved between current authors stored create others useful better pmwiki double second adding person simply exists easily spaces orphan unread typing groups recipe choose method cannot title would write where could links there pmhlt learn order first basic names after doesn using which marks knows save into that only more also best site your will step this when like want used with must from some have wish well then tell take form been them hasn type faq but and url are lot way why yet who end hit see by of go
+PmWiki.PmWiki:1730627640: PmWiki.WikiWikiWeb Main.WikiSandbox PmWiki.BasicEditing PmWiki.Skins PmWiki.PmWikiPhilosophy Cookbook.Cookbook PmWiki.Installation : pmwikiphilosophy administrators customization collaborative applications architecture installation basicediting distributed wikisandbox attachments wikiwikiweb appropriate maintenance conjunction completely protection individual restricted extensions maintained registered management appearance different available customize trademark functions templates principle contained databases oversight essential copyleft features cookbook htaccess controls password existing hundreds creation websites designed pmichaud actively applied authors general servers quickly content include january license written already recipes variety running version patrick entire groups upload create modify system plugin simple public newwin called markup engine easily change normal except action pages using skins https rules under mysql small based since yotov petko makes this that core easy link open look made from know need like 2009 only home into have they html feel such with ldap find work your self also who www can add gpl for cms one org own gnu use any are css key php not net of be by do
+SiteAdmin.Status:1730627640:  : versionnum siteadmin summary running comment status pmwiki edits local lost this page may any be to
+PmWiki.UTF-8:1730627640: PmWiki.Internationalizations PmWiki.Upgrades PmWiki.I18nVariables Skins.Amber PmWiki.UploadVariables Cookbook.ISO8859MakePageNamePatterns PmWiki.LocalCustomizations Cookbook.UTF-8 : iso8859makepagenamepatterns internationalizations localcustomizations defaultpagecharset uploadvariables uploadnamechars modifications configuration automatically i18nvariables htmlstylesfmt independently include_once اليسار اليمين installation differently explanation possibility recommended attachments attributes dictionary characters management especially vocabulary understand يتدفق élysées languages correctly including operating directive alphabets inclusion wikipedia pageindex migration pagelists encodings direction markupend hungarian generally français supported currently beginning something function cookbook metadata searches restrict francais european versions concerns enabling instance htaccess settings possible accented distinct upgrades portable flexible existing converts supports النص problems contains browsers displays letters rebuild persian shouldn scripts instead uploads elysees enabled servers encoded classes already systems summary between engines complex certain results missing without written example flowing specify decoded turkish actions created unicode reasons arabic pmwiki allows breaks within titles hebrew هذا إلى better others easier handle change likely xlpage champs mostly before prefer people rename actual delete latest modern useful recent sample future editor review widely fairly simple served double highly adding moment cannot older links farsi notes words start pmhlt entry names pages lines these wikis offer right group while wrong could check there array flows files terms match which below ascii a7ais czech plain 89lys today latin order skins amber doesn using asian later first their cache major works depth after this your when left from more copy they need will case tips urdu only them text urls used body have swap side full good save also من root show sure near that a9es come thus easy disk ansi many less byte well docs uses risk bar utf box are bom may php one org seo way yet don ltr rtl got fix new non has etc c3 2
+PmWiki.WikiFarmTerminology:1730627640: PmWiki.Glossary Category.WikiFarms : wikifarmterminology suggested_terms customizations infrastructure administrators documentation listofbundles consideration installation agricultural intermediate particularly individually subdirectory definitions directories configured collection farmconfig deprecated components describing categories difficulty standalone something wikifarms desirable locations therefore computing operation available necessary analogous affecting preferred typically sometimes revisions different ambiguous confusing modifying alternate installed multiple category glossary tempting contents original software contains cookbook packaged complete specific possible servable indicate accessed probably standard audience attempts describe archive servers forever pending explain related process instead located provide authors because special scripts various writing readers opposed however wikilib outside origins becomes complex tractor nothing similar pmwiki single shared setups engine shares recipe itself called simply farmer refers stored things phrase common should others needed except wikis based where their start which local users lives field still place added ideas exist means cases these makes avoid about began needs often holds same used ones this that home file only docs less tree with move more will wide have what from came into goes find most such page been work mind uses keep barn they site than many made ways coin crop copy like php who you see has but why can may url own pub web new run by
+PmWiki.WikiGroups:1730627640:  : wikigroups redirects summary pmwiki to
+PmWiki.AvailableActions:1730627640: PmWiki.Security PmWiki.Passwords PmWiki.ChangeLog PmWiki.SitePageActions PmWiki.SecurityVariables PmWiki.PageHistory PmWiki.UploadVariables PmWiki.BasicEditing Site.AuthForm PmWiki.LayoutVariables PmWiki.RefCount PmWiki.Search Cookbook.EditTemplates PmWiki.WebFeeds PmWiki.Uploads PmWiki.SitePreferences PmWiki.DebugVariables PmWiki.CustomMarkup Cookbook.MarkupRulesetDebugging PmWiki.SiteAnalyzer PmWiki.AnalyzeResults PmWiki.UrlApprovals PmWiki.CustomActions Cookbook.UserAuth2 Cookbook.Attachman Cookbook.BackupPages Cookbook.SearchCloud Cookbook.CodeMirror Cookbook.CommentBox Cookbook.Comments Cookbook.CommentDb Cookbook.ROEPatterns Cookbook.ConvertTable Cookbook.MovePage Cookbook.CSVAction Cookbook.Attachtable Cookbook.DeletePage Cookbook.DiscussionTab Cookbook.DownloadManager Cookbook.ExpireDiff Cookbook.HideDiff Cookbook.ImportText Cookbook.MultiLanguageViews Cookbook.RenamePage Cookbook.ListCategories Cookbook.CommentBoxPlus Cookbook.GeneratePDF Cookbook.PmWiki2PDF Cookbook.UploadForm Cookbook.PPDonate Cookbook.PublishPDF Cookbook.ASCIIMath Cookbook.ThumbList Cookbook.Mini Cookbook.RecipeCheck Cookbook.PageRegenerate Cookbook.Reindex Cookbook.ReindexCategories Test.PageIndex Cookbook.SharedPages PmWiki.WikiFarms Cookbook.Sitemapper Cookbook.TotalCounter Cookbook.Trash Cookbook.WebAdmin Cookbook.ZAP Cookbook.ChoiceColorChanger Skins.Choice : enablepostattrclearsession uniform_resource_locator markuprulesetdebugging enabledirectdownload cookbookqueryskins choicecolorchanger multilanguageviews reindexcategories custompreferences defaultactionsend securityvariables availableactions sitemapaddgroups uploadvariables sitepreferences layoutvariables downloadmanager sitepageactions downloaddeleted commentboxplus pageregenerate listcategories analyzeresults customizations debugvariables edittemplates begenablediag discussiontab authorization endenablediag scriptactions customactions sitemapupdate configuration enableactions automatically administrator converttable custommarkup querystrings totalcounter urlapprovals deldelattach query_string distribution setskintheme basicediting siteanalyzer approvesites incompatible dependencies cookbookend recipecheck attachtable postupload2 potentially colorscheme sharedpages roepatterns information generatepdf undelattach searchcloud backuppages pagehistory syndication replacement environment createthumb purgethumbs expirediff generating actionskin analyseend renamepage importtext production codemirror attachment skinchange parameters redirected mechanisms uploadform sitemapper publishpdf pmwiki2pdf deletepage searchterm documented validating initialize userauth2 passwords specified wikipedia backtrace pageindex commentdb attachman searchbox wikifarms thumblist changelog following exception csvaction asciimath processed backlinks thumbnail functions somegroup displays ppdonate pwchange purgeqns filename webfeeds setprefs provided contents movepage internal actually hidediff appended fileinfo webadmin disabled comments clearsky performs refcount pagename username setcolor changing skinname orphaned existing authform retrieve summary applied cleared missing include derived present setlang phpinfo setting visitor pageurl scripts uploads queries recipes through current version oldpage returns desired options columns newpage markups creates untrash unshare remove logout prompt v22022 hashed browse beta22 upname called should imgtpl global dialog number output caller cookie allows other after doesn using about print crypt apply along being based exits usage local which named https bring gives login test rmpi this line from sort will more part make your show than also what when core want atom only open must with used they that have dump note vars then made copy zap and can rss rdf one any hlt www org won key of by dc cm 1 4 3
+PmWiki.WikiAdministrator:1730627640: PmWiki.Installation PmWiki.InitialSetupTasks PmWiki.DocumentationIndex PmWiki.Security PmWiki.Audiences : documentationindex wikiadministrator initialsetuptasks administration administering installation administers configures audiences knowledge customize admintask security specific visitors software possible installs designed flexible persons someone details authors enough pmwiki little target server system people about needs pages their html make more site been just with that easy time same have even and who for lot php not see bit can has web
+PmWiki.GroupCustomizations:1730627640: PmWiki.WikiGroup PmWiki.WikiAdministrator PmWiki.LocalCustomizations PmWiki.GroupHeaders PmWiki.Passwords PmWiki.PasswordsAdmin PmWiki.SecurityVariables PmWiki.WikiCascades Cookbook.LocalCSS PmWiki.LayoutVariables PmWiki.BasicVariables PmWiki.GroupAttributes PmWiki.WikiFarms PmWiki.HierarchicalGroups : groupcustomizations localcustomizations hierarchicalgroups securityvariables wikiadministrator defaultpasswords processingorder resolvepagename layoutvariables groupattributes wikipagecssfmt configurations recipevariable considerations passwordsadmin administrators authentication basicvariables automatically subdirectory include_once installation recipescript enablepgcust groupheaders wikicascades intermediate information conditional pagelogourl wikisandbox containing particular background preventing customized capability techniques groupname istration difficult processed processes exception important wikigroup performed displayed wikifarms beginning configphp inclusion including statement contents localcss fullname somepage myimages directly multiple cookbook specific approach included function required followed homepage commands audience features question purposes strange setting example another becomes summary someone tedious perpage reading instead shouldn scripts pagevar enabled effects current defined looking applied because certain disable design actual levels single giving allows nested before pmwiki called valuea styles loaded create subset f4c4b4 valueb method cannot placed global reason markup corner advice change simply almost needs looks being could first using above files after upper wants later given there pages apply would chess rules named where basis pmhlt loads which never farmd sites these times with that this your wasn main many only same true what undo also very have each host view from body into last easy used left will more note hold are how faq see why pub gif add end isn etc put way its own may of by 0
+PmWiki.TableDirectives:1730627640: PmWiki.Tables PmWiki.TableDirectives PmWiki.LayoutVariables PmWiki.Audiences PmWiki.PmWikiPhilosophy PmWiki.LocalCustomizations PmWiki.IncludeOtherPages Cookbook.AdvancedTableDirectives Cookbook.BackgroundImages PmWiki.WikiStyles PmWiki.TableDirectives-Talk Cookbook.CreateColumns : enabletableautovaligntop advancedtabledirectives localcustomizations includeotherpages backgroundimages pmwikiphilosophy layoutvariables wikistyleapply demonstration automatically createcolumns administrator collaborative professionals requirements intermediate cellspacing cellpadding incorrectly unrealistic bordercolor captiontext indicating wikistyles attributes navigation understand processing impossible structural simplified difficult authoring markupend frontpage generated arbitrary exception audiences generates paragraph primarily arguments insertion sometimes recognize beginning tableend navigate previous disabled positive visually examples directly purposes allowing learning simplest response seasoned browsers original creating standard remember explains packages bulleted breaking contents provided property included cookbook properly elements counting captions ordinary floating contains interior because percent specify already integer rowspan similar created certain someone bgcolor without authors markups looking colspan talking hardest concept version default creates simpler headers however instead answers display honored further average comment writing summary regular between tables having handle cellnr little notice needed cccc99 headnr center recipe effect placed easily number nested allows msword expect always result values define second inside closes modify posted likely surely common course within middle bottom wanted people footer rules right naive above which space links might green build where width opens wrong bring pmhlt using would about those among write class doesn empty these works group since could going drawn items exist there valid tried makes sense first below notes newer title help html code that most case were each didn name this have line nbsp they just plus must site said used same nice find what left tags will such from only uses take than even then your been also else edit ugly tool many next very easy thus file own for can its put are hex faq yes see has lot six won ask fix why don css off say get web set two non etc 11 td d1 a2 b2 c2 a1 c1 b1 30 by 5
+PmWiki.PageFileFormat:1730627640: PmWiki.Passwords SiteAdmin.Status Cookbook.ImportText Cookbook.AdminByShell Cookbook.PageTopStore Category.PmWikiDeveloper !PmWikiDeveloper : pmwikideveloper pagefileformat chronological pagetopstore passwdupload distribution adminbyshell description sdecription assumptions information conversions potentially wikisandbox alternative differences passwdedit urlencoded attributes processing passwdread passwdattr 1142030000 deprecated importtext categories collection groupname1 groupname2 character encrypted pagestore converted documents siteadmin necessary updatedto passwords formatted uppercase somewhere pagename1 following operation pagename2 parameter delimited processes security newlines creation upgrades encoding filename required possible pagelist addition cookbook creating revision normally sequence ordering extracts wikifile sysadmin contents previous category wikipage searches history command charset browser ordered comment aliased targets current summary example outside keeping between reverse another utility reading present address seconds appears advance display program percent edited saving stores latest markup author render create change client writes header recent inside number matter actual status values simple recipe editor delete begins 0athis tested macosx decode output assist letter mangle viewed future entire prints memory which doesn items title pmhlt since saved links needs about times makes point signs pmcat would sedin could wtext paste track input ctime endif exist below local files using tells tools these agent space third added copy unix able each open with that from more then will skin csum only keys puts stop used sets most last kept when uses flag bash tcsh sure grep host have 1970 like ways been also many null meta bulk html exit main echo help fill work long your lot may see raw isn 999 can one are cut bin eof utc jan was has via php two ftp fn 25 3c f2 gp
+PmWiki.WikiPage:1730627640: PmWiki.WikiStructure PmWiki.WikiWikiWeb PmWiki.PageFileFormat : pagefileformat wikistructure edittemplates information wikiwikiweb advantages individual predefine cookbook wikipage building contains summary content initial pmwiki stored simply images pages files block basic flat text have that more see and can are the of
+PmWiki.CustomInterMap:1730627640: PmWiki.InterMap : customintermap redirects summary pmwiki
+PmWiki.Skins:1730627640: Skins.Skins PmWiki.Skins Cookbook.Cookbook Skins.SkinChange PmWiki.BasicVariables Skins.SkinGuidelines PmWiki.SkinTemplates Cookbook.Standalone Cookbook.InstallOnIIS PmWiki.GroupCustomizations Site.EditQuickReference : groupcustomizations editquickreference beeblebroxnetgila linkpageexistsfmt skinguidelines basicvariables administrators documentation skintemplates substitutions possibilities yourprintskin highlighting installation distribution installoniis include_once titlesummary capabilities intimidating application directories suggestions contributed information extensible directives intimately overwrites especially difference actionskin subfolders skinchange appearance background particular compatible statements webservers responsive standalone decorating substitute collection stylesheet programmer configured advantage following selection available installed describes different wikititle hypertext archiving customize displayed wikigroup graphical platforms whichever recommend tutorials prevented extremely determine cascading typically including regularly cookbook pagelist provided features visitors packages designed contains skeleton software wikilink wreaking skinname explains mistakes fullname language browsers linktext download changing machines contrast starting monobook programs palettes probably existing creating optional versions examples directly standard provides included contents transfer whatever relevant specific elements audience computer together default instead usually setting helpful control preview another writing complex needing because without already results further scripts overall sidebar caution editing updated linkurl mygroup seealso windows linkalt running current changed editors bgcolor minimum variety specify novices markers through testing ideally written wysiwyg changes section recipes firefox forget reload either mobile pmwiki things better detail inside coding common should unpack markup modify create useful others entire matter adding safari beyond places jhskin chosen saving simple picker reason client footer resize insert header sheets choose repeat during number owners layout bottom syntax source images spacer values sample cannot readme chrome stored corner skins tools blink local there stuff extra pages those xhtml steps names using files above wrong macos point links linux since these might quite often avoid below check where adapt until their embed years users gila2 amber happy could mysql hints order three while match named after scope upper havoc newer types class block farmd prefs learn being frame kinds nifty first about right setup runs then find suit many look want hand into such that them edge good most have bugs will live skip when spot code gifs does tags font tmpl than more much less free this site know like data real docs copy been give left main open move make well href tell they same show some feel each just were used ways goes must demo ride ones says from best work hlt css pub ftp php try has won may faq don had zip tgz did its txt lot two bit by 3 4
+PmWiki.PageVariables:1730627640: PmWiki.PageVariables PmWiki.Variables Cookbook.Functions PmWiki.FmtPageName PmWiki.BasicVariables PmWiki.MarkupExpressions Site.PageNotFound PmWiki.IncludeOtherPages PmWiki.PageLists PmWiki.PageTextVariables PmWiki.PageListTemplates PmWiki.OtherVariables PmWiki.ConditionalMarkup Cookbook.HttpVariables Cookbook.MoreCustomPageVariables PmWiki.MarkupMasterIndex Category.PmWikiDeveloper !PmWikiDeveloper : grouphomepagetitlespaced morecustompagevariables enablerelativepagevars specialreferencesend lastmodifiedsummary conditionalmarkup markupmasterindex pagetextvariables pagelisttemplates includeotherpages grouphomepagename markupexpressions pagecreationdate basenamepatterns pagevariablename lastmodifiedtime lastmodifiedhost authentications pmwikideveloper basicvariables lastmodifiedby administrators administrative othervariables siteadmingroup httpvariables configuration customization requestedpage automatically documentation authenticated defaultgroup pagenotfound respectively intermediate definitions description pagepathfmt str_replace defaultname fmtpagename permissions information necessarily interacting groupspaced protections currentskin destination passwdread versionnum passwdattr referenced addslashes passwdedit regardless critically determined categories inexistent originates associated developers namespaced formatting preg_match sensitive stripping currently following urlscheme http_host preferred necessary timestamp injection scripturl sitegroup markupend wikititle pagelists interface functions protected prefixing available describes invariant undefined blocklist included provided addition preceded asterisk authpage starting redefine normally authuser password possibly security fullname internal prefixed reflects custompv _request suffixes cookbook insecure sanitize elements prefixes explicit instance displays complete argument specific audience category markups globals derived timefmt sidebar contain example context authors retains baseurl confuse through instead created sourced strings process comment specify because returns another _server website visitor natural snippet pageurl without browsed certain varname defines related however setting renders foreach rewrite appear number anchor header output footer person target authid nested within edited module single quotes action inside double please values always recipe allows better either adding usable editor differ unlike quoted fmtpv local pmhlt first frame array means above which shown could ctime mdash print while empty there ifend horiz class shows using input added these those comes about equal ftime style lower forms from them this make some most file will ones unix also used when that test psft note only same yyyy code they have eval take very made even main part case body into php was are see you can and any but faq via may new its has of
+PmWiki.TextFormattingRules:1730627640: Main.WikiSandbox Cookbook.MarkupTricks PmWiki.ListStyles Cookbook.WikiStylesPlus PmWiki.PageTextVariables PmWiki.PageLists PmWiki.BasicVariables PmWiki.WikiStyles PmWiki.WikiWord PmWiki.Links Cookbook.NumberedHeaders PmWiki.EditVariables PmWiki.Tables PmWiki.TableDirectives PmWiki.MarkupMasterIndex : textformattingrules indentedparagraphs pagetextvariables specialcharacters markupmasterindex tabledirectives enablerosescape definitionlists interpretations numberedheaders whitespacerules horizontalline neutralisation wikistylesplus basicvariables administrators escapesequence changesummary bulletedlists automatically strikethrough installations editvariables markuptricks preformatted definitional parentheses apostrophes indentation complicated interpreted enablewspre backslashes proposition information capitalized exclamation currenttime wikisandbox significant considered references liststyles experiment linebreaks boundaries subsequent especially underscore structures neutralise terminated authorlink attributes generating dispatched explicitly unindented markupend including conceived recognize continent addresses otherwise beginning monospace sequences numbering optimized dedicated preceding indention available asterisks following increases displayed arbitrary multiline indicated strikeout mechanism specifies pagelists inclusion enclosing currently wikiwords previous modified multiple starting inverted provides comments spanning trailing pmichaud emphasis behavior patterns advanced brackets aligning together headings cookbook centered possible complete anything continue elements floating combined optional enclose applied triples treated usually leading doubles tripled several filling newline liberty between smaller restart example authors doubled created italics subitem include cooking prepare feature without honored numbers placing aligned another columns whether toaster produce markups defined version hanging indents already hyphens styling precede enables fathers process details neither becomes targets anchors phrases needing escaped replace strings message enabled control options spaces placed tables margin pmwiki easier engine single deeper forced blocks should quotes colons begins aligns search within useful normal formed cannot hidden strong values joined gopher larger across middle config insert delete around border except dashes ending mailto remote images beta41 second causes nation adding please arrows simply unwrap narrow 100pct needed lining level least title pmhlt using lines first stops allow signs where front links pipes pages makes clear right three width times equal _sub_ super seven years marks which shows below dealt field above xhtml folds wraps line2 cells line1 input stand terms blank apply there empty color items main used that case code upon easy note some this more also find urls they http news them left four have tick next like will turn just goes does blue font both made 30em well skin save bits very kind bold same into then been five only your when each two off one see pop way ago ftp www max jpg gif png php big web by 50
+PmWiki.CustomMarkup:1730627640: PmWiki.PageTextVariables PmWiki.Links PmWiki.CustomMarkup PmWiki.DebugVariables Cookbook.Cookbook PmWiki.LocalCustomizations Cookbook.ParseArgs PmWiki.ReleaseNotes PmWiki.Functions PmWiki.BasicVariables PmWiki.CustomMarkup-Talk PmWiki.MailingLists Cookbook.JavaScript Cookbook.JavaScript-Editable PmWiki.Skins PmWiki.LayoutVariables PmWiki.CustomMarkupAlt Category.Markup !Markup : localcustomizations sethidediscussion pagetextvariables myrandomfunction replace_function custommarkupalt twosinglequotes markupframebase layoutvariables basicvariables administrators debugvariables parenthesised configuration disablemarkup htmlheaderfmt understanding compatibility installations nodiscussion markuptohtml introduction translations callbackmaxi incompatible releasenotes conditionals preg_replace intermediate relationship accomplished mailinglists parentheses replacement expressions mydirective development occurrences substitutes recommended placeholder substituted significant undesirable onetimerule pageactions complicated javascript deprecated evaluation directives specifying emphasized statements myfunction randomargs parameters historical inoperable extensible surrounded definition processing additional paragraphs succession simplified enablediag acceptable internally conversion monospaced characters providers basically anonymous migration embedding questions parseargs specified wikiwords functions processed performed something following dependent describes arguments modifiers capturing including reference evaluated beginners alternate beginning converted arbitrary available malicious stdmarkup sequences intended mnemonic fulltext executed inserted replaced cookbook newlines preserve wikitext examples specific markup_e markupid continue problems possible pagename generate emphasis upgraded contains displays followed although handling versions previous normally ordering optional entirely audience replaces searched editable linkmaxi posteval creating purposes myfooter provides returned relative category directly template modified actually security searches regular include defined getting looking regexes anchors applied comment whereas removed between setting pattern matched happens current wrappen testing globals appears recipes instead returns strings capture suppose started writing prevent produce further markups earlier adsense webring summary allowed detects section another element ignored treated content options ongoing details parsing closing extract overall handled authors bracket simpler require creates matches divides general quoting depends because suffice headers running ruleset program whether without several scripts hosting footers careful editing various default restart pmwiki wanted vspace before always called strong google output second should inline unless module common inside manner phases manual latest longer format answer double simply latter recent static delete having deeper fourth result either unlike select target _blank unique causes engine number reason passed during making forced itself chosen needed easier syntax _begin marked while below php55 using pages multi means might block given pairs which https first there avoid above fixed fmtpv along pmhlt would later value class print level stuff risks again being wants array links third slash angle after short newer since needs right split cases found style steps those still about false mykey built calls terms names could point empty usual added early looks skins break also then your this work from will used have file keep that help just talk pcre okay same into they thus seem when drop perl adds such 2013 done says each read _end left away sure make core many fact must once runs href does code part true more very well what find been than how pss www dot prr faq may 4th was but ask try sdv via own etc now abc 100 row few url why 3rd of by 25 12 58 50 7
+Site.PageNotFound:1730627640: Site.PageNotFound : nolinkwikiwords administrators requestedpage pagenotfound sitegroup displayed contains nofollow fullname category message summary italic unable pmwiki create locate action change ifend doesn exist style green auth edit find when text font this the can rel be
+Site.PageActions:1730627640: Site.PageActions : availableactions sitepageactions ak_backlinks pageindist ak_history documented accesskey ak_logout ak_attach siteadmin nofollow fullname contains profiles cookbook contents ak_print somewhat summary enabled comment ak_view ak_edit complex browse upload authpw delete pmwiki search placed figure group class ifend first this item diff need like help time the rel etc its see can you top and are be q
+PmWiki.Variables:1730627640: PmWiki.LocalCustomizations PmWiki.BasicVariables PmWiki.DebugVariables PmWiki.EditVariables PmWiki.I18nVariables PmWiki.LayoutVariables PmWiki.LinkVariables PmWiki.OtherVariables PmWiki.PagelistVariables PmWiki.PageLists PmWiki.PathVariables PmWiki.SecurityVariables PmWiki.UploadVariables PmWiki.Blocklist PmWiki.Notify PmWiki.PageVariables PmWiki.PageTextVariables PmWiki.Functions PmWiki.MarkupExpressions Category.PmWikiDeveloper !PmWikiDeveloper : localcustomizations securityvariables pagetextvariables markupexpressions pagelistvariables layoutvariables uploadvariables wikiwordpattern pmwikideveloper administrators debugvariables basicvariables othervariables editvariables linkvariables i18nvariables documentation pagevariables pagelayoutfmt pathvariables substitutions customisation placeholders varpagesfmt discrepancy generation incomplete controlled categories oliverbetz documented containing pagelists functions following blocklist elsewhere correctly wikiwords automatic uppercase processed therefore available documents indexend varindex preceded circular pagename followed contrast starting replaced category audience summary printed scripts comment removed strings handled version between working general provide pageurl several divided smaller slight trails vardoc people notify author rframe ending output values their below shown using could given finds colon lines being pmhlt works clear still prior right names only much with this skin used have into font size also does item what know want sign thus feel free done such when note are php imo why add but non see by of xl
+PmWiki.PmWikiPhilosophy:1730627640: PmWiki.PatrickMichaud PmWiki.Audiences PmWiki.WikiWikiWeb PmWiki.CustomMarkup : collaborativemaintenance avoidfeaturecreep pmwikiphilosophy collaboratively customizations patrickmichaud implementation modifications applications contribution installation favorwriters custommarkup distribution disagreement wikiwikiweb implemented information hyperlinked anonymously furthermore development specialized individual identifies temptation relatively principles gratuitous compressed contribute advisories everything completely displaying additional including audiences effective describes documents arbitrary something obstacles featurism structure authoring reasoning uploading upgrading utilities protected configure operation response contents features anything creeping maintain settings original material security requires avoiding existing specific elements browsers although presence authored password sections provides creation steroids required designed readers reasons upgrade writing attempt biggest replace follows engines complex support obvious version footers quickly clearer windows example headers someone because without finally general running created usually copying another nothtml summary linking written express authors welcome issues groups easier listed around server should speedy formed places source active sheets change pretty couple easily having allows better inside public update became losing people enough poorly admins system useful rather limits behind simple making intent stores matter latest resist might local pages large needs makes ideas based looks below given until could built being added doing doesn using chmod drive funky files there mysql guide claim ended their types heart embed touch above these style this over your that easy have time once just what hard sort many ways used gzip size 400k also site data much wasn will flat soon ugly from good 2000 then edit cert aims http deal risk when lots even stop done than and off try two few php can new dos how see www get org 02 5 3 1
+PmWiki.WikiWords:1730627640:  : wikiwords redirects summary pmwiki to
+PmWiki.WikiStyleExamples:1730627640: PmWiki.WikiStyles Cookbook.WikiStylesPlus PmWiki.WikiStyleColors Cookbook.OutlineLists : wikistyleexamples wikistylecolors wikistylesplus likegrapefruit automatically preformatted outlinelists disheartened stylesheets interpreted decoration background predefines recognized predefined linebreaks properties introduced particular attributes interested specifying capability rediguana lovelyred including shortcuts markupend available basically primarily paragraph something preserved specified indention alternate cookbook centered possible combined property extended includes indented outlines addition borrowed assuming padding bgcolor colored through ordered comment styling develop authors aligned another similar appears follows instead applied summary created mystyle further control dotted permit strike middle fourth remark pmwiki though inline ffffcc access border yellow f0f9ff second silver purple entire number blocks simply within custom before normal colour medium having syntax lfloat almost bullet class means using goofy alpha their right roman horiz black there place third level light first signs green happy fifth upset hello apply would occur width 50pct later world cause solid still after links space white frame this text that sort pair item does uris left also work such note even want teal uses host deny gray wide html from fact more blue will grey same what just pink kind meet css has and was etc how are get way see any 5px can non acl now 1px may top 3px dfd ccc you own new fdf far one by ip 10 2 q
+PmWiki.GroupHeaders:1730627640: PmWiki.WikiGroup PmWiki.WikiStyles PmWiki.PageDirectives PmWiki.WikiAdministrator PmWiki.IncludeOtherPages PmWiki.LayoutVariables Cookbook.AllGroupHeader Cookbook.WikiFooter : groupprintfooterfmt groupprintheaderfmt includeotherpages wikiadministrator layoutvariables groupheaderfmt allgroupheader groupfooterfmt pagedirectives nogroupfooter nogroupheader groupheaders intermediate groupfooters wikifooter coordinate controlled additional siteheader sitefooter suppressed wikistyles disclaimer duplicated individual wikigroup beginning sitegroup yourgroup replacing homepage nofooter cookbook audience defining noheader basepage fullname included instead markups default generic message summary example without authors heading feature contain called groups having appear action simply create change config global pmwiki recipe quotes single should within useful adding custom easily pmhlt using order allow lines above could usage title every each wide must that used same note here text have this also such want when then just code fill set see any may can and for new say end php one how faq are way by nl do
+PmWiki.Contributors:1730627640: PmWiki.PmWiki PmWiki.Uploads PmWiki.Links PmWiki.WikiGroup Cookbook.EmacsPmWikiMode PmWiki.Petko PmWiki.ChangeLog PITS.PITS PmWiki.MailingLists : internationalization editquickreference emacspmwikimode rssfeeddisplay contributions modifications documentation mailinglists ianmacgregor ridderström contributors contributed redirection development improvement attachments suggestions evaluation wikitrails wikistyles blocklist2 commentbox associated debugging dominique condition internals durchholz continued ittermann printable donations developer webmaster apologies changelog forgotten wikigroup christian personal research cookbook kowalski tishmack floating isabelle tracking mypmwiki monetary gorichon michaud general michael testing hacking crisses blalock strozzi heinold jessica recipes uploads summary joachim powered profile january journal checker website reports topped charts system seller having weiner worked simple markup sanity people rankin notify remove around voting janice claude images anyone scott petko other these glenn issue while after early yotov james faure found davis skins green carlo since hacks links have free pits with core some pmwe been your name feel page left want 2004 2009 dawn duff http todo jean pest best that many john html ross here xes are www aka all php and boa out rev can add by ye
+Site.UploadQuickReference:1730627640: Site.RecentUploads PmWiki.Uploads Site.UploadQuickReference : uploadquickreference quickreferenceend recentuploads attachlist attachment different extension uploading wikigroup uploaded filename computer nofollow fullname existing correct bgcolor smaller summary padding source simply cccccc browse action within prefer border yellow family exists button newwin pmwiki rfloat scroll 000000 f9f9f9 after arial solid class files press serif pages enter field local above ifend view 12px this down size your edit text font item sans have sure site same disk that make find been once use the for rel can its 1px has
+PmWiki.Upgrades:1730627640: PmWiki.PmWiki PmWiki.UpgradingFromPmWiki1 PmWiki.Upgrades PmWiki.ReleaseNotes PmWiki.BackupAndRestore PmWiki.Download PmWiki.SiteAnalyzer PmWiki.LocalCustomizations PmWiki.Troubleshooting Site.Site SiteAdmin.SiteAdmin PmWiki.BasicVariables PmWiki.WikiWords PmWiki.EditVariables PmWiki.Links PmWiki.PageLists PmWiki.SkinTemplates PmWiki.AuthUser PmWiki.ChangeLog PmWiki.PageVariables Site.PageActions Site.EditForm Site.PageNotFound PmWiki.LayoutVariables Cookbook.PageListMultiTargets PmWiki.Functions PmWiki.Version : enablerelativepagevars enablenotsavedwarning pagelistmultitargets upgradingfrompmwiki1 localcustomizations specialreferences backupandrestore allrecentchanges recentchangesfmt troubleshooting layoutvariables enablewikiwords grouppagecount administrators groupheaderfmt basicvariables authentication groupfooterfmt customisations siteadmingroup changesummary automatically linkwikiwords international functionality editvariables skintemplates configuration pagevariables declarations environments installation releasenotes include_once difficulties instructions pagenotfound approvedurls siteanalyzer yourskinname modification established pageactions fmtpagename replacement interactive recommended comfortable rospatterns backslashes wikilibdirs preparation currenttime significant overwriting authorlink customized previously groupcount performing parameters additional htmlheader commentout simplified htmlfooter javascript especially directives containing characters downloaded explicitly notifylist deprecated functions directory different pmwikiorg pagelists correctly determine displayed affecting converted changelog available preserved protected rewritten shorthand important pagestore impacting blocklist authorize sitegroup questions carefully additions installed currently included sidebars software asterisk versions physical fullname designed editform outlined upgrades absolute disabled password continue location authlist authuser separate formerly features existing required wildcard argument homepage wikilink pmwikibg complete settings headings properly contents slightly parsable portable provides strftime starting cookbook requires visitors changing updating encoding provided includes localmap behavior wikidir recipes without earlier browsed scripts reading editing footers risking headers updated heavily instead between already exactly default enabled changed accepts affects timefmt request running buttons strings through notably treated example because bgcolor copying systems generic extract freebsd servers padding command created prompts details specify handled tgzfile format styles either revert before longer inside passed prefer nopass should inline unsafe around v22v23 please needed wishes review simply breaks source xlpage option called relies refers switch always appear easily entire copies number things commas spaces indent f7f7f7 course unless stable v21v22 encode border links files tasks using solid still black since there where pmhlt other enter which these skins point knows those stamp seems loads wikis array their above prior pmtoc while avoid v2315 strip added about could image sites alias check areas most xvzf have this make such data when that base work will want easy uses also they case used more them path core lets test part some like were what psft made been same just v230 must well look good idea okay beta v220 ones main done tips php any old new sub its had has dpr 1px 5px may mac rpv pub css bin faq gui how 145 utf etc txt was 10 by my 35 cp 27 8
+PmWiki.SitePreferences:1730627640: Site.Preferences PmWiki.AccessKeys Site.EditForm : custompreferences sitepreferences customisable customising customised accesskeys different following sitegroup shortcuts somegroup editform settings setprefs contains keyboard textarea comments browser through default parsing summary actions history certain include chosen enable config xlpage cookie pmwiki height making being which point notes these under order local width needs added used like line name that than copy will well this can php and hlt new of as by
+PmWiki.AccessKeys:1730627640: PmWiki.Drafts PmWiki.Internationalizations PmWiki.SitePreferences Site.Preferences Skins.Lean Site.PageActions : internationalizations ak_recentchanges sitepreferences implementation administrators installations corresponding ak_backlinks ak_savedraft intermediate translators assignments pageactions translation customizing information ak_saveedit ak_textedit incorporate declaration implemented combination accommodate convention characters accesskeys customkeys guibuttons ak_preview exceptions ak_history identified overridden throughout parameters shortcuts macintosh generally ak_attach ak_strong accessing following depending activated influence ak_logout wikipedia konqueror otherwise undefined currently emphasize operating different including triggered languages typically releasing supported conflicts mechanism browsers generate assigned keyboard netscape internet explorer override defaults webpages specific sequence visitors remember together pressing versions function audience requires ak_print continue contains optional textarea possible standard template clicking variable replaced mappings explains location created holding instead publish example editing phrases ak_edit mozilla ak_view because enables enabled screens methods letters summary vivaldi firefox systems pressed between earlier windows omniweb safari linked listed pmwiki border itself simply cancel exists viewed admins chrome config mapped typing markup easier appear adjust saving drafts ak_xxx tasks https allow ak_em table while shift steps added mouse skins cases enter these using works makes taken would where those value could start until which front built above under below types after pmhlt local uses only mode with this that ctrl when more akey must file word href html many same does note have like down been lean some than most name such blog keep jump each your were also used time part they exit faq how see one try php way may alt don two by of 1 0 5 2 4
+PmWiki.WikiWord:1730627640: PmWiki.WikiWikiWeb PmWiki.Links : enablewikiwords nolinkwikiwords spacewikiwords createlinktext htmlstylesfmt configuration wikiwordcount installations descriptions highlighting wikiwikiweb capitalized information definition decoration conversion background surrounded following backquote sometimes disabling wikipedia depending available existent enabling disabled likethis compared preceded standard together upgraded referred variable controls certain without forming convert earlier finding inherit default display writing summary created syntax titles pmwiki letter markup yellow system turned easier bottom border color beta2 based links local since lines first mixed place other pages usage those camel wikis basis valid rules about where such into also want none case from span need them help will even used each more per php run set two you css see not can pub of by if 1
+PmWiki.Audiences:1730627640: PmWiki.WikiAdministrator PmWiki.InitialSetupTasks PmWiki.PmWikiPhilosophy PmWiki.LocalCustomizations : localcustomizations initialsetuptasks wikiadministrator pmwikiphilosophy administrators implementation consideration understanding participating collaboration contributors installation backgrounds experienced stylesheets continually discouraged collaborate themselves generating customized eventually difficulty frustrated regarding audiences something sequences histories documents knowledge sometimes installed configure available designing authoring reluctant requested statement developer describes maintain generate features revision comments creating designed separate proposed restrict opinions software contains authors cryptic through content barrier because complex someone nothing colored symbols diverse instead include already problem usually careful minimal patrick linking exclude summary updates thought michaud claimed primary things markup easily people tables should useful senses chosen server become modify groups latter expert behind allows target fairly usable adding within really funny would naive could doesn makes needs terms which their write these truth about build quite often using goals folks think other thank after there doing html they want must ugly keep mind have what page lots site both from that most away text went into turn seem wade very used once will base like next much less ways find only this ease many such tool then okay don new for was let php put who may him its web etc has can two why by my
+PmWiki.BlockMarkup:1730627640: PmWiki.Forms PmWiki.TextFormattingRules PmWiki.Images PmWiki.Tables PmWiki.WikiStyles : textformattingrules automatically bulletedlists titlesummary blockmarkup information article2end articleend previously addressend attributes paragraphs sectionend wikistyles javascript detailsend indicating developer inclusion structure headerend footerend markupend divisions resulting reference compliant matching elements semantic headings possible addition standard asideend multiple browsers htmlhelp inserted embedded pagelist mozilla inserts default content without support current caniuse closing applied opening outdent markups div2end version sources closes blocks pmwiki class1 divend indent allows bother number class2 nested navend needed tables images verify html40 opened recent https pmhlt group click outer about inner forms html5 items since words such tags docs like here tidy have only user else will show feat this full more that name also note used term talk sure make does when same type org you few see fmt id1 web don any are by of 75
+PmWiki.SimultaneousEdits:1730627640: Main.WikiSandbox : simultaneousedits simultaneously notification environments adjustments wikisandbox highlighted distributed appropriate furthermore previewing experiment capability potential conflicts different safe_mode finishes solution attempts cookbook multiple whenever requests receives handling scenario presents changes feature process detects someone instead message working editing version changed browser updated running windows results invoked summary systems handled authors support edited before second server saving pmwiki unable loaded things nearly occurs action starts merged notice select alice again press there leave after saves since while where basic those these wipes prior same page gets also from with made thus then make hits main each open this form test else copy case into such that text time lazy has are you see php can any was fix bob out try two had how of ll by
+SiteAdmin.Blocklist-MoinMaster:1730627640:  : allow_url_fopen automatically moinmaster badcontent blocklist siteadmin generated download unable action format moinmo edits 30t09 regex this page note 2020 when http lost raw php any may by 19 38 07 be
+Ircnow.Goals:1730627640: Freedom.Freedom Freedom.Unix Freedom.Software : unfortunately compatibility confirmations automatically disconnects physically protection competitor altogether understand harassment tunneling technical transform backwards community firewalls sometimes unlimited resistant different computers ecosystem messages received software frequent supports protocol provides snippets religion innocent problems networks bouncers provider multiple language randomly reliable national register services stalking defenses thriving repeated maintain suitable standard existing changing everyone features freedom browser control laptops uniform without nothing serious clients servers average require country attacks popular elegant located quality results simple better ensure social online access ignore intend bypass vhosts ircnow almost mobile handle source modify number upload mature decent inside recent people rather photos videos phones fixing across users press share above major ircv3 buddy lists older their about break audio calls solve wants earth login nerds block today right goals allow build flaws media years skill using these large still globe sadly apps from need spam home fact does unix dead will soon over they code sent huge lost http hard that sync full band file also open bugs easy fast real give make stay must lack plan ddos into aims this turn just care 000 has way 100 any why non don lot its you can but too web 24 90 7
+Openbsd.Guides:1730627640: OpenBSDHardware.Hardware OpenBSDNet.Net OpenBSDWww.Www OpenBSDIRC.IRC Openbsd.OpenbsdXmpp Openbsd.OpenbsdMatrix Openbsd.OpenbsdDns Openbsd.OpenbsdCrypto Openbsd.OpenbsdMedia Openbsd.OpenbsdMail Openbsd.OpenbsdVcs Openbsd.OpenbsdTelephony Openbsd.OpenbsdDesktop Openbsd.OpenbsdUtilities Openbsd.OpenbsdLdap Openbsd.OpenbsdFile Openbsd.OpenbsdNews Openbsd.OpenbsdRss Openbsd.OpenbsdLangs Openbsd.OpenbsdUpgrade Openbsd.OpenbsdShell Openbsd.OpenbsdVmm : openbsdtelephony openbsdutilities openbsdhardware openbsdupgrade openbsddesktop virtualization openbsdmatrix configuration openbsdcrypto conveniently openbsdlangs openbsdmedia openbsdshell cryptography openbsdldap information openbsdxmpp programming newsreaders openbsdfile openbsdmail openbsdnews openbsdnet unofficial openbsddns openbsdirc openbsdvcs openbsdwww themselves developers openbsdvmm multimedia openbsdrss networking configure opensmtpd searching questions upgrading languages reference examples plumbing answered accounts template archived mailing version control through channel project suppose bundled daemons sample ircnow system source guides server relayd title lists httpd files start using these https often pages which final chat that doas want room like then have base come many here also find misc ircs marc help your org cgi can and etc web faq by cp
+Freedom.Network:1730627640: Freedom.Software Freedom.Privacy Ircnow.Federation : constitutional corporations information alternative constantly government federation accomplish completely monopolies permission arbitrary guarantee impeached community oppressed dependent requiring services software maintain thriving powerful internet freedoms balances morality becoming property majority provided however privacy without servers purpose respect network prevent allowed protect healthy useless private handful society reclaim should itself modern ensure public enough create ircnow anyone voting system losing checks modify chosen rights abuse takes means staff money users order study being forks share under these world given that must have join code upon time goes vast this more just than rule bill has our god but can not fee to by
+Freedom.Militia:1730627640: Freedom.Unix : professionals corporations concentrate proprietary themselves philosophy moderation understand administer controlled distribute configure strongest sysadmins corporate investors knowledge decisions dangerous teammates hobbyists networks maintain recruits freedoms educated software hardware training powerful designed platform selected liberty quickly sharing militia defense trained install without outside govern depend single vendor follow ircnow strive unlike entire system always simple rather little these hands users elite class never other guard which among about their learn title cloud fork easy unix well that than will good best have used were made when rest your code only does hire need from make even they own not can any don fit
+Freedom.Privacy:1730627640:  : cryptography radiofreedom unreasonable cryptocoins anonymously information anonymity described security features probable personal services searches warrants searched supports register provide privacy network connect collect prevent rfloat attach policy server ircnow seized access secure ensure number staff phone extra right users allow local abuse their title given 200px cause where width data only have upon best sets with each like from pick they name turn such real and png can own its has not our tls ssh pgp are tor vpn we
+Main.Terms:1730627640: Terms.Privacy Terms.Shell Terms.Vps License.Ircnow : cryptocurrency contributions infringement responsible connections additional permission activities malicious copyright passwords promotion profanity activity torrents gambling services accounts scanning warranty downtime everyone provided cracking violence allowed damages offered servers network privacy running without illegal license project slander ircnow person dalnet allows policy miners follow mining terms users shell agree title share libel these rules which drugs using make spam port ddos bots only porn that hold loss main must sign data vps not for you our usa any ask max up if by 2 5 4
+Terms.Terms:1730627640: Terms.Privacy Terms.Shell Terms.Vps License.Ircnow : cryptocurrency contributions infringement connections responsible kampungchat activities permission additional malicious copyright passwords gambling downtime accounts activity scanning cracking torrents provided everyone services warranty damages network offered allowed privacy servers running without license project illegal slander violent threats evasion person dalnet allows ircnow follow mining miners relays policy terms shell users agree nodes title which libel using share these rules drugs bots only ddos spam loss port exit make that must porn sign data hold usa you not vps for any our ask ban max 20 up by if 5 4
+Freedom.Freedom:1730627640: Freedom.Selfadmin Freedom.Federation Freedom.Fork Ircnow.Constitution Freedom.Religion Freedom.Press Freedom.Software Freedom.Privacy Freedom.Homestead Freedom.Madeonirc Freedom.Unix Freedom.Startupdream Freedom.Openforeveryone Freedom.Dueprocess Freedom.Checks Freedom.Rulebylaw Freedom.Independence : openforeveryone startupdream independence constitution opportunity declaration simpletable cellpadding dueprocess federation wetheusers standards rulebylaw selfadmin networked madeonirc religious homestead marketing software balances religion internet deriving networks freedom evident created privacy central liberty consent resolve justice written center ircnow checks rights powers truths attach perish secure border censor highly press ethic title under shall their earth equal birth class width these 40pct brave this with that vain been have unix here from fork hold bill png you was vps 100 not new god to 5
+Code.Code:1730627640:  : subdomain consider software hosting account request support started connect ircnow gotweb custom charge https needs setup will your code help with then repo join ircs over free real time from live chat org get cgi bin can for and git
+Freedom.Checks:1730627640:  : accumulation democracies afterwards difficulty government definition character possessed decisions directly balances threaten creating network anarchy control ancient violent liberty feature tyranny freedom checks always deaths itself powers scenes public danger enough slogan member ought chaos short their lives abuse there hands users trust never staff admin which title allow been same have they must only with from good made very pure one you are was to of
+Shell.Tutorial:1730627640:  : tutorial shell
+Terms.Shell:1730627640:  : cryptocurrency restrictions connections permission technical malicious torrents scanning allowed running network without person dalnet allows mining ircnow terms shell only bots port ipv4 are one not max up 20 5
+Freedom.Union:1730627640:  : decentralization established community essential networks together defended strength attached friends liberty history servers enemies against compete teaches tyranny freedom divided working result rather effort poorly united golden rivals broken remain likely pride their users there greed fault title other would joint union steal fight much from have that will love then evil same turn into more with than one our non and age not we of if by
+Freedom.Christian:1730627640:  : righteousness constitution conviction observance restrained guarantees community greatness religious therefore essential necessary christian occasion religion continue regulate precepts morality exercise disgrace directed violence virtual liberty neglect without network freedom teaches creator society support pillars decline pieces ircnow virtue reason exalts people which since level bible books happy world force title cause under users trust word have evil next must best life that your fall made only fear this read duty its and can are not owe was any run god one way but of by
+Freedom.Rulebylaw:1730627640:  : understands protection marketing confusing rulebylaw innocent congress spammers service without hundred enforce useless network justice freedom choice status escape rfloat banned wealth better attach regard terms their users rules title 400px every equal width right long read them that will than made have they weak one has are all get jpg due own is to if of so
+Vpn.Vpn:1730627640: Vpn.VpnMac Iked.Windows Iked.Android Vpn.VpnIos Iked.Linux Iked.Linuxstrongswan Iked.Newconfig : linuxstrongswan configuration residential protection currently newconfig software websites services openiked includes windows connect patriot servers support android install conceal admins vpnmac vpnios please access invite ircnow charge title macos speak steps visit your work from vpns chat free live only over time real with ddos own the get one to ip
+Freedom.Software:1730627640: License.License License.Ircnow : themselves birthright restricted permission requiring effective guarantee necessary software projects possible internet enslave trained defense freedom license control liberty without purpose network closest because source ircnow modify domain coders create public access users hands alone order means study share staff title shall power their every this have need that most room must your take away make live they made open best well for not new own ask fee but any set to up by
+Email.Email:1730627640: Squirrelmail.Connect AppleMail.Connect Alpine.Connect AndroidEmail.AndroidEmail Balsa.Connect Becky.Connect BlitzMail.Connect ClawsMail.Connect EM.Connect EmailTray.Connect Evolution.Connect Fdm.Connect FirstClass.Connect ForteAgent.Connect Geary.Connect Gmail.Connect K9Mail.Connect Mutt.Connect Opera.Connect Outlook.Connect Tencent.Connect Thunderbird.Connect GNUMail.Connect Gnus.Connect GroupWise.Connect IScribe.Connect HCLNotes.Connect IMP.Connect KMail.Connect MailWindows.Connect Mailbird.Connect Mailpile.Connect MailSpring.Connect Seamonkey.Connect Nmh.Connect Pegasus.Connect Spark.Connect Spicebird.Connect Sylpheed.Connect TheBat.Connect Trojitá.Connect Turnpike.Connect Pgp.Create Pgp.Upload : configuration squirrelmail androidemail transnetwork mailwindows thunderbird ponyexpress simpletable forteagent firstclass completion mailspring delivering seamonkey spicebird clawsmail groupwise applemail following evolution emailtray blitzmail appointed currently accouunts protocols marketing sysadmins mailpile supports sylpheed hclnotes couriers mailbird trojitá sortable turnpike software creating register connect tencent gnumail pegasus iscribe neither outlook mounted account storage unified clients servers webmail license contact create alpine k9mail relays thebat border apache attach upload margin lfloat rounds lgplv2 agplv3 ircnow invite spark kmail geary mplv2 becky opera balsa guide gmail title offer gloom night stays these swift their width linux horse 300px right since using free only mutt gnus 30px your name imap open with snow smtp from chat ddos june spam 2019 pgp non ✓ pop nmh fdm nor one jpg ask 100 mac ios bsd 1g
+Email.RecentChanges:1730627640:  : emailandroidemailapp recentchanges zouheir january outlook august 26t20 lists 20t14 2021 2024 jrmu 2023 01z 06z mkf at 12 05 13 pm 07 by 16 36 37 27
+File.File:1730627640: File.Rsync File.Ssh Fireftp.Connect ChromesFTP.Connect WinSCP.Connect CoreFTP.Connect FreeFTP.Connect Gftp.Connect CyberDuck.Connect ClassicFTP.Connect AndFTP.Connect FileZilla.Connect PSFTP.Connect Fetch.Connect : expressiveness professionals development interarchy classicftp chromesftp expandrive filezilla cyberduck commander uploadftp marketing software transfer webdrive transmit acrosync forklift abecabin connect fireftp manager request account hosting support started coreftp freeftp website anyone winscp create ircnow andftp rfloat attach castle charge rclone access sshfs rsync fetch psftp putty title bring setup files wants lftp code ircs fugu with then crax will tool live chat home gftp data coda real time from over your join help that back php7 just can not via get log 2gb his jpg own org ads
+Debate.Privacy:1730627640:  : fingerprinting improvement residential participate enforcement advertisers statistics completely tremendous impossible repeatedly harassment techniques providers including voluntary wikipedia anonymity proposal affected examples browsing software identity networks accounts language internet activity metadata entities services reported dangers selling without private parties ethical consent illegal testing allowed privacy excuses address history collect profile loveint ircnow result photos useful social online agreed abuses reward access amount debate people rules power share about three there their users break clear using while being https based email could theft array other media cause cases only they used when name this have your many wide just most that from law and who org etc few 3rd can may opt how not gry
+Freedom.Refuge:1730627640:  : compatibility shadowbanned participate accountless regardless boundaries persecuted privileges guaranteed sanctions religious different political illegally backwards expensive neglected purchase services internet language national hundreds virtuous intranet regional breaking whatever software platform everyone hardware outdated clueless yearning dollars network culture provide english welcome newbies country connect another accepts freedom windows outside ensures because subject require russia belief source closed ircnow status people global across common create income anyone refuge access become always rights walled might while hoped truly savvy often store steal tools spend money basic those older users tired title small china blocs this open done send also tech poor whom with from they copy need have best only does that rich into your race join chat give safe unix and nor ios day buy can get usa but run app pay up
+Freedom.Denomination:1730627640:  : denomination observation subversion conviction stability political confusion directly directed congress official violence religion discord require members anarchy freedom network enforce leading creator should reason belief ircnow result worst users title would which duty hold does must any owe not the law our and by
+Orange.RecentChanges:1730627640:  : recentchanges certsreissue miniontoby september expanded january baytuch correct orange august dutch notes 2020 2022 jrmu page todo 2021 gry ru 05 08 07 at 11 38 am 27 29 pm 03 35 17 31 10 nl 43 30 id 09 51
+Ircnow.Team:1730627640: Ircnow.Goals Ircnow.Opsofliberty Ircnow.Pioneer Ircnow.Minutemin Ircnow.Codeforce Ircnow.Ally Ircnow.Explorer Ircnow.Ranger Ircnow.Settler Ircnow.Sheriff Ircnow.Roadmap Ircnow.Finances : administration opsofliberty simpletable adminforces innovation codeforce positions minutemin different criminals marketing sortable finances progress sysadmin document explorer security software redirect unclesam cutting roadmap sheriff network settler pioneer improve ircnow attach report ranger rfloat border false apply about width title goals users class learn ifend 200px track write 500px ally want team more have help edge join need your png and the own see to we my 1
+Debate.Partners:1730627640:  : infringement copyright partners bouncers defenses criminal activity scamming phishing channels provide network contact carding illegal clearly ilines debate clones marked proper block abuse ages info ddos spam must with deal them nsfw for can our no 18 to so
+Bouncer.Znc:1730627640:  : jumpnetwork addnetwork plaintext addserver connect example correct browser replace bouncer newnet status ircnow using panel paste with your 6697 copy 6667 view port such then into type name com are znc and web url org msg if of
+Bouncer.Bouncer:1730627640: Bouncer.ZNC Bouncer.AdiIRC Bouncer.Adium Bouncer.AndroIRC Bouncer.Atomic Bouncer.Colloquy Bouncer.Erc Bouncer.Hexchat Bouncer.Ircrc Bouncer.IRCForAndroid Bouncer.IRCCloud Bouncer.IRCCloudWeb Bouncer.IRCCloudAndroid Bouncer.IRCCloudiOS Bouncer.IceChat Bouncer.IrcEX Bouncer.Irssi Bouncer.Igloo Bouncer.KiwiIRC Bouncer.Konversation Bouncer.KVIrc Bouncer.Limechat Bouncer.Mibbit Bouncer.MIRC Bouncer.Pidgin Bouncer.Quassel Bouncer.RevolutionIRC Bouncer.SimpleIRC Bouncer.Smuxi Bouncer.Textual Bouncer.Thunderbird Bouncer.TurboIRC Bouncer.WeeChat Bouncer.WinIRC Bouncer.XChat Bouncer.XChatAzure Bouncer.Yaaic : irccloudandroid ircforandroid revolutionirc konversation proprietary irccloudweb irccloudios simpletable thunderbird xchatazure unlimited protected simpleirc connected emulation colloquy messages networks turboirc androirc limechat software sortable bouncers hexchat weechat textual kiwiirc quassel icechat offline channel started running support license windows atomic device adiirc ircnow charge mibbit apache pidgin winirc border missed access gplv2 kvirc yaaic gplv3 ircex adium ircrc smuxi irssi igloo title emacs linux class width topic staff wine with real time from mirc team ircs free name join then play stay here when your back ddos type 100 znc ✓ add erc see org get how one bnc bsd ip
+Bouncer.Irccloud:1730627640: Freedom.Freedom Bouncer.Bouncer : proprietary registered abcde12345 connected software irccloud hostname password username consider features requires nickname details sidebar address network account example bouncer message minutes freedom without appears clients however protect premium server attach unlike should ircnow source mobile secure saying quote other click 31337 check using fully https right login offer email which asked after open wait type join want good john your then real will port fill most look paid apps and png com not new see few znc yet for org to if be
+Bouncer.AndroIRC:1730627640: Bouncer.Bouncer : proprietary certificate connecting connection registered abcde12345 settings2 connected password androirc nickname consider username software network details minutes example address message bouncer server1 server2 servers freedom secured privacy protect source should corner select client attach ircnow google saying check title 31337 right three using store dots1 https list from your back then fill john left open icon want auto type with play look like port apps wait new png see com ← top tap znc not few yet ssl for → org
+Bouncer.Weechat:1730627640:  : autoconnect abcde12345 connecting connected username password replace user123 network pass123 example weechat bouncer command message windows ircnow source saying attach server client 31337 title https input linux your save want line open john type real with the mac for not bnc get znc yet org png ssl bar add is if
+Bouncer.Irssi:1730627640:  : documentation verification autoconnect tls_verify tls_cafile connection connecting configured abcde12345 maintained indicators additional available following reconnect connected locations networks changing commands portable activity constant username channels password multiple restored remember nicklist servers address example bouncer chatnet windows editing use_tls message suppose scripts receive openbsd located specify another replace special updates issues ircnow master github plugin change notice blocks folder should status ignore no_act unless inside client attach layout saying number still quits certs irssi going parts mkdir joins would right using there panes order saves names mouse cause loose close https these nicks tells title 31337 might quote linux first your help real with left tmux want from john them wont that have stay also will this time back once type flag move adds runs make like sure line more then must tips blob what look way can but bnc org see for mac put bar off one pem yes cas ssl etc yet get any znc png cp
+Fig.Todo:1730627640: Openbsd.Newdisk Openbsd.Backup : attempting donations practice familiar collect perhaps patreon changes openbsd newdisk country coconut before backup ircnow please stable server stripe paypal skrill files payza title first money these setup major note your with done todo list need add fig how and way any org etc of
+Fig.Fig:1730627640: Ircnow.Servers Shell.Shell Ircnow.Team Fig.Todo : ░░░█████████████▀▀░░░░▀▀███▀▀░░░░██▀▀░░░░░░░ ▐████░░░░░░░░░░░░░░░░░▄█░░░░░░█▌░█▀▀▀██░░░░░ ░▄████▀░░░░░░░░░░░░░░░░██░░░░░░█▀░░░▄▄▄▄░░░░ ░░░░████▄▄▄▄██████░░░░▄▄▄▄█████░░░░░▄▄▄██░░ ░░░░░░░░░░░░░░▀▀▀▀░░░░░░░░▀▀░░░░░░░▄▄████▀ ██▀░░░░░░░░░░░░░░▄▄▄██████░░▐█▄▄▄███▀░░░░░ ░░░░████▀░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░███████████████░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░▄▄▄▄██████▀▀ ░░▄█████████████▄░░░░░░░░░░░░░ ▄▄███▀▀▀▀░░░░░░░░░░░░░░░░░ ▄▄██████████▀▀▀▀▀▀▀▀▀▀▀ ░░█████████████████▀▀▀ ▄▄▄▄██████████▄▄ ▀█████▀▀▀ hosted_button_id ▄██▀▀ ▄▄██▀ bn63pn32y3ffj instruction environment willingness chewbakka85 appreciate noxturnix resources donations ▄█▀ available connected upgrading finished spending training services sysadmin networks support another joining account getting allowed request bouncer already channel servers explore members welcome ircnow choose newest admins donate rabbit listed paypal right keeps shell place named order learn users apply first after https allen below every here only team that note give todo help send from have sami cool want more your need used unix ircs with 6667 hang also hole 6697 down chat fig can org and www are one for day ssl bnc bot out ksh by of go if z
+Bouncer.Thunderbird:1730627640:  : serverpassword thunderbird10 preferences abcde12345 connecting otherwise connected messenger username nickname settings nickserv protocol accountn string3 minutes options example bouncer summary message network attach ircnow select review button config bottom number editor choose saying source client format click until might again slide where enter press check field title 31337 blank leave https very your like john then have used want type look will page menu fill this case chat also with port wait from that same open done mail note png www new few and znc yet see can org ssl if of
+Openbsd.Openhttpd:1730627640: Openbsd.Acme-client : instructions connections request_uri certificate workstation chalkboard background relatively everywhere openhttpd challenge http_host fullchain directory installed certainly authority configure contains rulesets computer incoming response location s_client redirect examples charset openbsd default address putting restart content doctype similar pkg_add besides working copying replace private openssl encrypt subject setting correct enable issuer listen reload server domain simply should allows return simple border follow almost bottom dashed family title https rcctl style color pfctl point reset found serif black equiv local comic proto below white other index known block strip html well head sans into auto font meta must with acme root body file text doas code what port will name want your then test line neue sure make fine curl this some have pass see etc web 302 tls has and let png www tcp use 443 run one 1px utf key css pub off pem x3 cn 80 by ms hr h1 up
+Openbsd.Anycast:1730627640:  : instructions anycast_vps anycasting connection configure addresses different currently customers provided hostname provides reducing connects whenever purchase provider multiple closest latency centers benefit servers openbsd request suppose network ircnow follow charge inside normal should allows share first buyvm https which three alias those will then wiki data doku free inet here they make have them with that your uses this user sure same each from if0 put etc for 192 255 and php set vms him by of 10 3
+Openbsd.Cgit:1730627640:  : webinterface certificate unconfirmed request_uri my_project repository challenge snapshots http_host fullchain linecount filecount location nofollow fastcgi openbsd pkg_add renewal favicon virtual noindex slowcgi private robots socket create inside enable ircnow cgitrc listen return server https links chown strip block known certs mkdir title httpd clone desc root dscm logo name doas user home bare init path scan port drop acme need well make sure this like edit also www pem var ssl key etc org 302 tls 443 the run you may png css for bz2 tar zip gz mv 80 ln cd 1
+Openbsd.Pppoe:1730627640:  : authproto encounter keepalive hostname syspatch abcd1234 authname pppoedev default example authkey timeout openbsd pppoe0 errors match route scrub 12345 nfe0 sure make none sbin 1440 conf dest inet etc 255 mss com run ifp add you may pap max lcp up pf
+Www.Www:1730627640:  : expressiveness professionals hosting website support create anyone access upload ircnow title bring files wants php7 back with free sftp that your just and www get not can the ads own to
+Bouncer.Kvirc:1730627640:  : configuration connection connecting nicknames connected advanced identity username protocol password servers running network section example windows address message bouncer ircnow should attach change client source saying click write might email 31337 check title kvirc after linux https like with will john runs your that port this open look type give sent for yet and the mac not znc set get ssl new org png see by if go be
+Bouncer.Kiwiirc:1730627640:  : registered nextclient connecting abcde12345 connected password username example bouncer network details kiwiirc padlock address message minutes browser should ircnow server attach enable saying source check click 31337 title https then your runs that john look open like fill type want wait icon port with web see znc not yet few com and png for ssl org to if
+Bouncer.Adium:1730627640:  : preferences connection abcde12345 registered connecting connected username internet realname personal password accounts hostname nickname bouncer details example network options minutes encrypt message source client ircnow saying corner server bottom select attach button click 31337 right adium check using ident title relay https type open from john wait port look like chat with fill menu left your will want for the png ssl mac tab see znc not yet few add and org if im
+Bouncer.Pidgin:1730627640:  : registered connecting abcde12345 connected accounts received password remember protocol username advanced platform bouncer example minutes message network windows suppose attach bottom pidgin corner saying server ircnow client manage select source cross check click 31337 basic works right would ident linux title email fill then john port real your have that chat open type wait http with menu want → ssl png add and see znc not yet few put bar mac by im go if
+Bouncer.Limechat:1730627640:  : abcde12345 connection connecting registered connected limechat nickname username password received network general bouncer example message should source ircnow server saying select attach client corner bottom right click login check 31337 title email start john menu your from type want real open fill with look like http port and znc the → ios yet mac not for get add ssl png tab org up if
+Bouncer.Mibbit:1730627640: Bouncer.Bouncer : proprietary abcde12345 registered connecting connected received settings nickserv username password consider software freedom privacy example address bouncer instead minutes network message protect replace saying ircnow select server mibbit source client should attach click field using fille https title extra 31337 email with chat wait type john then open want your auth show few org and com znc see yet for but png not to by if
+Bouncer.Quassel:1730627640:  : abcde12345 identities connection connecting configure2 registered encrypted nicknames connected networks security identity username manually settings platform password default example bouncer address quassel minutes message specify should attach select ircnow saying server source square corner client verify bottom button check combo match right where there click title which https cross 31337 john from want they that menu real edit fill file says your look type like then wait port open with znc → org few and png yet not see box of
+Freedom.Experiment:1730627640:  : democracies experiments republicans conclusion government democratic community governing different republics political strongest consider everyone studying gathered network history anarchy america largest nations succeed failure digital council freedom because created control exists vision reason ircnow models other aware users quite spent forms those being first where total world chaos will time jrmu this that from many best self rome have make know full and all end not but lot of we my 44 08 43 42 up by
+Bouncer.Xchat:1730627640: Freedom.Freedom Bouncer.Bouncer : showdetails information networklist proprietary connecting abcde12345 registered connected username password consider software hostname servers bouncer uncheck example address general startup windows freedom protect message minutes button bottom corner attach select ircnow should client source saying global xchat click 31337 title blank linux using this nick john your fill then with open file auto from menu want http wait type left like look port new tab yet → few znc not and org mac see png ssl bnc all if
+Bouncer.Textual:1730627640: Freedom.Freedom Bouncer.Bouncer : proprietary disconnect connecting abcde12345 connection reconnect addserver connected password consider username securely software bouncer textual details address network example perform message freedom protect source should ircnow codeux select attach client waking saying quote check opens 31337 sleep title https using john from want when your menu fill then like type port with look znc → com www yet not get png org and to if
+Bouncer.Smuxi:1730627640:  : automatically certificate encryption connecting abcde12345 connected username password hostname validate nickname address details network startup windows bouncer example message minutes attach bottom ircnow source should select server client corner saying right check smuxi click menu2 title https linux 31337 your with from look like john fill then type port that want wait runs open bar → and png znc mac few org see yet for not is im of
+Bouncer.Revolutionirc:1730627640:  : revolutionirc abcde12345 registered connecting nicknames connected password username network android example bouncer address details message server should ircnow attach corner bottom button client source saying check 31337 home2 quote title https right mrarm then fill your want edit john open type with look like port for png znc tap not get yet tls ssl org of if
+Bouncer.Simpleirc:1730627640:  : jordynsmediagroup incompatible negotiation abcde12345 connecting registered simpleirc connected username userhost password nickname received packages unknown details network bouncer address example message version minutes startup attach corner server should prefix ircnow saying fdroid bottom check 31337 title right home2 ircv3 names https multi fails like john want line your then fill auto sees time when save with type wait note look port iso tap znc png org yet few ssl cap and for if tk of v1 9
+Bouncer.Yaaic:1730627640:  : abcde12345 connecting registered connected password username nickname bouncer details example server2 network address android minutes message attach corner should ircnow bottom saying source client home2 yaaic 31337 check title https want fine john port fill look real save then left open host type wait like with your see tap for png org znc not yet www few ssl any if of
+Bouncer.Atomic:1730627640:  : zaibatsutel abcde12345 registered connecting papertape connected username password possible versions nickname network another example details android startup address bouncer warning minutes message server atomic ircnow should bottom corner attach saying recent please client source using check 31337 https ircv3 title home2 right fill then your real fine save want john auto type with host look port like open wait znc see for any png ssl few org yet due if of 14 v1
+Bouncer.Irccloudios:1730627640: Freedom.Freedom Bouncer.Bouncer : irccloudios proprietary abcde12345 registered connecting connected password requires username features nickname hostname software consider bouncer address example details network account sidebar without message freedom minutes protect premium attach ircnow server should corner secure select unlike client source saying right modal quote 31337 title login https after using asked press other email fill wait want will full john your then type open paid save port most hold left apps menu look for and yet znc not png tap top com org see few new be if
+Bouncer.Irccloudandroid:1730627640: Freedom.Freedom Bouncer.Bouncer : irccloudandroid proprietary abcde12345 registered connecting connected password requires username nickname features hostname consider software network details freedom bouncer sidebar address minutes message example without account premium protect should corner ircnow attach server saying select secure unlike source client modal other pass1 using quote right after 31337 email title press login pass2 asked https paid menu type real john wait your open done most apps want port look fill then will left hold znc yet png com few see not for top tap org new be if
+Bouncer.IrcEX:1730627640:  : unfortunately connecting changing possible bouncer client title ports ircex allow this with time does use not and to so
+Bouncer.IRCForAndroid:1730627640: Freedom.Freedom : countercultured ircforandroid proprietary irc4android homescreen abcde12345 registered connecting connected consider username password software network example address bouncer message minutes freedom details protect server should ircnow client source bottom saying google attach check store https using 31337 title then your like fill john look nick save want back apps type play wait with port desc open org tap new not see com znc yet png few ssl if
+Relays.Relays:1730627640: Irc.Guide : simultaneously administrators different displayed marketing interests together protocol networks possible services friendly channels between connect artists message another similar several someday perhaps working linked robust ircnow expect relays system client rfloat attach please easier people access guide union title morse allow chat also sent meet that this will help live from plan have make with user over lets view jpg our you one don for and via ten are
+Openbsd.Opensmtpd-relay:1730627640:  : imsg_smtp_message_create authentication permissions local_mail relay_dkim opensmtpd necessary temporary directory following fullchain outbound virtuals password probably username secrets support require dovecot getting restart aliases openbsd domains private include holding action inside failed ircnow tables passwd listen egress sender solved error match doing rcctl spool hosts means 10027 10028 queue setup mask pony from conf note lmtp even else when rcpt this stop that file must mbox cert var org any for 587 you etc has lo0 421 tls all can run are len and tag src pki ssl pem 535 may key 127 be it by dv if 25
+Openbsd.Dkimproxy:1730627640: Opensmtpd.Configure DNS.DKIM : min_spare_servers dkimproxy_out min_servers information _dkimproxy historical domainkeys signatures separated lecturify configure opensmtpd processes purpsoses location selector forwards redirect running domains specify private consult address relaxed control openssl perldoc openbsd pkg_add prefork options keyfile genrsa spaces others pubout reject please ircnow listen record public should enable chown start mail1 error comma 10028 these mkdir guide found rcctl nofws relay 10027 uses doas what more many note this 1024 port name kept dns put can and net 127 etc org new by mv be 5
+Openbsd.Fdm:1730627640:  : ‘received’ certificates commented password download username computer accounts maildir keyword user123 locally another request openbsd __fetch deliver pass123 fetches replace format action server ircnow simply stands delete mail__ verify insert client header inbox using catch lines match tells imaps extra your real sure only with keep make from pop3 have mbox each into will conf else like read fdm org new run can set don ssl two var out but add so
+Openbsd.Syspatch:1730627640:  : automated syspatch prevents machines patching crontab cronjob setting running openbsd patches provide bottom system random binary unique starts update ensure exact would sleep added which 43200 title https helps doas down slow time same from this sbin been line that the usr man org has can all by
+Openbsd.Doas:1730627640: Openbsd.Security : configuration whitelisting replacement tedunangst permission absolutely precaution configure necessary somewhere malicious passwords literally redirect security provides complete yourself required specific programs insecure downside normally provided relaxed logging command mastery openbsd running persist without reasons utility keyword coconut instead default changes allows needed access nopass permit anyone system whoami either ircnow easier should unless simple called stolen others means using goals small after group sense users makes https order check fixed chmod needs avoid wheel again login first title that when doas more this gets flak root post echo also read lead data find have else them over will type next edit sign sudo life line time want note come does file org etc can for don see bug are lot ask be we by of
+Debate.WhyC:1730627640:  : configuration installation implemented streamline everything accomplish confusing learnbchs ecosystem necessary software properly language limnoria training teaching enormous learning majority requires support militia trivial citizen weechat forking eggdrop modules because process scripts current premade library novices smaller openbsd enough almost moment demand debate python depend forked either custom nodejs phased pylink sopel users offer allow which would https relay since write built class first shell touch plans they rust code just well only that much less bots ruby time this have want goal korn like upon true also tiny such whyc will find cpan from with many uses full help than org one sic can not but our way out lot oop eat irc run old now do if my ii
+Seamonkey.Connect:1730627640:  : authentication connections seamonkey encrypted navigator settings security starttls incoming outgoing internet contains instead default address account welcome project program opening select server ircnow attach enable choose better insert client reader email after click under suite plain https imap name your user smtp edit tls2 news this that need uses note text see and png www org web for as ll of by
+Openbsd.Sftp:1730627640:  : passwordauthentication allowagentforwarding allowtcpforwarding chrootdirectory 20080220110039 stackexchange x11forwarding usernamehere permittunnel forcecommand sshd_config orangeshare credentials otherwise subsystem questions permittty sftponly internal undeadly personal location possible redirect accessed groupadd usermod openbsd sources without hosting article newuser adduser htdocs script either adding passwd action 503312 server email their chown mkdir https httpd shell setup users grant match doas from home each your unix team they full have this will into edit save make file time yes var sid www cgi org one has bin ksh pub if no
+Openbsd.Checklist:1730627640: Ircnow.Team Openbsd.Doas Openbsd.Nsd Openbsd.Unbound Openbsd.Openhttpd Openbsd.Acme-client Openbsd.Ngircd Openbsd.Hopm Openbsd.Oidentd Openbsd.Znc Openbsd.Eggdrop Openbsd.Vhost Openbsd.Relayd Openbsd.Dovecot Openbsd.Opensmtpd Openbsd.Pf Tutorial.Tutorial : successfully interactive preferences programming production compliance encryption tutorials highlight subdomain openhttpd opensmtpd configure overrides checklist training optional yourself required personal requires commands username complete sftponly progress hostname address connect message bouncer openbsd defense account related tcpdump without dovecot someone oidentd detects hosting install absence unbound unblock eggdrop publish website receive channel others create ircnow plugin orange custom common relayd follow gotweb access ngircd client mytest finish server things editor netcat errors ensure second coding vhost inbox gmail added tasks email https panel about which shell basic users plain hello world part iked team send from ping acme hopm doas ddos work 1337 text port then jrmu core this code when stay have nick bncs that know skip like nano else once link page make join cert kcgi file will show root line bans give for non znc run nsd vps any dig php has tcl get log be pf vi
+Orange.Id:1730627640:  : ██░░▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒░░▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ████░░▒▒██▒▒▒▒▒▒████ ████▒▒▒▒▒▒▒▒▒▒▒▒████ ████████████ ████▓▓▓▓▓▓██ ██▒▒▒▒▒▒▓▓██ ██░░▒▒▒▒▒▒██ gebruiksvriendelijker systeembeheerders internetmonopolie opslagcapaciteit bestandshosting gecentraliseerd gestructureerde zoekopdrachten programmering ondersteuning documentatie ontwikkelen onderhouden beschikbare vrijwillige verbeteren inbegrepen nederlands chatserver onstabiele applicatie overwinnen verbinding innoveren cursussen vergroten verbonden aanmelden schrijven opleiding favoriete apparaten meerdere functies gebruikt nuttiger chatbots feedback russisch arabisch livechat platform services toezicht training diensten netwerk stellen gericht support bestaat bouncer burgers spreken welcome openbsd verzoek nieuwe orange ircnow aantal engels worden welkom eerste zoals maken games houdt hindi bèta frans lezen prijs talen tekst vrije omvat sftp deze mail hebt http onze test team perl zijn voor erop tijd goed kunt via een uit hun met org 1gb bij van het zal php of na
+Pear.Pear:1730627640: Pear.Todo : ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▓▓ ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▓▓ ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░░▓▓ ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒░░░░▓▓ ▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒░░░░▓▓ ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▓▓ ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓ ▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░░░░▓▓ ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓ ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██ ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒░░░░▓▓ ▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒░░░░░░░░░░░░░░░░▒▒▒▒░░░░▓▓ ▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▓▓▓▓ ▓▓░░░░░░░░░░░░░░░░░░▓▓ ▒▒░░░░░░░░░░░░░░▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓░░░░░░░░░░██ ▒▒▓▓▓▓▓▓▒▒ ▓▓▓▓██░░ ▓▓▓▓▓▓██ ██▓▓██ hosted_button_id documentations administrators xjbh9xmxgnskg configuration collaborative registration effectively application chewbakka85 connections teamleader federation maintained successful interested experiment favourite supported recruiter donations governing available unlimited languages volunteer community connected currently services together software platform unstable friendly innovate sysadmin provided upgrades changing remember networks protocol features feedback thriving multiple favorite clicking windows welcome spanish details improve located english include android bouncer develop receive account devices openbsd special benefit punjabi quality without contact members channel servers shortly totally request consist easier ircnow useful source kindly assist common please famous access client unites making donate create paypal guided dennis german better number system greetz mobile people learn chats group great truly users build today staff which wants ready added topic linux dutch hindi could https terms again keeps agree their speak swiss make pear todo them name list also more they time self fizi free that made well urdu your will used this york good from help easy sign upon type part goal have real text live than once how www can new usa fan mac ios run org who not fun ask may any quo say by if 15
+Pear.RecentChanges:1730627640:  : recentchanges january dennis pear jrmu 2021 todo by pm 09 06 at 01 05 29
+Orange.Nl:1730627640:  : ██░░▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒░░▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ████░░▒▒██▒▒▒▒▒▒████ ████▒▒▒▒▒▒▒▒▒▒▒▒████ ████████████ ████▓▓▓▓▓▓██ ██▒▒▒▒▒▒▓▓██ ██░░▒▒▒▒▒▒██ gebruiksvriendelijker systeembeheerders internetmonopolie opslagcapaciteit bestandshosting gecentraliseerd gestructureerde zoekopdrachten programmering ondersteuning documentatie ontwikkelen onderhouden beschikbare vrijwillige verbeteren inbegrepen nederlands chatserver onstabiele applicatie overwinnen verbinding innoveren cursussen vergroten verbonden aanmelden schrijven opleiding favoriete apparaten meerdere functies gebruikt nuttiger chatbots feedback russisch arabisch livechat platform services toezicht training diensten netwerk stellen gericht support bestaat bouncer burgers spreken welcome openbsd verzoek nieuwe orange ircnow aantal engels worden welkom eerste zoals maken games houdt hindi bèta frans lezen prijs talen tekst vrije omvat sftp deze mail hebt http onze test team perl zijn voor erop tijd goed kunt via een uit hun met org 1gb bij van het zal php of na nl
+Ircnow.Projects:1730627640: Irc.Federation Stopm.Stopm Ircfs.Intro Bncnow.Bncnow Ircnowd.Ircnowd Census.Census Relay.Relay Ircweb.Ircweb Coursedown.Coursedown Usethis.Usethis Townhall.Townhall NewsNow.NewsNow Botnow.Botnow : recommendation statistical coursedown federation autonomous courseware universal versatile townhall software projects services markdown networks inspired federate ircnowd newsnow usethis monitor blocker bouncer botnow client source better engine ircweb voices census bncnow system expect ircfs using unite whole heard scale where stopm intro relay panel union proxy sense misc that open easy file spam into like free wiki make for you the rss and xml
+Ircweb.Ircweb:1730627640:  : xmlhttprequest websockets javascript brutalist requires browsers courtesy embedded existing http2irc handles firefox easily bridge client safari chrome ircweb expect attach which pages works calls makes opera logic major only like side that into inex the you use can png ie9 of no
+Http2irc.Http2irc:1730627640:  : xmlhttprequest masquerading javascript developers firewalls interface http2irc compiled replaced password username touching bouncer through clients sockets privmsg without network traffic written bncnow server solely actual bridge tunnel allows ircnow ports block makes using hello world build https later curl pure chat chan lets like 6697 side 6667 that easy apps code znc web any can the and org cmd you bsd by be ii on
+Http2irc.RecentChanges:1730627640:  : recentchanges http2irc october 2020 jrmu 05 at 01 04 am by
+Third.Third:1730627640: Third.Directory : matterbridge marketplace educational advertising courseware oscommerce malikania telephony directory ecosystem pastebins suggested minetest software undeadly projects asterisk centered eggheads telegram play0ad eggdrop icecast openttd bridges discord catalog paster fluxbb pmwiki github python signal botnow mining social imgup third slack media 42wim https using title blogs party games forum user perl nltk book free data bots apps chat www org web irc and
+Third.RecentChanges:1730627640:  : recentchanges directory december november basilisk catalog third march dillo devs jrmu 2020 2021 01 49 am by 41 11 23 07 52 pm 19 38 27 35
+Ircnow.Helpers:1730627640: Third.Third Ircnow.Goals Freedom.Freedom Ircnow.Howtoask Freedom.Unix Ircnow.Servers Ircnow.Roadmap Marketing.Marketing : documentation programming commitment interested experience philosophy optionally marketing questions sysadmins improving volunteer stations familiar howtoask software internet customer minimum roadmap friends helpers project servers freedom improve connect hosting support ircnow skills become purely resume gaming reward mentor invite coding duties source goals smart third using tasks their other hours party title wikis blogs learn apply would radio while will some your they with work chat team bots must much more hang week unix like role paid lack join user this apps open and set non can but for own one new add out if cv 5
+Openbsd.Vi:1730627640:  : unfamiliar vimtutor pkg_add openbsd with doas you are if
+Openbsd.Passwords:1730627640: Password.Hashes : alphanumeric overwrites management generating afterwards passwords generates alnumpass functions encrypts savepass sysadmin critical urandom openssl through allpass getpass profile command openbsd newpass source append length hashes pages these takes title chars first lines role less type your home then four them with help head fold cbc for asc aes 256 dev out use see 127 cat any can jot dc 80 to 33 rm z0 za tr is 9
+Openbsd.Chroot:1730627640:  : sandboxes directory redirect apparent normally benefits insecure outside process include openbsd chroot cannot modify access unable inside refers change anging files stuck intro view that when runs jail any new the you is so of
+Openbsd.Acopm:1730627640:  : alphachat projects packages openbsd monitor readme acopm proxy https plain git net md
+Bouncer.IRCCloudWeb:1730627640: Freedom.Freedom Bouncer.Bouncer : irccloudweb proprietary registered abcde12345 connected username consider password hostname software features requires nickname details sidebar address network account example bouncer message minutes freedom without appears clients however protect premium server attach unlike should ircnow source mobile secure saying quote other click 31337 check using fully https right login offer email which asked after open wait type join want good john your then real will port fill most look paid apps and png com not new see few znc yet for org to if be
+Bouncer.IRCCloudAndroid:1730627640: Freedom.Freedom Bouncer.Bouncer : irccloudandroid proprietary abcde12345 registered connecting connected password requires username nickname features hostname consider software network details freedom bouncer sidebar address minutes message example without account premium protect should corner ircnow attach server saying select secure unlike source client modal other pass1 using quote right after 31337 email title press login pass2 asked https paid menu type real john wait your open done most apps want port look fill then will left hold znc yet png com few see not for top tap org new be if
+Bouncer.IRCCloudiOS:1730627640: Freedom.Freedom Bouncer.Bouncer : irccloudios proprietary abcde12345 registered connecting connected password requires username features nickname hostname software consider bouncer address example details network account sidebar without message freedom minutes protect premium attach ircnow server should corner secure select unlike client source saying right modal quote 31337 title login https after using asked press other email fill wait want will full john your then type open paid save port most hold left apps menu look for and yet znc not png tap top com org see few new be if
+Bouncer.IceChat:1730627640:  : newservernossl newserverssl abcde12345 registered connecting connected username password settings icechat network example bouncer minutes message startup display without uncheck details address windows corner ircnow bottom attach issues report client source should saying users click extra title 31337 where left john your fill look open note want some nick http wait type like tls for and png the few znc www tab see bnc yet org if v9
+Bouncer.KVIrc:1730627640:  : configuration connection connecting nicknames connected advanced identity username protocol password servers running network section example windows address message bouncer ircnow should attach change client source saying click write might email 31337 check title kvirc after linux https like with will john runs your that port this open look type give sent for yet and the mac not znc set get ssl new org png see by if go be
+Bouncer.KiwiIRC:1730627640:  : registered nextclient connecting abcde12345 connected password username example bouncer network details kiwiirc padlock address message minutes browser should ircnow server attach enable saying source check click 31337 title https then your runs that john look open like fill type want wait icon port with web see znc not yet few com and png for ssl org to if
+Bouncer.RevolutionIRC:1730627640:  : revolutionirc abcde12345 registered connecting nicknames connected password username network android example bouncer address details message server should ircnow attach corner bottom button client source saying check 31337 home2 quote title https right mrarm then fill your want edit john open type with look like port for png znc tap not get yet tls ssl org of if
+Bouncer.XChat:1730627640: Freedom.Freedom Bouncer.Bouncer Bouncer.Hexchat : unmaintained proprietary information showdetails networklist essentially abcde12345 registered connecting connected password consider username software hostname addition servers example startup general uncheck bouncer address hexchat minutes protect windows message freedom select client attach corner source button ircnow insist decade should bottom saying global title click 31337 blank linux using file port this auto open from menu nick your left john with http been wait type used fill like then want such fork look has bnc and new org see not yet znc few png tab mac → ssl if
+Bouncer.AdiIRC:1730627640: Bouncer.Bouncer : proprietary connection abcde12345 consider password username software network replace example bouncer include freedom privacy protect ircnow actual server adiirc should source client inside window 31337 title using https with your john this want open then sign plus that sure make real type org and com for to if
+Bouncer.IRCCloud:1730627640: Freedom.Freedom Bouncer.Bouncer : proprietary registered abcde12345 connected software irccloud hostname password username consider features requires nickname details sidebar address network account example bouncer message minutes freedom without appears clients however protect premium server attach unlike should ircnow source mobile secure saying quote other click 31337 check using fully https right login offer email which asked after open wait type join want good john your then real will port fill most look paid apps and png com not new see few znc yet for org to if be
+Bouncer.SimpleIRC:1730627640:  : jordynsmediagroup incompatible negotiation abcde12345 connecting registered simpleirc connected username userhost password nickname received packages unknown details network bouncer address example message version minutes startup attach corner server should prefix ircnow saying fdroid bottom check 31337 title right home2 ircv3 names https multi fails like john want line your then fill auto sees time when save with type wait note look port iso tap znc png org yet few ssl cap and for if tk of v1 9
+Bouncer.WeeChat:1730627640:  : autoconnect abcde12345 connecting connected username password replace user123 network pass123 example weechat bouncer command message windows ircnow source saying attach server client 31337 title https input linux your save want line open john type real with the mac for not bnc get znc yet org png ssl bar add is if
+Freedom.Religion:1730627640:  : righteousness thanksgiving guarantees religious establish marketing community peaceably religion official congress disgrace petition exercise language liberty freedom welcome network gather attach speech policy ircnow rfloat exalts belief users level press staff title under width 400px trust shall stop make but sin one are any not jpg god
+Openbsd.Vmmuser:1730627640: Shell.ShellPutty Openbsd.Vmminstall : combination vmminstall shellputty hypervisor sometimes dedicated keyboards following username hostname redirect terminal personal commands shutdown followed multiple physical machines connect windows coconut virtual control upgrade openbsd console unpause vmmuser ircnow server single create inside repair attach allows tildes period before manage serial system likely escape press vmctl order guest which works linux first https enter lives guide usage title using start check that type note once view your boot want most stop must have runs need this will also ctrl the see org out any may few two can ssh log png by if cu 8 1 4
+Openbsd.Vmmlinux:1730627640:  : yvkispem7vkus5qfosqaeu installation connectivity fingerprint convenience afterwards networking brzkpyqmho interfaces statically background configure systemctl reinstall different operating username hostname shutdown redirect outlined loopback assigned vmmlinux password openbsd restart follows unpause console execute address coconut service primary gateway default crontab machine replace account netmask running enp0s2 serial forget escape losing reboot ircnow please ensure debian create sha256 alpine access mygate inside source vmctl iface qcow2 there given while guest extra a0lir right below first based usual ecdsa found stop runs your then away done true this vio0 tmux ping with once inet sbin will auto make case from type note well that usr put 162 can new log key 255 dig xxx etc 20g vps any but set tyc how and ssh i5 87 38 rm ip up by
+Freedom.Finances:1730627640:  : cryptocurrency infrastructure transparency organization transactions voluntarily development financially independent networking accounting providing registers donations processor authorize finances expenses controls directly revenues salaries software business collects instead handled provide freedom patreon payment country paypal server enough spends common ledger skrill profit income wallet needs about money teams earns later vote bank fund sets like that each when have much semi goes some form pays own ask its how the non not we up by
+Freedom.Serverrights:1730627640: Ircnow.Constitution : cryptocurrency infrastructure serverrights contributing constitution transparency transactions organization independent development voluntarily financially federation experiment permission principles government networking accounting governance governing available registers community donations authorize providing processor together software policies expenses business services directly collects revenues controls interest salaries without purpose manages however instead unified payment patreon handled protect country modeled defense provide benefit servers freedom ledger income enough unites source common profit charge future public ircnow skrill paypal create writes divide wallet strong asking spends almost person users staff power earns money about among trust after truly other teams later bound needs vote each that bank many open fund like fair self pays have semi goes will when form much code help some sets its own not can run has you non by up
+Bouncer.Igloo:1730627640: Freedom.Freedom Bouncer.Bouncer : proprietary registered connecting connected password iglooirc consider username software bouncer network details address example minutes freedom protect message ircnow should server attach select client source saying 31337 right title https where using your add1 nick with fill type home want open add2 save wait port host look like znc com the ios org not top bnc see few tap png ssl tls for yet if
+Openbsd.RSTFlood:1730627640: Openbsd.Tcpdump Openbsd.Buyvm Openbsd.Pf Openbsd.Ddos : whitelist beginning rstflood solution publicly firewall disabled filtered content openbsd packets records visible analyze tcpdump exposed sending printer defense should master coming remove device manage router server ext_ip sample follow during attack source domain except better buyvm rules check https quick these panel other could ports would block proto zones using title above phone guide linux shows first sure that 1900 will want ssdp here some this from drop ddos pcap also pass them conf have make upnp udp 192 168 for you few ntp 198 net 251 any see ips are not but and dns web 119 non put two etc var nsd if pf 81 of
+Bouncer.ZNC:1730627640:  : yournickname yourpassword requireauth jumpnetwork addnetwork plaintext addserver mechanism browser loadmod example support connect correct bouncer replace status newnet ircnow using login paste panel with auto copy 6667 then 6697 sasl view such type into this msg can yes set znc and web url org com are if of
+Debate.Ethicalflaws:1730627640:  : osi_cofounder_resigns contributor_covenant contributorcovenant discrimination” code_of_conduct characteristics representative misinterpreted discriminatory responsibility firstdonoharm participation ethicalsource proliferation discriminated specifically ethicalflaws restrictions disagreement unacceptable copyleftconf presentation unilaterally contributors infringement marginalized constructive technologies introducing essentially immediately hippocratic disagreeing orientation nationality enforcement endeavor” theregister incompetent mentioning punishable regardless activities disability principles harassment experience expression definition monopolies derogatory developers impossible inherently technology weaponized violations deliberate debian’s completely ultimately appearance salesforce depending misguided different restricts copyright licensing prohibits universal political “fields criticize standards supported criticism embodying corporate ostracize insulting doesn’t microsoft enforcing direction witnesses troubling community therefore invisible religious ethnicity education personal software anything creators coherent dictates comments licenses evidence together trolling behavior movement examples sponsors code’s resigned invasion position everyone directly offender remember decision speaking religion schedule approved identity declares violated economic lawsuit pronoun welcome project leaders popular greater can’t frankly systems neutral against trolled freedom version decided handled closely already someone appears sharing offense because dissent beliefs allowed attacks include members aspects equally various serious process pretend demands persons blanket respect issues rights settle headed untrue target courts groups people perens speech google reject unlike ground author latest behind citing kernel fairly status github pledge social almost gender sexual reason called common danger debate eating create might apply users maybe their would those human owner https meant among “no using could worse which truth opens level socio terms trial often wrong quite build needs other these makes power share linux hands words many with made that face this rely 2019 race work html just have each size will puts used stop even into then form idea said want been what past much same time they from them take 2020 your well look main door foss whim upon gone went way www was not org did who how see ban has doc age too faq by 12 10 17 03
+Debate.WhyNotC:1730627640:  : themselves absolutely rebuttal programs response commands written someone hogging whynotc python advise debate which space drive write that your full will they sort want hard perl are see all use my if du to
+Debate.Monero:1730627640:  : localbitcoins localmonero debate deeply looked https since said into this you not com too and ve
+Debate.Monopolydanger:1730627640:  : telecommunication monopolydanger disaffection intimidates censorship government technology represents cloudflare integrity authority targeting coalition pakistan addition internet minister threaten security facebook hearings slashdot linkedin twitter through granted defence expedia alarmed earlier digital content rakuten excites 1849228 booking nytimes remove toward senate called amazon airbnb google debate group yahoo firms scope apple other https harms block imran prime power story leave they that asia were html week this grab jrmu said khan line 2020 hurt ways pose law org new sap and aic www 17 11 45 of by 10 39
+Debate.Oldsoftware:1730627640:  : communication flossmanuals oldsoftware interactive technology monitoring originally techniques successors censorship filtering protocols performed monitored messaging messenger community telephone sometimes ch011_get bypassing bulletin internet services consider computer standard creative although download exchange messages windows allowed systems blocked instant current running archive popular applied connect advent modems widely telnet number debate exists before recent allows upload access either these still board users other would using early 1990s their later relay group that such real very text jrmu well only also data read news with call http over used than less html live chat its irc was ssh but not may big bbs aim etc 30 15 05 57 42 33 51
+Debate.Mozilladanger:1730627640:  : mozilladanger provisioned centralised effectively government techcrunch cloudflare following switching position conclude provider powerdns privacy worsens default firefox beyond states united stands debate after using based https jrmu wser 2019 your blog 2020 that list this have doh com add nsa etc fbi can the for bad bro 03 14 25 to 12 41 09 13 so
+Openbsd.Tcltls:1730627640:  : configure installed packages provider building openbsd running eggdrop pkg_add tcltls easily source could https title shell core doas will need from make also lang xvzf tar you are org ftp try for can if 22 cd gz be uv to 7 1
+Ircnow.Partners:1730627640: Openbsd.Ilines Ircnow.Networks : requirements harassment marketing advertise recommend supported criminals permanent together phishing channels scamming activity properly benefits partners evidence networks bouncers iwojima openbsd labeled content provide filters carding reports contact respond illegal ircnow shells ilines needed combat reduce attach obtain advice select relays either abuse adult needs users title false width 40pct ifend admin email bring share your nsfw link will with spam must ddos over site stop many logs deal here help list and org can for set png how we of
+Ircnow.Partners2:1730627640:  : partners2 networks channels training bouncers website provide support filters suggest abusers banning content options ircnow report wikis iline title known share adult spam tech mark with help will nsfw your auto for and log
+Ircnow.Testing:1730627640:  : drawbacks benefits sysadmin features accounts software downtime testing buggier servers private control stable secure ircnow newest become crash store title write shell learn work less bots more your data here unix and may way don any set up
+Ircnow.Sysadmins:1730627640: Vps.Vps Openbsd.Openbsd Ircnow.Goals Freedom.Freedom Shell.Shell Ircnow.Howtoask Openbsd.Training Ircnow.Roadmap Third.Third Ircnow.Finances : administration documentation immediately commitment references experience optionally themselves sysadmins tutorials following interview improving questions training finances customer progress internet software projects websites salaries howtoask familiar applying recruits freedom minimum roadmap friends openbsd network request improve promote require someday account include chatter willing respond threats support servers please ircnow resume defend number afford minute notice system become finish before cannot worked report coding duties invite reward weeks learn third shell seems smart goals after basic email staff hours track phone party legal title write users ready being would while their help with must real good unix code like hang your team have time full oper name this they take got who add new vps out and but org pay cv by if 6 5
+Ircnow.Stable:1730627640:  : drawbacks sysadmin benefits accounts downtime software features compile servers ability support stable secure ircnow learn write title fewer older shell long have more less term your code and can to is
+Openbsd.Mlmmj:1730627640: Openbsd.MlmmjWebArchiver Opensmtpd.Configure Opensmtpd.Test Crontab.Edit : mlmmjwebarchiver documentation configuration specifically emailaddress requirements instructions lightweight subonlypost mailinglist management directorys postmaster controlled installing subscribe documents opensmtpd configure generates deploying existence downloads delimiter overrides localhost creating required requires spooldir normally virtuals instance advanced licensed archives solution external example support default accepts content special receive options replace openbsd command aliases crontab handled meaning someone bangcat forward posters located initial request manager pkg_add written servers details covered updates compile consult publish daemons action allows covers public access change readme locals _smtpd should domain create maintd joyful simple ircnow enough emails couple modify anyone source script simply system added rules sends which cases touch lists https index hosts named files users needs table found false ifend share given there title entry first owner mkdir chown below small works made test doas make wiki with your then sign docs mbox what edit like most have line each that this will more full also want site look from find very home task sent into once real note its var log see org etc usr can bin run get php 127 of by 5 0
+Cherry.RecentChanges:1730627640:  : recentchanges cherry march 22t03 izzyb 2023 2021 todo 28z 04 at pm by oz 53
+Openbsd.Backups:1730627640: Openbsd.Dump Openbsd.Restore Rsync.Usage Openrsync.Usage : permissions preserving openrsync excellent ownership essential restore openbsd backups routine choices losing making usage title avoid there data dump file well very work and two are
+Openbsd.Announce:1730627640: Openbsd.Wall Ircnow.Servers : announcements maintenance important broadcast procedure scheduled upgrading redirect restored affected patience messages expected downtime support service example upgrade minutes mailing updates channel because changes openbsd servers roughly clearly status thanks around system should result repeat notify ircnow please notice before users shell fruit every email state doing using place major which begin title write will your plan need send this list team wiki when what wall 2021 take some doas motd see the may etc znc msg log org utc any jan and are we 00 on 22 30 of cc 10 5 8
+Openbsd.Backup:1730627640: Openbsd.Dump Openbsd.Restore Openbsd.Openrsync Openbsd.Tar Openbsd.Scp Openbsd.Sftp : openrsync transfer followed possible openbsd backing restore minimum backups should policy native title daily there habit sftp ways make dump week file once over tar scp are you if by of 3
+Orange.Todo:1730627640: Openbsd.Install68 Openbsd.Vmminstall Openbsd.Vmmuser Openbsd.Bsdrd Openbsd.Newdisk Openbsd.Backup Openbsd.ZNCAdmin Openbsd.ZNCUser Openbsd.Upgrade68 Openbsd.Buyvm Openbsd.Znc Openbsd.PFStable Openbsd.Httpopenproxy : multiprocessor httpopenproxy attempting vmminstall installing configured install68 donations upgrade68 firewall upgraded familiar pfstable practice zncadmin vmmuser openbsd zncuser version because newdisk support country coconut changes collect perhaps patreon proxies stripe before backup orange please server paypal skrill ircnow guide buyvm added bsdrd title money first these major setup files payza took jrmu long todo also need with team read your done note list and how way fix etc any org of 1 2
+Mango.Todo:1730627640: Openbsd.PFStable Openbsd.Newdisk Openbsd.Backup : attempting configure donations firewall pfstable practice country perhaps openbsd newdisk changes patreon collect coconut stripe skrill server backup before ircnow please paypal files payza mango title first these money major setup todo list note done your need way etc org any add and of
+Jujube.Team:1730627640: Openbsd.PFStable Openbsd.Backup Openbsd.Newdisk Openbsd.Znc : attempting configure donations firewall pfstable practice changes collect backing country openbsd newdisk perhaps patreon upgrade migrate coconut paypal skrill stripe backup server adding before ircnow please jujube files check title money first major setup payza these todo done team data your note list need org any znc are way etc and by of if 2 8 1
+Banana.Banana:1730627640: Banana.Todo : breadofgod webserver welcome channel second banana ircnow member become domain 16667 https bible holy todo page have join want list here name and you www our the org if
+Banana.RecentChanges:1730627640:  : recentchanges miniontoby january banana todo 2021 znc 09 at 03 39 pm 41 04 am
+Banana.Todo:1730627640: Openbsd.Upgrade68 Openbsd.PFStable Openbsd.Newdisk Openbsd.Backup Openbsd.Znc : multiprocessor attempting configure upgrade68 pfstable practice familiar firewall openbsd install eggdrop newdisk support version changes coconut banana backup please ircnow before follow server files check title major these first guide done bots host todo your note list with any znc org see how add and of if 2 1
+Ircnow.Netizen:1730627640: Third.Third Ircnow.Goals Freedom.Freedom Ircnow.Howtoask Freedom.Unix Ircnow.Servers Ircnow.Roadmap Marketing.Marketing : documentation netizenship programming commitment interested optionally experience philosophy marketing improving sysadmins technical questions training policies stations software internet familiar howtoask freedom friends servers connect support roadmap project improve minimum hosting network ircnow duties become invite mentor reward rights gaming resume coding source other goals tasks using users party their third hours title learn blogs smart wikis apply radio while enjoy your team with read bots week help unix much more hang chat some they join apps open must will and set non can out for own add one new cv if 5
+Pear.Todo:1730627640: Openbsd.Upgrade68 Openbsd.Install68 Openbsd.Newdisk Openbsd.Backup Openbsd.Znc Openbsd.PFStable : multiprocessor attempting configure install68 donations upgrade68 practice firewall pfstable version backing openbsd collect migrate perhaps country patreon newdisk support coconut changes guides please server follow skrill ircnow before upgade backup adding paypal stripe title files check payza money setup major these first your done pear data todo list need note znc way vps etc and any org of by if 1 2
+Plum.Plum:1730627640: Irc.Guide Freedom.Software Plum.Todo : underdevelopment entertainment suggestions interesting application conditions portuguese completely appearance available knowledge different computing languages connected customise sponsored recommend including introduce according unlimited interests operating character training software networks services provides nickname oriented identity internet platform anything favorite valuable channels require chatter android freedom looking windows bouncer onboard forward contact project enhance support located believe english spanish trained members openbsd control bengali circle ircnow hebrew server french europe arabic create please issues number offers aiming vhosts future shared medium system school ethics speech st13g match error topic users guide based power which heart solve linux terms their using agree would hindi keeps group range also more your plum well will team seek help nine urdu long todo list text this must have part with find here most cost face miss aims that room make root vast get can not ask mac ios few set may old who by 24 7
+Plum.RecentChanges:1730627640:  : recentchanges january st13g plum 2021 todo wiz by am 09 12 at 03 pm 16
+Grape.Todo:1730627640: Openbsd.Znc Openbsd.Newdisk Openbsd.Backup : attempting donations practice familiar openbsd perhaps country collect version upgrade newdisk changes patreon coconut ircnow stable server skrill please before stripe backup paypal files check grape payza title setup first money these major your todo list note done with need add how way znc any see org etc and of if 2 8 1
+Cherry.Todo:1730627640: Openbsd.Znc Openbsd.PFStable Openbsd.Newdisk Openbsd.Backup : planetofnix advertising postmaster collecting attempting donations configure completed teammates frantech practice probably services register pfstable firewall familiar openbsd newdisk kekanda website contact patreon version support changes perhaps country coconut portals upgrade records pylink cherry ircnow server backup please before create paypal stripe update skrill files certs title abuse setup first these major https every money email admin check payza ipv6 info done with sure make your know them want irc6 todo need list note znc has pic see way get etc org any how buy ssl add ip6 dns my ca oz if 8 1 2
+Users.CategoryMirrory:1730627640: Ircnow.Partners Ircnow.Sysadmins Ircnow.Roadmap Ircnow.Helpers Category.Users Users.CategoryMirrory UsersCategoryMirrory.Test : users_category_mirrory userscategorymirrory unixphilosophy disagreements corporations internetwork interactive activities government interfaces convenient themselves principle sysadmins equipping citizenry projects software together stations programs training minetest comments educated specific partners hosting methods already related ddosing illegal roadmap another welcome started feature happens example culprit helpers servers please ircnow apathy factor should revise domain combat attach choice center though design action debate coding lfloat stands rfloat output footer blame wants techs align every armed rosie their dying means xargs 25pct https radio index click links width offer floss wikis might input types block comes thing along creep avoid blogs only more much well self bots with spam code have they your real this both find text edit here name what easy gzip also when list know try pet one new vps png for dir but has org php own add can all toc up xz be
+Ircnow.Pentesters:1730627640: Ircnow.Goals Vps.Vps Openbsd.Openbsd Freedom.Freedom Shell.Shell Ircnow.Howtoask Ircnow.Roadmap Third.Third : documentation pentesters completely applicants commitment references appreciate optionally experience tutorials questions following improving interview anonymous security software customer patching websites projects applying howtoask sysadmin internet learning exploits familiar training salaries support require request roadmap someday freedom improve account provide openbsd contact minimum network willing conduct against friends please before finish defend system server ircnow invite remain prefer reward become worked number resume access duties afford cannot issues would third smart goals while shell staff phone legal about title party hours first well your send team love hole with full know have week join goes help find then like must name user unix hang this time code root real take new and pay vps but see add org if cv by 5
+Ircnow.Coders:1730627640: Ircnow.Goals Vps.Vps Openbsd.Openbsd Freedom.Freedom Shell.Shell Ircnow.Howtoask Ircnow.Servers Ircnow.Roadmap Third.Third : documentation application experience commitment references optionally questions following tutorials improving procedure interview including sysadmin recruits internet familiar howtoask applying websites training salaries learning software customer freedom servers openbsd request friends improve require roadmap account someday address minimum conduct willing support ircnow afford system cannot social finish duties before number resume become coding coders skills reward third smart would party phone while goals title users write email hours media which staff legal shell tasks other have unix help want team name your each like full they week work send with must hang take time real love join oper this and vps non out new but may pay own by if cv 5
+Ircnow.Censorship:1730627640: Ircnow.Networks : infringement pornography censorship meaningful impossible individual decisions peaceably guarantee copyright establish connected countries networks religion sysadmin congress petition censored friendly behavior official exercise services channels include example control however legally violent freedom another illegal claimed threats without becomes debates digital gather ircnow speech server policy united rights states system ensure family cannot power users wants there types title staff rules order press shall wide team each make also stop bill have this even that must some form zero many are its our set has ban one
+Jujube.Todo:1730627640: Openbsd.PFStable Openbsd.Backup Openbsd.Newdisk Openbsd.Znc : configured attempting donations firewall pfstable upgraded practice patreon newdisk country openbsd collect testing migrate perhaps coconut changes backing jujube please stripe ircnow skrill paypal backup before adding server title check payza files still fully setup major these first money done todo your data list note need znc etc way any org and are if of by 1 8 2
+Jrmu.Marriage:1730627640:  : discrimination homosexuality specifically extortioners pornography ideological corinthians homosexuals prostitutes environment unrighteous slanderers censorship adulterers experiment accusation principles christians welcoming religious religions drunkards providers prejudice idolaters statement guarantee covetous children sexually anything politics deceived maintain marriage entirely evidence internet exercise repeated towards labeled hostile beliefs thieves welcome network inherit freedom immoral neither support holding kingdom without against require healthy speech others quoted claims unfair invite please policy ircnow spread topics anyone accept groups adults bible verse press there tests about these staff title never false users https this will does lgbt that wiki join know were done harm ages have also open male both jrmu bans when been safe wide they core long hate goes race not due our was has god znc can but nor ago you let of my 10 9 6
+UsersCategoryMirrory.Statement:1730627640:  : userscategorymirrory responsibility dishonorably pornography environment themselves moderation individual determined cheerfully advantages constraint belonging motivated willingly statement specific policies coercion software children servers example network profits healthy welcome eagerly exposed benefit nurture should policy ircnow colors making creeds always office ensure global flock peter guide title guard drugs their thing right write fold ampc safe that free tend made help your duty code and for not all ask but own run who god by to do up 5 1 2
+Openbsd.Leafnode:1730627640:  : alpha20081229a description sourceforge newsserver everything otherwise attention following usergroup configure leafnode elements download dortmund maintain openbsd pkg_add example already technik install restart between program because package instead extract browser finally replace groups should krusty create simple folder ircnow inedtd delete indetd errors spaces nowait scroll stream select domain please havent inetd rcctl youre posts these local added touch title first bzip2 shtml https copy then dont this sbin make sure doas back will what into with done from wget file also nano lynx tabs else save nntp exit here easy able edit nees beta came many etc too are and put tcp usr not see bz2 dir xf cd go tu if of
+Ircnow.Ambassador:1730627640: Ircnow.Goals Freedom.Freedom Vps.Vps Almanack.Almanack Shell.Shell Ircnow.Ilines Ircnow.Ally Ircnow.Networks Marketing.Marketing Ircnow.Roadmap Ircnow.Finances : administration organizations transactions sponsorships partnerships application interacting socializing ambassadors negotiating diplomatic businesses experience exemptions connection commitment technology understand marketing qualified negotiate alliances anonymous interview improving software immunity networks accounts services promoted familiar almanack internet salaries finances progress friends freedom improve someday private minimum roadmap contact openbsd involve foreign request receive become duties ircnow ilines remain donors afford source resume report admins needed cannot reward other track email shell staff hours limit goals users money title would while apply extra deals opers enjoy help with week that this your ally gain time know like hang from out get vps job see add how may new pay but to cv 5
+Openbsd.Ongoing:1730627640: Ircnow.Networks Openbsd.Botnow Openbsd.ZNCUser Openbsd.ZNCAdmin Openbsd.Wraith Openbsd.FilePermissions Openbsd.Got Openbsd.Gotweb Openbsd.Sftp Openbsd.Sshkeys Openbsd.Sshbackdoor Openbsd.Vmmuser Openbsd.Install68 Openbsd.Vmminstall Openbsd.Upgrade68 Openbsd.Sysupgrade68 Openbsd.Bsdrd Openbsd.Fdisk Openbsd.Disklabel Openbsd.Newdisk Openbsd.Growfs Openbsd.Tcpdump Openbsd.Staticnet Openbsd.Pf Openbsd.PFStable Openbsd.PFTesting Openbsd.Ddos Openbsd.RDNS Openbsd.Iked Openbsd.Police : filepermissions administrating sysupgrade68 filesharing sshbackdoor networking vmminstall minimalist practicing installing partition disklabel install68 reinstall configure minutemin simulated pftesting utilities staticnet zncadmin chrooted practice policing security firewall pfstable networks training claiming customer protocol newdisk openbsd tcpdump packets ongoing vmmuser zncuser abusive sshkeys servers defense account provide support service botnets storage control system offers growfs detect filter police viewer gotweb claims follow wraith botnow source ircnow using guide clone which about learn setup ipsec users where title fdisk bsdrd your rdns team have zone iked vpns with repo ddos read sftp home for the and fix git add how vps nsd as if
+Debate.Dogfooding:1730627640:  : significantly participated embarassment improvements typewriters immediately implementor dogfooding considered confidence components developers separation activities conclusion wikipedia microsoft advertise purchased literally perceived effective customers providing announced important obsolete designer internal computer services everyone february convince examples hundreds benefits perform happens crashed windows believe thought bouncer provide because please builds forced should broken before inside donald errors debate manual around eating system server better notice proves proof knuth never gmail would pride https scale built often first 1990s fixed these large daily fully email using title shows other right words great staff apple them what that when this have came thus hurt many your made than unix team chat away been also user they else will take over 1980 work more four were only must irc day new had own tex and why 200 org who try are run may was mid go
+Openbsd.Rbldns:1730627640:  : openbsd rbldnsd djbdns quartz https blue html www com to yp cr io
+Openbsd.Httpopenproxy:1730627640: Openbsd.Openhttpd Openbsd.Pf : misconfiguration httpopenproxy unintentional applications whitelisted information censorship configured prevented openhttpd installed proxyinfo reporting sometimes incoming firewall secondly insecure properly normally blocking messages httppost username networks internet discover proxies usename address allowed running because openbsd example packets receive scanner provide privacy banned double ircnow allows dalnet entire server should except sender abused bypass first fruit there those ports occur kline would check title often using users could have 8080 bans that more make your 2021 been sure this will spam they from quit hide are web but and any has see 192 168 not exp php may org to pf 17 55 if 09 29 01
+Vmm.Vmm:1730627640: Vmm.DebianIso Vmm.DragonflyBSD Vmm.FreeBSD Vmm.NetBSD Vmm.Haiku Vmm.9legacy Vmm.Guix Vmm.Void Vmm.FreeDOS 9.Install Vmm.Fedora Vmm.Arch Vmm.SlackwareIso Vmm.Alpine Vmm.Minix3 Vmm.Devuan-ISO Vmm.UbuntuIso Vmm.Devuan4Iso Vmm.RockyLinux : dragonflybsd slackwareiso simpletable devuan4iso rockylinux configured workaround debianiso ubuntuiso somewhere installed sortable problems freebsd freedos 9legacy openbsd console network minix3 likely varies fedora netbsd kernel border serial alpine guests panics livecd 9front normal status crashs before brings doesn works haiku about width class clock speed needs setup shuts loads arch half guix list oses they fail init same down void disk vmm can due kdl 100 and why if db to
+Openbsd.Phishing:1730627640: Openbsd.Pgp Openbsd.Vhost Openbsd.Znc Openbsd.Dkimproxy : transactions trustworthy signatures vulnerable pretending important phreaking dkimproxy passwords usernames different messaging telephone phishing original commonly identify channels messages nickserv defenses attacker openbsd website attempt confirm typical joining systems prevent fishing headers bouncer matches protect appears someone company ircnow verify always detect emails custom occurs unless forged beware credit inside vhost comes basic calls known other opers cards there check steal users using tries your team mode data fake with when from send real them well hard look used that work and log non pgp znc set try sms by of up
+Openbsd.Security:1730627640: Openbsd.Ddos Openbsd.Phishing Openbsd.Shellinjection Openbsd.Rootkit Openbsd.Backdoor Openbsd.Dos Openbsd.Spamming Openbsd.0days Openbsd.Rootkits Openbsd.Chroot Openbsd.Pledge Openbsd.Unveil Openbsd.Pf Openbsd.FilePermissions Openbsd.Databaseperms Openbsd.Passwords Openbsd.Ssh Openbsd.Secureweb Openbsd.Ids Openbsd.Trust Openbsd.Defaultdeny : vulnerabilities filepermissions administrators shellinjection databaseperms possibilities configuration additionally defaultdeny responsible filesharing impersonate concentrate protecting absolutely relatively regardless interested constantly accounting exploiting configured vandalized mitigation reputation techniques everything encryption authorized attackers disasters typically discussed hopefully passwords important unsecured teammates firewalls obscurity computers upgrading determine thousands extremely difficult necessary backdoors hardening secureweb detection connected intrusion intruders expressly perfectly databases security phishing software consider hundreds services ensuring properly rootkits internet building personal machines involves securing guessing choosing everyone obscured spamming customer programs planting daunting although advanced possible exploits supposed yourself attacked crackers spammers approach standard sections overview document towards reasons require openbsd defense product network systems because profile execute similar improve perhaps thieves example kiddies targets private through logging enabled offline gaining becomes illegal hacking planted attacks website assured servers records pretend prevent someone keeping single public duties chroot ddosed credit should access ircnow except permit strong loaded unveil leaked pledge policy stolen trying denial called easier things guides moving skills notice active source number larger placed emails effort making simply script hoping using local rogue among known which trust there based steal small sites later their 0days means other those hands avoid being doing hopes users title chats spend steps block types might taken basic doesn state write could bugs this they more much just size must that make only hole time thus code have name with host used most good same fake will card info nick else part also what fail when area from ways show sshd than task best next read mind keys apps harm high many want each rely dial can may low won has ids don out too non who ppp set lot few him lie by pf 5 1 2 4 3
+Debate.Firstamendment:1730627640: Ircnow.Networks : firstamendment criticizing environment permanently distributed independent disagreeing censorship meaningful mainstream individual ostracized establish believing recognize peaceably connected necessary networks religion limiting services congress maintain official friendly exercise channels petition sysadmin internet children accounts debates digital claimed however another product control limited freedom company social review policy banned family should effect server rights states comply health gather speech simply ensure ircnow around people power world being raise order worse rules local shall staff users press bible media wants allow today each your type team what need time have rise with also same stop even bill this that wide does make for has run set can get its law and are one own
+Openbsd.Abuse:1730627640: Ircnow.Networks Openbsd.Ngircd Openbsd.Znc Openbsd.Opensmtpd : permission opensmtpd official channels networks teammate services claimed running another without openbsd someone process privacy applies censor server ngircd ircnow policy email abuse terms their right prior each such your this due and own set znc has ban web any can to
+Openbsd.ZNCSupport:1730627640: Bouncer.Bouncer Ircnow.Networks Ircnow.Servers Bouncer.MIRC Debate.Zncflaws Openbsd.Police Openbsd.Ilines Openbsd.Phishing : misconfiguration notify_connect intentionally automatically possibilities controlpanel successfully disconnected listnetworks troubleshoot instructions alternative information punctuation advertising immediately jumpnetwork permanently registering understands guest58404 connecting downloaded abcde12345 connection incredibly configured personally addnetwork registered zncsupport requesting loadmodule reconnect important confusing different blockuser following currently replacing correctly addserver available verifying extremely mechanism carefully passwords incorrect satisfied username ysername security probably phishing mistakes zncflaws secondly settings redirect connects messages retrieve chatting problems remember yourself possible shortest chanserv sysadmin undernet channels properly bindhost nickserv nickname quakenet identify freenode services deleting requires approach terrible webpanel specific everyone accounts teammate official familiar whenever perform privmsg already snoonet captcha botname logging example closing version openbsd newnick bouncer actions address without servers prevent warning friends besides helping jumping replace spelled because default happens getting started altnick confirm clients claimed include himself welcome private newpass follows sending forever history changes ircnow double simple accept unable ngircd unless itself glined cannot emails tested cherry record errors status typing banned around dalnet always number ensure logged better before signed entire ilines delete assume please police either caused glines powers create smiley thanks flawed debate reason nobody likely caught forgot should simply folder anyway method admins ircnet actual common notice vhosts single cserve guides report squery wants users chats there check tells pages store mango until after fruit first would reset about tries saves extra later field staff which https these tried known wrong taken where title right sorry doesn waste space exist plain reply typed ircds index again could types rizon efnet abuse login other unban major share mouth just sasl they give note from must 1337 join each same will need oftc this into that puts them mirc time then upon tons have make keep some true turn idea auth hold what pear also disk mode real more link over logs sent says code most copy else look plum wiki part ctcp best many love done hard didn been easy how day has ask thx try but job see 235 bnc why dns php bye may yet yes fix bcc 21 25 20 22 28 24 27 my 50 29 30 41 ip 31 01 54 57
+Dns.Providers:1730627640:  : registering subdomains registrar providers services freedns afraid annual https offer there also from need like name that your fee are org pay own to
+Team.Policy:1730627640: Freedom.Federation Ircnow.Team Openbsd.Training Third.Third Ircnow.Constitution : cryptocurrency constitution organization transparency participates development trustworthy federation encouraged censorship eventually teammates registers donations president elections interview trainees business collects expenses revenues policies congress software salaries services bouncers training together manages network decides provide whether openbsd privacy chooses freedom gateway governs modeled recruit patreon payment account create skrill paypal policy server ircnow wallet strong common profit future spends please resume number itself should money third allow bound users needs about which earns after unite phone terms wants party picks staff legal games much that each sets they your vote like name them will must know host mail bots own and web how for ban ask can non has see if up by
+Dns.FQDN:1730627640: Dns.Registrars Dns.Zonefile Dns.Records Openbsd.Vhost Openbsd.Dig Openbsd.Host Openbsd.Nsd Openbsd.Unbound : automatically nameservers identified registrars unexpected completely impossible qualified something shorthand defining remember previous probably zonefile appended purchase example however because records current snippet instead openbsd defines unbound appends points origin needed domain reason period ircnow second unless easier anyway simple system since write every fully level using which would means title cname after other these comes there lacks files vhost blank entry still with what want fqdn make mail when that will used have also this give root like does look www ns2 ns1 dns for see org but are dot not ips you top dig nsd why own don net 10 of up 3
+Freedom.Lanofopportunity:1730627640:  : lanofopportunity compatibility participate regardless boundaries guaranteed illegally sanctions backwards political expensive different national software hardware language outdated services internet hundreds breaking purchase regional intranet subject english country provide culture require freedom another connect network welcome ensures because dollars windows common global ircnow anyone income status people russia source closed across create while blocs money steal users truly often spend small older basic tools china into need open done from this join copy does with also have that best usa and can for nor you ios pay run get day new buy up
+Freedom.Serversrights:1730627640: Ircnow.Constitution : infrastructure cryptocurrency serversrights constitution contributing transactions transparency organization voluntarily development independent financially federation experiment permission governance networking accounting principles government authorize providing available registers community processor governing donations controls collects expenses together revenues services salaries business software policies interest directly provide protect manages defense purpose payment unified without however country modeled benefit patreon instead handled freedom enough common ircnow create asking divide charge person ledger source future spends public skrill wallet paypal unites income writes profit almost strong users later earns about money needs after teams title staff among other trust truly power bound semi each much fair that have vote self many sets bank some form open goes code like pays when help fund will run its own not you can has non by up
+Servers.Rights:1730627640: Freedom.Federation Ircnow.Team Openbsd.Training Third.Third Ircnow.Networks Ircnow.Constitution : cryptocurrency participates constitution transparency organization responsible trustworthy development federation eventually encouraged president interview donations teammates separable registers elections networks official software expenses revenues trainees policies services salaries collects channels business bouncers congress together training freedom whether handles liberty forever decides patreon gateway payment manages servers openbsd governs provide recruit privacy claimed chooses account abusive modeled defines ircnow policy create please claims spends future common strong profit wallet skrill paypal rights resume number should itself phone games third which other money wants party needs allow after picks staff union unite legal bound users earns about their title abuse terms each your will vote them sets much they like name must know host what owns from that bots mail how has see ask can non web ban up by if
+Freedom.Madeonirc:1730627640:  : principles madeonirc ourselves practical marketing solutions attitude internet problems freedom better attach rfloat invent proud build trust world title width 400px with make anew time have rely come real and png the get can god to up
+Freedom.Homestead:1730627640: Vps.Vps : independence controlled homestead marketing corporate business platform monopoly herdquit pioneer servers digital against freedom rfloat future system rigged attach there claim title today width 400px build wild west want your life vps own jpg irc and don be is of by
+Ircnow.Sheriff:1730627640: Vps.Vps Ircnow.Goals Freedom.Freedom Almanack.Almanack Openbsd.Police Ircnow.Networks Ircnow.Roadmap Ircnow.Finances : administration screenshots investigate application technology commitment collecting cutthroats understand experience suspected improving anonymous qualified marketing interview policing almanack internet security software progress deserted sheriffs finances salaries networks familiar stranger services accounts promoted evidence offline kiddies contact openbsd receive freedom friends someday improve reports ddosing roadmap hombres vicious abusers minimum botnets needed ircnow resume police cannot afford wanted rfloat become attach script remain reward duties source hours other staff goals guide apply email track title these extra learn crime while using doxed quick about width 400px howdy billy town your read this take help stop mean week know logs skid file with band isps west time hang all add get vps won new but see was jpg org job may pay cv by 5
+Freedom.Dueprocess:1730627640:  : accusations dueprocess punishment confronted excessive witnesses deprived punished informed required himself accused against account without freedom defend reason banned during except danger abuse cruel right trial shall users title great times twice will fair jury they have same must able fast fit can and get nor not to be of by
+Ircnow.Allies:1730627640: Openbsd.Ilines Ircnow.Networks : requirements harassment supported criminals advertise recommend permanent activity benefits phishing together evidence scamming bouncers channels networks properly openbsd labeled provide respond content reports illegal filters carding contact needed advice shells allies ilines obtain combat relays either ircnow select reduce adult abuse users needs title share email admin bring will over stop many ally link must nsfw with ddos logs spam here list your help site deal can and for org set how of we if
+Password.Management:1730627640: Password.Hashes : alphanumeric management displaying encrypting decrypting overwrites generating encryption compatible character following alnumpass passwords decrypted gibberish installed directory generates according decryptes functions remaining specifics combining expected finished encrypts savepass modified commands decrypts prompted contents remember sysadmin critical openbsd urandom version newpass openssl allpass through defined getpass profile default updated encoded deletes editing viewing obvious adjust format decode append output remove create screen hashes encypt debian source either called backup length athena reader enter doesn print needs takes wrong using usage right pipes again first being there shown input title below lines linux chars older pages these your less this note with they hint from wont left them fold head when both work once want what also will home used type wish help four quit bash role can asc see any run hit way ksh isn jot but are apt cbc 256 dev cat 127 aes set was dc 80 cp z0 by 33 za tr 9
+Oidentd.Pylink:1730627640: Oidentd.Install : installation configuring spoofing oidentd default replies botnick pylink please inside force reply title guide this user need put etc you the see to if
+Congress.Procedure:1730627640:  : congressional transactions punishment determine subscribe procedure president majority presides policies journal ircnow member simple absent public quorum rules being sign kept over vice must made for any and org can see at 51 up to
+Ircnow.IRCitizen:1730627640: Third.Third Ircnow.Goals Freedom.Freedom Ircnow.Howtoask Freedom.Unix Ircnow.Servers Ircnow.Roadmap Marketing.Marketing : documentation programming philosophy commitment interested optionally experience improving sysadmins questions technical marketing ircitizen internet training software howtoask policies familiar stations freedom friends netizen connect servers support improve minimum roadmap hosting project network ircnow become mentor duties invite rights gaming source coding resume reward using goals third their tasks other hours party users title learn blogs smart wikis apply radio while enjoy your team with read bots week help unix much more hang some they join chat apps open must will and set non can out for own add one new cv if 5
+PuTTY.Connect:1730627640: Shell.Sshfingerprints PuTTY.PuTTYgen : sshfingerprints application connecting invisible alternate greenend username password properly sgtatham terminal keyboard function download puttygen features disable logging private example records consult address install windows version ircnow attach config verify bottom fixing latest change chiark keypad server please https sshfp shell login shift order guide vt100 check paste fruit click title fill host with keys work mode ctrl john page does open then must your type note html port org png and www see for dns esc fpr can get 22 go uk of
+Leafnode.Install:1730627640:  : alpha20081229a description sourceforge newsserver everything otherwise attention following usergroup configure leafnode elements download dortmund maintain example openbsd pkg_add between replace already technik install package instead browser restart program because finally extract folder simple groups create krusty should ircnow inedtd delete indetd errors spaces nowait scroll stream select domain please havent inetd rcctl youre posts these local added touch title first bzip2 shtml https copy then dont this sbin make sure doas back will what into with done from wget file also nano lynx tabs else save nntp exit here easy able edit nees beta came many etc too are and put tcp usr not see bz2 dir xf cd go tu if of
+Ln.Intro:1730627640:  : automatically following indicates different symbolic username existing multiple command without python3 creates example appears folders server htdocs allows copies points easier binary places would local title which links lrwxr wheel handy files intro might path long this root list your show will what home that doas very used have such usr but put feb www var any the can now too new for web be so ln 24 25 07 ls of up 13 8
+Minutemin.Creed:1730627640:  : documentation weaknesses configure minutemin correctly defenders workings commands strength conflict daemons brother without useless against victory network masters friend server myself ircnow counts manual better before damage trying users learn types pages first enemy creed admin clean there peace until ready heart inner guard abuse them will code bots legs keep know that eyes arms this what mine than must life best many like but its are one our pwn not nor who get set of up so
+Minutemin.Duty:1730627640: Freedom.Selfadmin Freedom.Independence Freedom.Freedom Freedom.Openforeveryone Ircnow.Constitution : openforeveryone independence constitution established inseparable principles sacrificed selfadmin minutemin networked patriots internal humanity equality external freedom perform derived against justice support perfect consent enemies ircnow defend powers duties those users union agree which whose their money duty time upon from will and all are of as by my to
+Netizen.Become:1730627640: Third.Third Ircnow.Goals Freedom.Freedom Ircnow.Howtoask Freedom.Unix Ircnow.Servers Ircnow.Roadmap Marketing.Marketing : documentation emancipation netizenship programming philosophy interested experience optionally commitment domination oppressed marketing sysadmins questions technical improving howtoask internet familiar policies training stations software support friends servers connect roadmap hosting project freedom minimum without network improve ircnow mentor invite resume duties become reward symbol coding rights source beacon gaming goals third hours other using users party their tasks title smart apply learn wikis blogs radio enjoy while dream share your unix team must hang more much week help bots read hope apps open will some they join chat can own and non new for who day add one set if cv 5
+Termux.Connect:1730627640: Fdroid.Install MITM.Intro : misconfiguration sshfingerprints installation immediately available software outdated sysadmin followed username password although finishes continue example instead upgrade openssh connect package command warning replace respect success details dollar attach termux google update fdroid attack server should report ircnow double domain match known intro first error login there enter repos cases check rarer after title store below https find type your play want with sign free mitm time does will show data that safe also then from used note must apps this new png nor may pkg but if hl by
+Netizen.Rights:1730627640: Ircnow.Constitution : responsibilities constitution transaction participate netizenship membership protection including honestly policies connects equality services freedom network respect support worship digital liberty rights ircnow defend values admins called shared prompt bound other users serve title under trial staff press fees jury obey when upon vote fair full bill our and for run get pay of by we to
+Mail.Test:1730627640:  : personal practice message sending address outlook server email gmail your also such from test an or to as
+Tor.Torsocks:1730627640:  : installation connection torsocks internet realname programs newnick example working address network welcome pkg_add newuser replace through enable server actual relay rcctl start nick5 force below tool with 6667 your doas hopm test used 001 the irc 192 168 can if is nc
+NewsNow.NewsNow:1730627640: NewsNow.Teams NewsNow.Install NewsNow.Browser : news_colors_on documentated miniontoby languages extension interface introduce directory locations yourself multiply discuss newsnow firstly reading install browser network command execute channel eggdrop checked reader remove called ircnow wanted things follow signup member mostly simply leader using shell https where their topic below every guide going tasks teams panel touch grape this feed page data perl that with need name what does file will help good 2021 make some home made join from give code have see 100 use how web put org own add can get for xml rss ksh are plz out bot if rm my
+NewsNow.Teams:1730627640:  : simpletable miniontoby ircforever descripted copyright sortable example newsnow between wanted border server tester leader banana ircnow panel width class teams name main page 2021 menu sign your this edit and add 100 109 101 the org up
+Gpl.Flaws:1730627640: Freedom.Independence Linux.Flaws License.Ircnow : indemnification proprietariness interpretation unfortunately program—and fundamentally contributions independence permissively corporations organization deliberately restrictions contributing incompatible distributing sponsorships collectively improvements development proprietary practically distinction effectively interesting trustworthy bureaucracy opportunity celebrities enforcement discourages proposition advertisers contradicts merchandise contractual billionaire assumptions restricted developers incentives collateral unsuitable completely reasonable instrument encourages understand foundation distribute oppression rightfully agreements injustices generosity contribute struggling businesses impossible enterprise copyrights berkeleydb conviction themselves associated obligation consulting statically unethical criticize strangers donations financial requiring ownership abandoned essential community mistreats liability expecting necessary influence licensors recipient secondary surrender conflicts increases protocols advocates wikipedia complying something surviving customers exclusive struggled exercises restricts loopholes condition decisions ecosystem licensing companies difficult necessity political revisions contracts computing important subverted providers corporate patronage certainly microsoft declining technical operating projects modified property destroys material document standard licensed humanity actually versions computer software equality services training response majority licenses entitled directly premiums purchase hardware building everyone positive ordinary partners enormous facebook networks employer although controls designed practice goodwill whatever netbeans received internet asterisk magnolia starving choosing examples consider guardian stallman copyleft included replaced economic changing ideology required security moreover factions continue attached yourself compiler programs products flagship instead mozilla however freedom support notably towards healthy general because society sincere funding systems another hostile helping neutral discord popular selling edition branded survive utility through nonfree succeed vibrant several legally silicon believe richard creator without created founder corrupt serious rapidly anymore ignored wolfssl creates classes complex windows running hampers seeking success greater willing promise unhappy phrases talking lawyers closest written reading produce against upright protect primary average dictate violate problem strings sticker authors contact forfeit becomes conveys between working library parties patents refuses pleases impact around access should resort tricks ircnow itself donors source forces affero profit redhat binary thanks others strong proven either during matter double kernel living rather remain credit little public allows plugin course domain valley mostly letter future effort spirit afford client richer cannot longer making sneaky result social entity anyone forced unjust tempts entire claims always drives coffee shirts solely giving impose almost enough ending attack trying escape damage wrongs follow lesser spends simply asking relies agenda became income stores steers really google donate owning ethics doesn these users their voice share those ideal money times where break there truly means today cloud sense linux early power wants often first gives flaws saass makes false offer indie 2000s ought alike small order harms steal avoid apart which price shift model doing trend https caste reuse mysql ifend sworn might would unite safer hands naive never flash taken enemy forms knows third write party labor house earns hobby games using built large bread moved admit court known about takes links email that love must have this poor even they from same rely code apps only fees away bots many yoke fits been look pays hurl used cddl also says bind sure sake html life when feel slap were goal tips dvds zero evil find vast nice mugs live such keep dual agpl suse lots note high both care need lack chat deny huge into weak zfs gnu www who new ibm 3rd ios few faq fsf too isn set due him sue get far buy cms may add was gpg 90s gcc qt 7
+Bsd.Hope:1730627640:  : applications advancement inspiration understand contribute advocates ecosystem ownership encourage incentive surrender permanent yesterday software studying provides tomorrow powerful property scolding prospect features install himself because promise demands writing replace declare freedom natural license society newbies learns writes little rights forced equals offers source better number users happy their today title class which there those twice hours years spent among about have give hope with them make will they work need code many more than mere did you pay get gpl how bsd can has ago ten was who no up if
+Bsd.Labor:1730627640:  : encouragement consideration organization intellectual contributing independent flourishing encouraged experience diligently percentage productive enterprise ecosystems contribute proportion community condition important something configure whatever software property continue positive majority installs industry happened argument building features requests deserves improves newbies without network healthy destroy labored another existed himself assured wanting enjoyed survive profits whether silicon society enjoys fruits should coding valley begins perish higher learns ensure before entire source around others users small finds which place seize never ifend first built could great world their theft comes merit shall trick while large would opens coded force years after gives false hires coder wrong must eras than same that idle have this free when from soon more much will time stop turn each good only hard toil then fair safe rest help base bugs rare upon part sell hope just can and has way who bsd you own old few rot had let one any don
+License.Discriminatory:1730627640:  : discriminatory understanding republicanism independence preservation conclusively plausibility institutions inalienable declaration governments criticising fundamental constitutes familiarize disciplined battlements especially instituted principles accustomed yourselves everywhere resumption hypocrites prescribes altogether injustice violation sincerity despotism liberties different insisting preparing therefore happiness bristling according elevation influence monstrous superior question whatever governed interest relation property heritage yourself subjects deprives argument american deriving frowning steamers strength reliance stronger struggle liberty without consent however license planted cunning trample governs destroy gallant bondage against defense tyranny another himself opposed bulwark degrade equally because amongst leading derived evident friends created endowed creator certain ancient pursuit freedom slavery exactly example morally enables enemies around become tyrant itself truths rights coasts secure spirit powers quoted turned anchor prizes causes forces really master chains spread action bosoms enough weaker making merely genius people wealth poorer snatch richer having these first doors their world those false seeds sheet taunt which doubt lands taken civil prove users rules voice rises total tanto allow tends faith limbs ifend whose mean than many meet into open good from have this care them that much time show life same only will lost then says hold they guns wear love well make army fair but may god has sea set why now aim — fit of by
+ClawsMail.RecentChanges:1730627640:  : recentchanges miniontoby clawsmail connect march 2021 29 at 08 42 am
+Jrmu.Rmsboycott:1730627640:  : representatives reconciliation libertyordeath organizations disagreement archenemies foundation occupation implements submission monopolies signatures rmsboycott dissenters opposition marketing corporate community threatens liberties francisco tolerance licenses preserve attacked blockade software boycotts question stallman almighty features clanking dissents painful digital prepare silicon slavery tyrants nothing methods against freedom hostile retreat richard chains source forged course infamy resort rights attach gained forbid intend valley starve letter always enough resist stands repeat rfloat appeal cancel others github truth meant claim whole price worst sweet these money their there which heard title mercy marks https strip width march 400px they show must this dear live take look code user them will mobs same tech wish 2021 that have been give what uses open eyes less long into know jrmu than love from left work shut any was may but san god day see you say jpg ban big 23 by if
+Jrmu.Libertyordeath:1730627640:  : representatives libertyordeath reconciliation organizations disagreement archenemies dissenters monopolies submission signatures implements occupation opposition foundation community marketing threatens francisco liberties tolerance corporate blockade attacked boycotts preserve software question dissents licenses stallman clanking almighty features painful nothing silicon tyrants digital prepare methods freedom slavery against hostile retreat richard chains source forged course infamy resort rights attach gained forbid intend valley starve letter always enough resist stands repeat rfloat appeal cancel others github truth meant claim whole price worst sweet these money their there which heard title mercy marks https strip width march 400px they show must this dear live take look code user them will mobs same tech wish 2021 that have been give what uses open eyes less long into know jrmu than love from left work shut any was rms may but san god day see you say jpg ban big 23 by if
+Freedom.Libertyordeath:1730627640:  : representatives libertyordeath reconciliation organizations disagreement archenemies occupation dissenters submission opposition signatures foundation monopolies implements community francisco liberties threatens corporate marketing tolerance boycotts attacked question stallman blockade preserve licenses dissents software almighty clanking features digital methods slavery silicon retreat prepare freedom painful against nothing tyrants richard hostile rfloat course attach letter others source starve intend valley github resist repeat appeal enough resort rights chains forged cancel forbid stands gained always infamy which heard truth these meant money there claim whole worst sweet price their title marks 400px strip mercy width march https this open user what been have that tech them same will take look mobs dear they code must live wish 2021 work left from know love less shut into long give uses eyes than show day but san was rms may god you any jpg ban big see say 23 by if
+Iked.Android:1730627640: Fdroid.Install Iked.Configure Openhttpd.Configure Vpn.Myipaddress : strongswanconnectionrequest strongswanaddvpnprofile strongswanrunbackground strongswanvpnprofile strongswanconnected strongswanimportcrt strongswancacrt optimizations automatically successfully certificate myipaddress afterwards installing configure concealed recommend openhttpd unchecked username provider password imported download openiked properly packages specific example replace setting details android correct disable battery running 400pxg select fdroid button attach bottom should status actual server mobile client verify useful width allow right title ikev2 https with your sure make want onto come that test from save then next need will been type left this fill org app top tap can jpg see has may are etc eap for ok we up
+Bgpd.Configure:1730627640:  : implementation configuring exchanging configure machines ordinary protocol openbgpd speaking version routers gateway systems routes border allows other title https with used free org is of as be 4
+Minetest.Serverlocations:1730627640:  : arcadeemulationserver pineapple_server_3 serverlocations minetestserver executable minetest4 important terminals commited aes_game directly updating command changes stored screen gitlab should worlds pulled https files found games other home edit they repo that from conf must have tmux all pwd are you see can run bin use not be do of is
+Ircnowd.Ircnowd:1730627640:  : functionality automatically permissively customizable reliability dynamically exemptions minimalist connection protection restricted administer exhaustion understand additional scriptable philosophy optionally netsplits platforms configure obscenity scripting interface open_nsfw developed defenses portbale proposed licensed software portable cloaking topology millions allowing irccloud monitor network disable support improve attempt ircnowd changes aliases forever forked closed server defcon highly ngircd client attack uptime cannot filter enable should remain during buffer ilines issues handle github yahoo https users flood proxy loops until given block elist since title teams limit which goals scale build aims mode spam join part free with will easy ends code this from that keep have was the fix ssl new gpl com be cs by 26 1
+Irc.Federation:1730627640: Relay.Relay Census.Census : subnetworks centralized federation redundancy namespace fediverse together services username complete distinct maximize ensuring approach federate policies channel example control prevent similar freedom relayed affect unique should matrix domain census better these while email title does each will true have also able team bans this that form from take then irc its own now run and not set can of if
+Relay.Relay:1730627640:  : configuration permissively connections interpreted eventually permission federation namespace languages requiring scripting inspired supports messages suckless networks username sensible operator features together bringing licensed defaults special relayed filters inspect channel without number server appear create relays unique should unites modify ircnow simple client title allow yahoo union https tools that pure core only nsfw each will open form sic org any com and c9x of by
+Botnow.Botnow:1730627640: Category.Bots !Bots Category.Perl !Perl : configuration registration interpreted replacement simplified compatible catagories javascript versatile databases including accounts assemble metadata features language multiple networks existing password bouncers designed messages category eggdrop modules request entries connect storage provide written prevent assign botnow easily change client across botnet python title shell email files track store login reset using relay abuse vpns into perl easy bots info user help load rdns with flat tcls and www irc bnc any web for be
+Openbsd.Xfce:1730627640:  : startxfce4 underneath programs xsession geometry xconsole restart comment openbsd desktop command systems xinitrc editing pkg_add xenodm launch xclock attach iconic rcctl false local ifend xterm these 80x24 lines 50x50 work does seem doas this then echo with some nice fvwm note etc png x11 out for usr but bin
+Minetest.Addingarenas:1730627640:  : arcadeemulationserver pineapple_server_3 server_manager mtschemcreate tremendously mtschemplace installation addingarenas appropriate unescapable irreparably immediately completely coordinate commercial schematic decorated minetest4 locations worldedit uploading subfolder arena_lib replacing terraform computer practice business anything suitable indicate whatever minigame updating familiar download surround settings license restart careful barrier offline minimum correct backups command corrupt double readme author points gitlab schems player enable either before triple tricky easily access choose should worlds please places reason things making where local first enter nodes wrong thick reset https gives speed other check theme there order worng crash spot pos1 then need name that home sure also make away well find pull near like pos2 have your mess copy with maps very puts some does will when tell area menu easy type from made file just save repo look best want use get can but btw see why now has not non 200 log one to is if cd x z
+Minetest.Texturestyle:1730627640:  : skins_collectible texturestyle typically zughy_32 humaniod possible minetest default palette palate server lospec making colors should found these start needs https with your edit when only make list for and use com are we to if
+Bouncer.Vision:1730627640:  : applications registered abcde12345 connected userguide username defaults personal prefered password network example opening bouncer address details primary message servers disable replace change vision select attach should ircnow saying source client enable secure 31337 state check quote which https haiku setup after click your like then with look beos port home menu want john nick fill have type docs html for znc not and get org yet png www new top if
+Openbsd.Fdisk:1730627640:  : partitioning differently installing optionally disklabel redirect familiar openbsd default utility consult because layout change little twice fstab https these fdisk linux usage pages title work they read with when used org man for are and of to 8 5
+Marketing.Rules:1730627640:  : advertising disagreeing suggestions respectful recipients harassment strangers marketing retaliate automated software channel private message educate ethical doxing polite people random title rules evade cease stop tell once don ops job our for you ban no be
+HostServ.Rules:1730627640:  : pornographic infringement copyright involving freenode anything cracking rejected existing gambling hostmask hostserv illegal slander mention related example request revoked follow domain vhosts rules above speak opers libel drugs level have like ddos spam that time with join help does top the can for com net not org don
+Rcd.Configure:1730627640: Hopm.Install : “services” configuration automatically daemon_flags redirecting reconfigure priviledged pkg_scripts comprising installed arguments directory specified following execution debugging restarted mangement framework shutdown variable programs responds forcibly processs packages creating defaults contains commands continue whatever function “no” reversed perform setting actions running already follows options affects openbsd prevent calling control display disable explain booting stopped utility timeout enabled failed rc_cmd stderr stdout system second called reload simple return launch should create unless editor status change during order shell rcctl other first local value refer equal usual group title topic names shows print check lauch chmod which allow hopm also then line more user this into here doas file base will subr with root save give nano code path home they from tell such each only used null its add etc now ksh are bin rcd can dev not may by of be we 0 1
+DNS.DMARC:1730627640:  : misconfiguration troubleshooting configurations authentication authenticated simpletable quarantines configuring information conformance recommended strictness postmaster scientists configured subdomains everything whatsoever suspicious simplified semicolons pretending understand specified detecting requested forwarded indicates sometimes aggregate improving filtering uppercase positives quotation reporting receivers gradually perfectly separated delivery sortable phishing spammers rejected properly feedback software validate forensic provides optional resource accepted increase official overview required stopping mistakes messages address example upgrade headers meaning warning records version relaxed current matches reports default replace between special support percent website enforce senders testing however helpful because prevent subject reading mailing rejects applies zytrax issues emails inside failed policy mailto checks dmarc1 errors better rocket slowly should handle reduce border advice server useful either _dmarc marked having permit adkim above given value title width makes entry loose allow spoof class first where there lists store fails avoid types marks which pairs share works other helps being doesn rates fraud based howto extra false using quick https books guide want your from both that none tell aspf zone real lose used made just uses note user many need fake also html this sent good much will with only more must come name else same sure smtp when may rua but bad has out new way get txt 100 dns ch9 www pct ruf org why put key two tag lot by 20
+Freedom.Destiny:1730627640:  : exceptionalism opportunity government ourselves equality yourself internet attitude birthday everyone educated destiny limited liberty network freedom netizen startup worship welcome before exiles mother global source beacon highly begin proud power again dream first users press rules right code have last best land hand hope new own all of to
+Znc.I18n:1730627640:  : clearbufferonmsg notify_connect modules_online stripcontrols route_replies controlpanel clientnotify samplewebapi lc_messages missingmotd flooddetach simple_away listsockets directories disconkick buffextras autoattach kickrejoin block_motd admindebug stickychan afterwards configured autoreply awaystore modpython identfile chansaver autovoice ctcpflood following cyrusauth recompile blockuser autocycle bouncedcc fail2ban certauth send_raw savebuff perleval nickserv keepnick adminlog webadmin imapauth lastseen creating required perform modperl gettext support runtime pkg_add locale pyeval autoop create chroot source should bg_bg share notes pt_br es_es nl_nl ru_ru crypt fr_fr el_gr pl_pl it_it id_id de_de shell watch mkdir while cmake build tools alias home sasl i18n sure then with doas path usr znc say you cd
+Openssl.Check:1730627640:  : certificate showcerts fullchain matching checksum s_client request example openssl freeirc private connect instead public again noout dates x509 text need will null only have them then 6697 use dev for org and key pem rsa com you md5 not don of to 2
+Ircnow.Pioneer:1730627640: Freedom.Freedom Vps.Vps Minutemin.Bootcamp Shell.Shell Unix101.Unix101 Ircnow.Servers Ircnow.Goals Ircnow.Minutemin : requirements applications independence oregontrail billionaire supporting controlled contribute monopolies nameserver marketing minutemin volunteer corporate homestead configure webserver material platform monopoly verified purchase pioneers learning proceeds business tutorial personal bootcamp articles bouncers firewall security services includes offering sysadmin network private openbsd startup project digital unix101 welcome against servers sharing created account virtual upgrade freedom minimum contact regular towards website domain ircnow elites custom months charge become answer social center course attach finish rigged worked friend mutual method future rfloat system shell goals media share write staff refer below apply three email using title width users train their today there dream claim equal 50pct build keep your ceos blog made bots this 5hrs tech with code into week life file they want send over join what find 5usd help will get can and vps who don png any how run own put org was tls new set vpn lan by 4
+UsersCategoryMirrory.Pioneer:1730627640: Freedom.Freedom Vps.Vps Minutemin.Bootcamp Ircnow.Servers Ircnow.Goals Ircnow.Minutemin : userscategorymirrory independence applications verification oregontrail undeveloped billionaire supporting nameserver monopolies controlled webserver minutemin configure homestead volunteer corporate marketing portfolio purchase offering platform firewall sysadmin proceeds business pioneers referral monopoly security services frontier bootcamp personal includes bouncers freedom provide trusted welcome startup methods require network digital virtual sharing against created private servers towards upgrade notitle domains website rigged rfloat social ircnow charge center elites attach course system answer friend resume custom future staff today claim photo weeks dream goals month 50pct apply email learn media width there build acres train notoc equal their four send help will life over your with join they bots blog file tech show from keep ceos what want made this 5usd vps png don get 200 who can own org run set are and was new lan vpn tls by 4
+UsersCategoryMirrory.IRCFreeHomesteadVPS:1730627640: Freedom.Freedom Vps.Vps Minutemin.Bootcamp Ircnow.Servers Ircnow.Goals Ircnow.Minutemin : userscategorymirrory ircfreehomesteadvps verification applications independence oregontrail billionaire nameserver monopolies willamette supporting controlled minutemin marketing configure webserver corporate volunteer portfolio firewall purchase referral bootcamp services bouncers includes security personal business platform pioneers monopoly sysadmin proceeds offering freedom website network digital towards montana private virtual startup upgrade created servers provide trusted methods sharing welcome require against rigged system ircnow elites answer social charge center course custom domain future resume friend rfloat valley attach learn claim today apply 50pct dream width weeks their staff email month media photo train title build goals there equal notoc help your show want with join blog bots they from file tech four over what ceos keep send 5usd this life made own get who can org run and png tls set jpg vpn new was are don lan by 4
+Ircnow.PioneerTldr:1730627640: Vps.Vps Minutemin.Bootcamp Shell.Shell Ircnow.Servers Ircnow.Goals Ircnow.Minutemin : verification registration anonymously oregontrail independent pioneertldr supporting subdomains minutemin including marketing homestead portfolio volunteer webserver personal referral purchase proceeds included tutorial firewall bootcamp internet sysadmin qualify servers trusted network website provide unix101 upgrade account sharing virtual private openbsd methods towards course ircnow become finish custom browse friend social rfloat create attach resume charge staff goals shell weeks month media photo title apply width today learn claim 50pct price with free must four file bots 5usd show from your mail what join chat over blog keep apps vps the and run own for can png who vpn set not get of by 4
+ZNC.Support:1730627640: Bouncer.Bouncer Ircnow.Networks Ircnow.Servers Bouncer.MIRC Debate.Zncflaws Openbsd.Police Openbsd.Ilines Openbsd.Phishing : misconfiguration notify_connect possibilities intentionally automatically instructions controlpanel successfully troubleshoot listnetworks disconnected information understands punctuation jumpnetwork permanently alternative registering immediately advertising registered connecting abcde12345 incredibly guest58404 personally downloaded connection addnetwork configured requesting addserver correctly reconnect carefully different available replacing satisfied important following passwords verifying incorrect currently confusing blockuser extremely mechanism messages username possible settings deleting zncflaws webpanel undernet identify nickname yourself nickserv specific remember shortest accounts problems connects security chatting terrible channels everyone chanserv properly quakenet phishing retrieve familiar services freenode official teammate secondly sysadmin mistakes ysername bindhost approach requires whenever probably example because bouncer replace clients friends altnick himself welcome prevent version support botname already captcha newnick happens spelled loadmod include default helping jumping closing perform follows newpass claimed privmsg started getting address history servers actions openbsd besides warning confirm without changes sending logging private snoonet forever signed emails debate ircnow number caught status admins flawed thanks ilines folder logged delete tested unless nobody police reason either typing should double please itself single powers module better simply simple likely forgot actual before guides anyway record glined cannot ircnet notice libera cserve smiley dalnet entire vhosts errors cherry assume squery always around ensure create common banned method ngircd report glines caused unable accept wants check tried mango which saves chats unban first store users could plain ircds field fruit https exist there wrong space other rizon waste abuse would doesn reset sorry staff after where share these login extra tries again later typed right efnet title reply pages mouth about until major tells known taken types index they make real just hold then hard have also will need time puts must from same into sent this each copy wiki what note plum best pear some mirc 1337 that more link been easy keep mode over love auth tons them part most oftc code done idea upon logs join give sasl look ctcp disk says many else didn turn true try but how see 235 why dns php bnc ask day has bcc thx yes may yet job bye fix 21 22 54 28 27 29 24 20 ip 30 25 57 01 41 my 50 31
+Planetofnix.RecentChanges:1730627640:  : recentchanges planetofnix hardware 19t20 2024 jrmu 03z 05 45 by
+Ksh.Redirection:1730627640:  : stackoverflow redirection permissions questions location current config output doesn using https would shell 82256 write link sudo this file have more info dont note done your just doas echo line that work user root ksh for non com etc see how if by to so
+Texlive.Install:1730627640:  : texlive_texmf insecure install libexec creates default pkg_add helper launch daemon setuid remove system binary 2020p1 false chmod local makes endif _dbus latex doas this full 0750 rwxr root used rwsr apr usr bit the lha 12 36 19 9k 73 to so by we
+Eggdrop.Nickserv:1730627640:  : init_server nickserv identify password putquick eggdrop privmsg putserv botnick global type evnt mode proc bind with ws to
+Bouncer.WinIRC:1730627640:  : connection rymate1234 password abc1234 network replace section example bouncer picture windows servers create ircnow secure enable button winirc attach client higher github manage would shown click 31337 first user your with http port john then left save like and uwp bnc for top set org png new of is if be 10
+Fdroid.Install:1730627640:  : automatically repositories respects internet software download settings licensed contains browser install warning allowed unknown require privacy android corner attach source toggle unlike update chrome access agplv3 search bottom fdroid google store arrow first right warns loads phone title under visit https will this when from then your note left back open icon apps that user only main play free png tap its org web see apk for top ok if
+Sylpheed.Connect:1730627640:  : authentication configuration information following sylpheed personal password account address replace display connect confirm passing systems rebuild windows startup install helpful choose client create folder option attach ircnow enable sraoss before server update please email debug right click enter https first cert your user imap open smtp time pack done html type news from work need like tree unix free will with name both this sure made also make have and png may not org ssl are see can put if id jp to 4
+ConnectBot.Connect:1730627640: Fdroid.Install Ircnow.SSHFingerprints ConnectBot.Keys : sshfingerprints automatically convenience connectbot connection registered connected reconnect available username although protocol software followed password sysadmin outdated security hostname created correct warning install success details example contact respect attach server toggle ircnow corner fields please screen bottom google better fdroid double login learn first arrow match check hosts never fruit title en_us store https right three play edit they when will port type data made fill just help your icon plus free then does open keys from with stay also this back left sign apps note tap and nor for org how png com top ask yes if by hl
+Web101.Web101:1730627640:  : description oddprotocol currently craziness progress tutorial working welcome website making web101 about html4 first with css2 your host http this org and are the wip
+JuiceSSH.Connect:1730627640: Shell.Shell : hostverification copytoclipboard authorizedkeys connections alternative identities juicessh password identity consider software tutorial details private sonelli attach google manage update logged public export please source import share shell title https store using play free open note apps with main png tap com new is
+Termius.Connect:1730627640: Shell.Shell Ircnow.SSHFingerprints : sshfingerprints alternative id549039908 connection continue respects username password consider software sysadmin terminal termius account instead without replace address welcome console install contact warning correct ircnow server attach corner please cancel verify double create wizard source rights match guide shell quick learn apple first https check using title trial fruit save type port will your open real fill made free when host they that done note help then apps more once tap png and org for ask top is
+MailWindows.Connect:1730627640:  : authentication windowsmail mailwindows information otherwise advanced password incoming username outgoing settings creation accounts internet requires address connect section sending desired choose server ircnow enable attach select needed wizard please manage follow bottom point email imap4 setup there title will same left this show icon smtp type pick fill done with your have any and are ssl png put org see if
+Bouncer.Konversation:1730627640:  : konversation connection following password username network bouncer replace example written account ircnow abc123 server create enable secure stated would email 31337 your john port with want what for and set bnc org if is be to
+EmailTray.Connect:1730627640:  : emailtary emailtray password creating address account section already welcome greeted connect windows screen select choose please client attach first login click mouse your then free menu main done left have will move here time new are and png non put for not top is if of be by it
+Debate.Wikistyle:1730627640:  : replaceable_text misrepresenting abbreviations consequences successfully disagreement opinionated indentation subheadings potentially unnecessary codeblocks difficulty personally horizontal formatting described elsewhere parameter uncomment paragraph character beginning repeating excessive structure wikistyle category sentence maintain emphasis material removing lawsuits indicate disabled defaults academic multiple cosmetic uncommon separate sections evidence specific replaced install content feature meaning without servers instead command condone clients already example someone options passive another package pkg_add writing article english concise talking falsely running belong topics quotes purely begins notion active defend markup debate easier strong remove should domain create public tables define guides jargon better simple update actual either convey ngircd turned right spend avoid write based about model makes level there never voice pages track those start value rules ports wrong colon using front going slang named first line that task this want when show semi link tell same will doas keep each case have than from what into time much used need tags like mind user does 6697 type sort 6667 just fqdn nice look them only word are 192 but 168 you him own any set can put new was too tcl tcp now of by
+9.Fonts:1730627640:  : dejavusansbd recommended terminal unicode located virtual bigger lucida night fonts mode pelm make find all for lib the rio bit are 28 18 to bf ls vt 9
+9.Ideas:1730627640:  : discrimination delphinusdnsd activitypubfs contributions accessibility compatibility prepositions applications filesystems ghostscript dynamically repository searchable conversion downloaded protection impossible gutenberg operating plan9port generated different wikipedia overload binaries opensuse platform geminifs freedoms prebuilt licenses firewall commands tolerant priority keyboard existing obsolete matrixfs gopherfs librivox separate software survival licensed drawterm respect whether inferno freebsd default support console android instead manager working against servers replace package provide perhaps aladdin beliefs grammar drivers install plan101 netbsd course nntpfs xmppfs 9front bitrot debian serial create freely levels psybnc placed pirata uptime books every linux ircfs check rssfs ideas write goals https allow pipes basic avoid based shell users skill blind verbs guide after slows crawl fork apps most with wifi unix just type easy make like must only long from rfcs bsds sure keep tech date four vncs x11 non dev gpl any not get web cgi may ios 9fs org vcs bug fix by
+Letsencrypt.RecentChanges:1730627640:  : recentchanges letsencrypt counting expired command 19t03 certs 2023 xfnw 41z add for 46 by
+Cvs.Intro:1730627640: Ircnow.SSHFingerprints : sshfingerprints troubleshooting automatically permissions interactive releasetag repository committing containing eventually afterwards connection directory vendortag committed transform somewhere publishes passwords described writeable necessary checkout reponame filename replaced existing username shortcut argument checking provided commands specific received yyyymmdd hostname properly consider imported original download folders located cvsroot aborted working waiting setting message because running warning project checked already changes happens example current anoncvs ircnowd specify version profile tracked becomes related updates produce usually however simply remove source inside delete should enough author bottom export simple create module server broken signal cannot denied either chroot result safely verify editor adding single month first helps files group saved named owned doesn error needs added since start works shell known given local might intro input until using avoid above wrong means leave code with from will must into make note your path real have once this init that like type then copy want text long goes pipe took take send keys find ways also else list them when year been time echo omit just only more used none each home new any are day has var its was may see try but don org fix by cd
+Synapse.Install:1730627640:  : start_synapse recommended homeserver setuptools activate generate firewall executed firstly python3 command adduser install upgrade options pkg_add profile because account element connect synctl export matrix config domain report create likely fields passwd groups called change expire share place alias certs going there login https right stats using never works class mvenv mkdir shell local which gecos sure make edit yaml such also open fail 8448 your then path have 1010 name only pip3 when just test host want into need this doas fill app try usr don bin yes uid ksh ssh ssl tls cd if no by my 2
+Ircnow.Linux:1730627640: Freedom.Freedom Vps.Vps Shell.Shell Ircnow.Servers Ircnow.Goals Ircnow.Minutemin : configuration installation documenting billionaire participate oregontrail supporting controlled contribute hypervisor occasional monopolies homestead operating portfolio community corporate minutemin volunteer anonymous marketing supported planning business offering verified favorite purchase proceeds platform software accepted machines personal monopoly tutorial provide servers network unix101 account startup against welcome digital freedom openbsd created private running towards payment website virtual upgrade rigged ircnow attach elites future inside system charge ensure answer rfloat center option method source resume mutual friend finish social refer there goals staff build 50pct below shell media photo admin using today dream apply claim equal users email weeks month title width guest trial usage linux your help find send over join test need call with blog made that keep able love 5usd four this ceos tech code life one vps was any can get org who add and png new how vmm don set by 4
+Synapse.RecentChanges:1730627640:  : recentchanges miniontoby synapse install october created 2021 12 49 pm
+Cvs.Cvsweb:1730627640: Openhttpd.Perl : cvsrepositories configuration installation directories afterwards repository containing openrsync openhttpd challenge location chrooted example cvsroot fastcgi rcsdiff modules assumes request rewrite pkg_add crontab readmes running cvsweb delete commit should server listen attach inside strip daily local share coded known added array match other mkdir which first chown uname acme this path each perl port file hard will well doas then need user rlog make sure bin etc end can usr and txt doc set for var www you of up be cp 80 2
+Ircnow.Milestones:1730627640:  : representatives brainstorming transferring constitution meshnetwork recruitment declaration planetofnix transferred oddprotocol alternative milestones ircforever tournament publishing commercial developers thunderirc sustaining scientific registered bsdforall ownership nastycode september teammates lecturify operating shelltalk welcoming programs archives software accounts ircology networks training research netizens creating january article mailing finance freeirc offered october systems servers cloud9p domains drafted issued future public ircnow course august formed ircfun define jujube number inter9 begin repos break vpses first chess march elect teams 2024 unix 2023 list 2020 2022 yyyy self even 2019 open host 2021 fork 2018 into july june sale and vpn set nov mmm org cvs may git the up
+KISSmo.Install:1730627640:  : websiteyouwant oddprotocol public_html autoindex directory openhttpd specific location actually commands youreweb sitename running replace yourweb archive install looking desired follow kissmo ncsite simple gitlab paste nginx https about using steps where hedho admin unzip under alias conf that this test will need know home 7777 find main then edit wget line with php for how org txt put any can www var etc add tld be cd go 60
+KISSmo.RecentChanges:1730627640:  : recentchanges download october install monaco kissmo about 2021 18 at 09 by am 44 53 58 52
+KISSmo.About:1730627640:  : configuration repositories instructions recommended oddprotocol public_html contribute autoindex documents explained openhttpd following sensitive copyright directory referring revision extended features previews included terminal browsers download software flatfile location specific aexplain released requires database install archive confing openbsd running support anykind systems version upgrade partial painful replace another needed kissmo domain search monaco gitlab trying pieces please should stupid simple source mobile device nobody simply apache aswell added under nginx alias visit howto links based would click above files paste about guide setup works admin sites using init 2021 that name make been test this home with code keep such lynx here help will soon list what and org new you txt duo for web 1st php has why may css 17
+Xdefaults.RecentChanges:1730627640:  : recentchanges xdefaults configure october 2021 jrmu 23 at 40 pm by
+KISSmo.Download:1730627640:  : repository developer maintaned download official gitlab kissmo monaco hedho https paste com the at by
+KISSmo.KISSmo:1730627640: KISSmo.About KISSmo.Install KISSmo.Download KISSmo.KISSmo : repositories copyright download requires database flatfile released install anykind kissmo system stupid monaco source gitlab simple about paste click visit based keep home here 2021 init page wiki may 1st 17 no of
+Fvwm.RecentChanges:1730627640:  : recentchanges configure october fvwm 2021 jrmu 18 at 10 am by
+Lua.Minetest-1:1730627640:  : troubleshooting charachters installing beginning following different installed important variables questions functions prologue minetest expected versions contents complete beginner tutorial intenger possible argument programm separate without similar progamm command pkg_add openbsd systems console working correct deleted decimal integer depends numbers because strings already debian spaces output basics ircnow define choose forgot create folder floats should values coding source engine forums newbie print index learn maybe other named first meant which think https found world hello table types there thema names write where stand thats start voxel linux based never need have this will lets game must then more lua5 like near main both your part wiki save data path want bash same only nice most they make show such easy file html info know can are one but not get two php set yes fix www sea why mod don run try met who ask say apt api we 12 34 ok of
+Lua.RecentChanges:1730627640:  : recentchanges debiankaios minetest october 2021 lua 24 at 10 30 am by
+TigerVNC.SSH:1730627640:  : number_after_the_colon putty_change_settings port_of_your_choosing putty_ssh_tunnels applications remote_port destination local_port connection connecting represents xauthority localhost uncrypted specified vncserver selected starting xstartup creating tigervnc example warning default program buttons desktop create attach source client saying config script using radio first since exist click aware would still user here this file 5900 will home when does type 5901 then case auto show icon keep left may png isn add and bar log com new not
+Vpn.OpenIKED:1730627640:  : vpn_user_password vpn_user_name configuration certificates client_pool client_dns remote_gw interface installed parameter different something hostname external ifconfig whatever resolves user_vpn provides openiked probably username passive enabled depends packets caching example clients connect replace address dynamic writing running openbsd command ruleset machine virtual create ircnow public should verify picked vpn_id allows ikectl server tagged filter ext_if isakmp reload mschap domain value ikev2 proto pfctl point local where roadw quick match valid ipsec these being first macro srcid into inet enc0 with this port doas sure line need will crls that your from vio0 make find type must have peer like note upon new etc org any one off esp 203 113 for can 509 pki crt eap nat out get tcp udp rsa key 127 rdr 10 53 24 we
+Emacs.Emacs:1730627640:  : distributions comprehensive repositories customizable positioning terminology replacement application interactive understand extensible navigation occurrence character oldstring newstring operating functions including workspace keyboards currently backwards beginning progress filename accessed pressing document bindings followed familiar confirms location remember tutorial continue included quitting starting selected probably recently powerful popular however pasting control cutting located install command correct variant regions another advance editing solaris freebsd pkg_add openbsd forward loading display systems several windows become repeat screen cursor killed refers middle search within number editor aborts resave naming netbsd clears create saving starts prompt unique copied enter saved emacs topic about right files thing write based above given after paste first cycle skips dance lines where moves which cheat linux there macos comes built cases words means later sheet click ctrl page copy text yank meta last down help left most time next type thru once easy goto same exit when mark then this each that undo real many been have will also some doas keys runs you end alt esc are ‍ use one spc gnu set can its see yet 999 up of nw if 20 by
+Ircnow.Settler:1730627640: Freedom.Freedom Vps.Vps Shell.Shell Ircnow.Servers Openbsd.Vmmuser Vmm.Configure Vmm.DebianIso Vmm.DevuanIso Vmm.UbuntuIso Minutemin.Bootcamp Ircnow.Goals Ircnow.Minutemin : responsibilities configuration installation experimental recommended billionaire participate oregontrail hypervisor supporting guarantees occasional contribute configured monopolies controlled debianiso ubuntuiso operating minutemin anonymous corporate volunteer community supported devuaniso homestead portfolio marketing personal bootcamp favorite verified training monopoly platform machines tutorial document purchase business accepted proceeds familiar planning offering software warning website openbsd provide freedom digital against network created welcome startup account unix101 servers payment settler vmmuser towards virtual upgrade running through private ircnow option finish ensure charge answer center rfloat future system rigged attach elites resume social claims guides friend mutual inside method purely source staff users shell month media weeks goals there learn using photo equal refer apply dream below email today admin title guest trial agree width build usage 50pct send test that help blog with tech this keep able your find must will 5usd over make code join read love ceos four made life need add can who any one get how and vps see new was don png org by 4
+Gnus.RecentChanges:1730627640:  : recentchanges connect 30t12 gnus 2024 49z mkf 04 31 by
+Ircnow.Opsofliberty:1730627640: Vps.Vps Minutemin.Bootcamp Ircnow.Goals Freedom.Freedom Shell.Shell Opsofliberty.Bootcamp Ircnow.Roadmap Ircnow.Finances : administration documentation opsofliberty experience commitment optionally marketing interview minutemin volunteer homestead improving progress bootcamp position finances sysadmin promoted customer training familiar internet support freedom servers minimum account friends improve request network willing roadmap mission trained ircnow become unpaid attach rfloat resume invite finish defend report duties reward hours shell goals learn staff seems after email track title needs users while ready their corps named elite apply 80pct width help with must unix hang real good your week team send sons oper this tech note vps are png and can for new add org out how cv if 5
+Almanack.Rewrite:1730627640: Almanack.Almanack CodeForce.Bootcamp Minutemin.Code Minutemin.Server Minutemin.Progress Medals.Intro Openbsd.Team Openbsd.Stable Openbsd.Testing : troubleshooting authoratative cryptography information networking minutemin codeforce languages security sysadmin progress transfer services bouncers almanack firewall bootcamp training signing caching testing desktop openbsd version control clients servers rewrite improve medals access stable issues civics relays guides honor intro solve other games ident team vpns file plan mail bots ssh tls web irc dns and tor of my 9
+Openbsd.Vipw:1730627640:  : different changed openbsd nologin example should class right check which there looks 1001 home this from sbin find vipw doas sure line with that like make znc not uid has but you may be to
+Sandbox.RecentChanges:1730627640:  : recentchanges dodocrypto november sandbox 0dev 2021 11 at 01 45 am by
+Xmpp.Xmpp:1730627640: Openbsd.Prosody Openbsd.Biboumi Adium.Connect Aparte.Connect Astrachat.Connect Ayttm.Connect Barnowl.Connect BeagleIM.Connect Bitlbee.Connect CenterIM.Connect ChatSecure.Connect Conversations.Connect Coccinella.Connect Dino.Connect Freetalk.Connect Finch.Connect Gajim.Connect Gajim.Biboumi Instantbird.Connect Kaidan.Connect Kopete.Connect Kontalk.Connect Mcabber.Connect MirandaIM.Connect Monal.Connect Movim.Connect OneTeam.Connect Pade.Connect Pandion.Connect Pidgin.Connect Poezio.Connect Profanity.Connect Psi.Connect Siskin.Connect Spark.Connect StorkIM.Connect Swift.Connect UWPX.Connect Wime.Connect Xabber.Connect Yaxim.Connect : conversations planetofnix instantbird simpletable chatsecure coccinella profanity astrachat mirandaim lecturify available messaging emulation standard sortable software freetalk platform centerim accounts beagleim provides connect mcabber biboumi kontalk bitlbee barnowl openbsd prosody storkim pandion oneteam message license android windows planned syncing devices support running gateway poezio xabber cygwin pidgin almost agplv3 aparte ircnow siskin across server charge border kaidan kopete bridge ayttm adium gplv2 finch gajim yaxim swift class movim every staff works monal width linux spark title dino uwpx pade wime xmpp with real that time from name wine 100 mac ios ✓ psi com org see web mit
+Gajim.Connect:1730627640: OMEMO.Intro PGP.Intro Xmpp.Xmpp : createaccount accountadded encryption includes password username profiles history openpgp updates welcome support friends connect servers example ircnow please signup offers attach button choose videos client source photos status allows click gajim where share https omemo intro this that then xmpp fill your also free with asks type chat list png and for org
+Unix.History:1730627640: Ircnow.Explorer : implementation brainstorming redistributed installation universities programmable architecture distributing improvements independence unix_history distribution institutions professional proprietary researchers innovations performance photocopies immediately coincidence development involvement educational peripherals portability philosophy commentary university encouraged envisioned california particular understand customized experiment throughout bootlegged components contribute previously commercial compatible references consulting determined simplified filesystem discovered networking accessible innovative circulated personally beginnings anticipate available pipelines meanwhile published succeeded operating witnessed community compilers telephony contained stringing computing manifesto essential continued completed achieving princeton languages tanenbaum wikipedia forbidden software computer together movement designed assembly emulated berkeley restrict teaching explorer training academia resisted purposes purchase suppress programs existing original creators generous invented released students powerful targeted possible upcoming exceeded academic stallman becoming creating features attempts included although provided internet licensed approach maintain business userland formally hardware torvalds uploaded received platform involved quickly decades designs without missing changes freedom created version authors steeped trivial another edition systems clearly because porting richard written control editors allowed smaller lawyers noticed success outside bundled kernels netnews neglect complex conduct uniform fertile related decided triumph diagram perfect popular combine however legally simpler writing finally choices defined harmony heights becomes ignores special streams became curses pillar thanks modify benign famous shells always result source usenet easier ideals itself funded public domain clones impact freely usenix ground shared making screen entire groups merely obtain traced during longer ircnow script called openly extend widely either deeply others better worked nature ported backed stated github warsus remove unlike bourne highly around virtue carry began sixth world lions users write often their terms study first swing minix 1990s tried clamp which could ought still where years right parts works fifty tapes would these wrote added linux place emacs linus title court taken 1970s stack novel roots there given tools birth known level fully match reuse owned https meant order from labs even text such 2020 bell bill code 1977 1984 cost time 1980 been next were easy this that 1981 made 1988 when many 1978 csrg down spot what born make fact went 1991 have fork most plan john 100x less your size andy 1975 they read team book grow same none them 1987 away lyon used duke ibm was pcs had due org svg can bsd ftp gnu job 000 did iii 10x gcc mit tcp joy by v7 01
+Conversations.Connect:1730627640: OMEMO.Intro Fdroid.Install Xmpp.Xmpp : registernewaccount startconversation createnewaccount conversations publishavatar encryption password username provider software supports install welcome openpgp history connect include example servers android license created attach fdroid client device images ircnow domain choose omemo intro https files group gplv3 other rooms multi video share first makes also chat your xmpp easy must list next with skip free that sync been this then org tap png can has for own end see my 0 5
+Yaxim.Connect:1730627640: Fdroid.Install Xmpp.Xmpp : registration afterwards available messenger contacts complete password supports security overhead private install friends android include connect servers welcome another instant receive attach manage usable fdroid choose easily jabber images client yaxim first needs files https chats group from xmpp with name aims your fill then open lean send list can one org tap for png yet low www to of ok 4 0
+StorkIM.Connect:1730627640: Fdroid.Install Xmpp.Xmpp : createnewaccount usernamepassword registration lightweight encryption preferred contacts complete download register supports powerful example install servers storkim connect android sending domain attach fdroid ircnow client photos group omemo first https allow your xmpp next with then this chat fill free home list tap png for org see of
+StorkIM.RecentChanges:1730627640:  : recentchanges november storkim connect 2021 jrmu at 05 03 am by
+Adium.Connect:1730627640: Xmpp.Xmpp : registrationsuccessful createnewaccount notification editaccount integrates encryption translated assistant languages different available messaging register password contacts continue username zerobyte jabberid transfer congrats supports message servers example replace instant offline welcome connect service request easily attach center select ircnow domain status click adium error https macos guess setup xmpp open into fill free been much then file your that type with more pick menu from done hard for png and app can log bar see has add otr im ok 27
+Monal.Connect:1730627640: Fdroid.Install : allownotifications registration encryption registered currently landscape username features supports password licensed possible portrait contacts properly appstore include example another account install servers connect welcome airdrop ircnow attach fdroid client offers corner native strong domain monal login first right chats after start using https split macos order admin omemo works note band xmpp your must with this icon then mode dark push view will fill once need have able tap png org ios for top bsd im be so
+9.9pfs:1730627640:  : installation mount_point somewhere ftrvxmtrx supports portable mounting openbsd servers caching working github 9pfuse allows client https clone known usage might cause using which will bugs 9pfs stop that else host make than doas more did you don for and can com if cd is
+Gajim.Biboumi:1730627640: Gajim.Connect Irc.Guide Biboumi.Install : startjoinchat connected hostname provided checkbox username already replace biboumi channel example servers another install bridge attach format ircnow search unable bottom corner gajim taken click guide right group title using with menu clck nick that next been will then type pick want your xmpp this has bar muc are png and com org can by if
+Ircfs.Intro:1730627640:  : disconnection connections collection filesystem automatic following reconnect multiple inspired features password optional presents metadata networks replies users ircfs intro ctcp with upon tls the ii by
+Vnc.RecentChanges:1730627640:  : recentchanges miniontoby realvnc viewer might extra added stuff some yeah fine 2022 more list june need but its the pm 04 at 08
+MacScreenSharing.Connect:1730627640:  : macscreensharing autocomplete spotlight password connect attach png
+Ksh.Autocomplete:1730627640:  : 1d3af82c873d57cf5e06319537281bef28ba1522 ksh_completions autocomplete ircforever installer installs version gotweb action newest commit users which there https path wget your file into blob bin git cgi way add org of my is
+Parec.Record:1730627640:  : alsa_output 0000_00_1b alsa_input monitor record format debian audio1 stereo analog audio2 parec file wav pci
+Openbsd.Recordaudio:1730627640:  : recordaudio necessary recording openbsd enable sysctl change conf doas kern etc to it 1
+OpenSSH.RSAkeys:1730627640:  : pubkeyacceptedalgorithms hostkeyalgorithms implementations incompatibility improvements sshd_config connecting following according upgrading archlinux viewtopic solution protocol upgraded rsakeys anymore closely tracked openbsd version openssh release cannot likely 270005 update client really source latest higher other https doesn putty older since that good here than then this just have want your been when org use php try add bbs etc txt but www bad id if 8
+Ircnow.Status:1730627640: Openbsd.Bitlbee Shell.Shell Www.Www Openbsd.Sftp Openbsd.Pmwiki Openbsd.Php Openbsd.Bchs Openbsd.Gotweb Openbsd.Eggdrop Openbsd.Openrsync Openbsd.Scp Openbsd.Iked Rspamd.Install Openbsd.Pf Openbsd.FilePermissions Openbsd.Botnow Openbsd.Opensnmpd Openbsd.Identd Openbsd.Asterisk Ircnow.Todo : filepermissions alternatively functionality configuration subscriptions centroidblog registration proprietary advertisers marketplace transaction programming interactive registering compilation monitoring status2022 determined businesses developers connection cryptocoin blacklists exhausted automatic tutorials openrsync analytics honeyserv marketing telephony pasteserv processes firewalls teammates implement searching automated opensnmpd encourage donations configure solution memeserv security trapserv fileserv possibly accounts asterisk networks androirc chrooted netsplit undeadly eggdrops features nickserv irccloud services disaster recovery spoofing platform monitors playback december internet redirect directly software physical malware openbsd provide bitlbee achurch support instead parties hosting history install abusive improve collect instant website storage consent backups aliases restore testing modules control payment servers require keyserv version update ircnow identd profit charge create across future listed botnow psybnc rspamd easily switch annual pmwiki gotweb mibbit issues client buffer toggle ilines quotas source errors ngircd access cannot harden defcon allow acopm build proxy ipsec shell anope write offer patch using major goods extra https blogs email setup party based users theme alert union title games these check elist could plans since todo stun turn free bots sell code sftp find dids vpns mirc iked with bchs path each view this mode fees sale tree unix from fork just that ipv6 hopm cgi bin www scp php org vps src ads 3rd add old fix znc jan dns new get buy sip app eu pf by
+Eggdrop.UTF8:1730627640:  : recompiling recompile encoding default iso8859 eggdrop system change before need this line edit utf8 into will the 738 tcl add and src how you but on by 1
+Ircnow.Status2022:1730627640: Ircnow.Roadmap2022 : opportunities collaborating corporations applications interoperate distribution replacement activitypub alternative translation marketplace distributed encouraging information translating hospitality roadmap2022 mainstream innovation especially protection accomplish volunteers accurately status2022 controlled collapsing technology processing challenges platforms protocols documents ecosystem surpassed interface assistant necessary competing teammates community rideshare hobbyists universal operating talented computer internet browsers language lifetime cultural inspired software identify problems projects amateurs innovate together stronger services continue shipment organize network content explore hosting virtual silicon survive provide compete freedom current payment connect bridges methods sharing produce revoked courier failure objects quickly besides reality relying natural better become matrix search center before ircnow online entire vision offers modern source bright living fields future bolder global needed design choose things solved enough across rights valley cannot impact answer group today stand exist which users again ahead there these tools dozen using still signs build allow voice write libre aided world cloud needs would sense makes where email title worth great dream minds their built fight might union could being money text have with open that away take hard will from they plan over grid miss send fear ddos safe only than lead must ever more same huge such this easy most dare also http done nntp save xmpp uses what love code many sure buy you did run non web ask let cad yes own its out etc job may due few who 9p
+Ircnow.Roadmap2022:1730627640: Irc101.Irc101 Irc201.Irc201 Unix201.Unix201 C.Intro Lua.Intro Lisp.Intro 9101.9101 Perl101.Perl101 Unix101.Unix101 Ircnow.Projects Shell.Shell Bouncer.Bouncer Email.Email Vpn.Vpn Xmpp.Xmpp Eggdrop.Install Openbsd.Bchs Openhttpd.Configure Sftp.Chroot Openrsync.Usage Rsync.Usage Iked.Configure Opensmtpd.Configure Mlmmj.Install Got.Usage Cvs.Intro Asterisk.Install Codeforce.Intro Sonsofliberty.Intro Ircnow.Ranger Cloud9p.Roadmap : organizational subscriptions sonsofliberty centroidblog independence sponsorships transactions programming memberships marketplace advertisers roadmap2022 cryptocoin approaches developers donations openrsync bandwidth configure ownership opensmtpd automated implement financial codeforce scripting openhttpd telephony transfer training projects security software asterisk services requests archives document tutorial eggdrops undeadly platform install provide hosting mailing openbsd include bouncer unix101 perl101 unix201 consent require payment storage revenue towards network cloud9p channel irc101 create public access ircnow course chroot irc201 guides should server voting system update ranger number gotweb source intro games shell party extra email legal phone mlmmj usage offer https blogs using ipsec bchs user fees sftp free with file 9101 tree lisp path bots iked team list xmpp each then vpns here some cvs lua znc sip vps src bin cgi fix 3rd can new eu
+Ircnow.Roadmap2021:1730627640: Ircnow.Servers Bouncer.Bouncer Ircnow.Team Minutemin.Training Openbsd.Openbsd Openbsd.Bitlbee Shell.Shell Www.Www Openbsd.Sftp Openbsd.Pmwiki Openbsd.Php Openbsd.Bchs Openbsd.Gotweb Openbsd.Eggdrop Openbsd.Openrsync Openbsd.Scp Openbsd.Iked Openbsd.Opensmtpd Openbsd.Dovecot Openbsd.Spamd Openbsd.Pf Openbsd.FilePermissions Third.Third Openbsd.Botnow Openbsd.Opensnmpd Openbsd.Identd Openbsd.Asterisk Ircnow.Todo : filepermissions alternatively functionality configuration subscriptions registration centroidblog advertisers proprietary roadmap2021 transaction compilation interactive programming marketplace registering cryptocoin experiment connection developers blacklists monitoring businesses determined thoroughly exhausted automated searching suggested teammates configure analytics tutorials minutemin honeyserv pasteserv marketing opensnmpd automatic telephony encourage opensmtpd firewalls openrsync processes sysadmins donations implement teammtes undeadly services accounts security fileserv spoofing chrooted asterisk trapserv playback memeserv nickserv training recovery networks software disaster almanack features monitors platform directly physical netsplit solution december eggdrops possibly irccloud internet androirc openbsd hosting provide bitlbee improve servers dovecot testing support instant aliases website version control backups restore parties require consent bouncer content storage collect payment ongoing achurch history instead request malware abusive install recruit modules friends keyserv buffer botnow harden switch identd listed ircnow future psybnc gotweb client toggle ilines errors ngircd banned across cannot update issues create defcon pmwiki mibbit quotas source charge finish easily access annual invite profit write https proxy extra since shell elist offer users title email stack other major theme learn blogs using acopm setup yahoo false spamd patch allow party third ipsec build check plans anope based goods ifend these could alert games show page from hopm what fork free bchs sell bots sftp sale todo each fees iked ipv6 your with that just zncs scan dids turn stun mirc nsfw tree mode path code apps 2022 unix this view vpns find add org fix bin get jan dns 3rd scp buy php www ads cgi vps old sip new src by pf eu
+Pkgadd.CheckUpdates:1730627640:  : checkupdates purposefully permissions recommended significant additional pkg_update generating successful determines afterboot otherwise ownership following available returning forwarded commands packages starting checking designed noquirks required directly suitable messages supports syspatch openbsd because crontab whether nightly however exiting aliases section similar account pkg_add updated removes bottom output script notice switch likely action status proper result stores called echoed either highly pkgadd values should single ensure remain where setup email there local daily noted being chown chmod group title above which flood names inbox since would with this from that when user many want doas save line have send zero root thus need also been then grep sbin only will some take else are non see via run etc uun usr opt you may 755 our now get ksh by wc 0 8 2
+Ircnow.Dogfood:1730627640:  : significantly embarassment — donald participated improvements implementor typewriters immediately dogfooding considered developers conclusion separation components activities confidence purchased microsoft wikipedia customers providing perceived announced effective literally important advertise services benefits designer everyone computer internal dogfoods hundreds convince february obsolete probably provide happens because crashed windows believe perform thought bouncer example running manual forced errors broken eating before should system please inside builds better server notice around ircnow admins pride would https these never fully first apple gmail built using 1990s proof knuth fixed often daily large scale email title shows words staff right admit their great other that many when this what have your than them must they team unix also chat away made been user thus else more work 1980 take four only hurt will over want were came own are and tex day had new 200 who org why try mid was go
+9.Hostowner:1730627640:  : hostowner following username newuser started 9front change hostid glenda server plan9 cwfs echo auth edit upas hjfs 9fat done file from bell used labs with ndb lib cmd now uid sys adm ini 9fs eve and srv but who run re we is
+Mlmmj.Archive:1730627640:  : html_files_output_directory mailing_list_directory name_of_the_list documentation responsible recommended afterwards hypermail implement following execution auxiliary beginning coreutils replacing changing messages generate updating example project archive install command pkg_add passing leopold replace indexed warning minutes crontab program convert wwwdir backup change create script apache modify attach daemon bottom update before format htdocs martin mlmmj chown using every spool touch local known mkdir shows twice times title email group buggy owner stuff setup then that free will doas read with need http type used last line path mbox unix from real your case this page gseq root make many next bugs able kind link top web var run bin usr gpl may get gnu two txt faq org by 30 so dk 2 1
+Nsd.DNSSec:1730627640:  : ecdsap384sha384 verisignlabs configuring information generating registrar providing extension including generated filename signzone specific enabling analyzer messages restart signing numbers assumes working running command through records details kdomain pkg_add package install example dnssec typing signed called comxxx errors keygen period master update title zones first there login final utils check point nlnet would mkdir whole nsec3 guide paste https will ldns this into then need ksks keys zsks each your step glue copy test with also when part more nsd var are any use new see by we of 1
+Openbsd.Locale:1730627640:  : lc_messages lc_monetary lc_collate lc_numeric lc_ctype openbsd account profile lc_time locale export lc_all en_us lines user need this lang your utf set for env to 8
+Botnow.SqliteViews:1730627640:  : ihaslotsofshellaccounts923 similarities sqliteviews ctcpversion redacted123 statements registered suspicious different scattered difficult basically username androirc shellirc creating resolved database instead android jrsusmu 6830152 example default virtual columns client bncirc botnow create select having subnet simple across tables making search wanted nested output build clone gmail email messy would super where ircid these other inner which might this jrmu from that http some like with join find com www can see 182 who are for you via be to by we ip 16
+Openbsd.Xonotic:1730627640:  : yetanotherxonoticserver configuration serverconfig installation opensource serverlist maxplayers sv_public following dedicated directory hostname packages examples hardware pkg_add running started openbsd maximum nexutiz shooter number forked person change which parts share local first based voila quake doesn might power your home much from copy need info more want this doas easy hide cfg usr and can was has see nor set cp if of it 4 0
+Irc201.Irc201:1730627640: Irc.Guide : configuration hostmask4sz userrequest commands suzerain nickname chanserv example setting channel connect restart timeout network include process offline reason invite called please server irc201 should unless github hacker delete rehash reject ngircd causes reload master kline block topic first there guide usage local never gline opers given their modes https take type will want read spam same them link kill file tags used join blob more this mods need you not but doc for are arg txt new ops its be iz if
+Mlmmj-archivist.Install:1730627640:  : incrementally configuration installation _public_html _mlmmj_spool subscribers _public_url predefined dependency completing preference _metadata archivist _language coreutils utilities directory templates available _template intervals following generates messages archives designed creating frequent packages openbsd country example replace default mhonarc mailing creates crontab running boolean change script domain sample forget actual should format hourly course github eellak output active needed htdocs local after since entry hosts false mkdir en_us files share check https found lines rsync basic lists gdate clone tweak shell prior unix will also used from root grep each name true does what with 3166 busy both well your make many dont copy this web add bin usr the can awk and cat few utf var gnu www etc iso mrc 639 by of cd 5 2 8
+Unix.Exhibit:1730627640:  : unix_history developments interactive generation milestones wikipedia software compiles machines exhibit freedom network virtual through diagram present solaris simple attach future https minix linux fifty about learn title major years file blit past this plan the for mkv png mux gnu org joy new all bsd our svg v8 v6 9
+ISCABBS.DownloadingAndInstalling:1730627640:  : downloadingandinstalling autoreconf_version autoconf_version automake_version instructions configuring description executable variables following obtaining replacing installed wikipedia compiling directory configure commands retrieve compiled hmpbugsk iscabbs located similar easiest numbers openbsd source making export client covers binary output should prefix access return bindir noting latest github prompt system 7jxlqs three below using where local shell title https input files users ommit first clone alias home each from just like your with want root have this page find code best must will same step next the run for org now usr two via set how can ls cd we xx if
+Soju.Install:1730627640:  : sychronization configuration automatically yourarguments alternatively yourhostname unprivileged bouncerserv placeholder appropriate connecting connection dependency additional populating libpthread repository autostart soju_repo available compiling directory following connected something emersion packaged populate overview commands assuming finishes features someuser upstream multiple creating security instance attempts whenever friendly libexec sojuctl running private install useradd nologin replace account removed without sqlite3 example pkg_add message servers backlog network clients support logging startup crontab minutes openbsd already compile chroot create resolv listen single source golang proper daemon paths admin under mkdir stops title every still peace empty these chown after clone build https want then that time this only from home doas make like sbin libc have cert 6999 help ircs file mind etc for ssl git crt key its see via msg can are new not var yet usr now tls has pem job if cd cp by of db 1 2 5 7 0
+Openhttpd.Chroot:1730627640:  : openhttpd instead resolve chroot name apps sure make into conf copy that the web can etc by of ip
+Civics.Intro:1730627640: Irc.Guide Shell.Shell Unix101.Unix101 Bouncer.Bouncer Irc.Services Irc.Chanop User.Welcome Ircnow.Goals Congress.Procedure Unix101.Vi Unix101.Mg Unix101.Filesystem Unix101.Files Unix101.Commands Ln.Intro Eggdrop.Install Eggdrop.Rss Eggdrop.Trivia Eggdrop.Duckhunt Znc.Install Psybnc.Install Ngircd.Shell Mutt.Connect Netizen.Become Netizen.Rights Freedom.Freedom Dns.Overview Dns.Records Dns.Vhost OpenSSH.Connect OpenSSH.Keygen Openbsd.Sshkeys : description simpletable netizenship filesystem connection understand everything configure immigrant abilities knowledge procedure minutemin tutorial services duckhunt congress commands generate security securely overview register channels username symbolic sortable unix101 install openssh unlocks eggdrop prereqs bouncer account freedom records liberty support network welcome project sshkeys openbsd psybnc create border trivia rights civics access ngircd keygen lesson server become irc101 domain verify manage chanop custom ircnow delete shell topic bonus vhost login email setup intro using goals guide learn types title about links ideas first users where clone emacs space needs works width voice gives class sign more tech edit mutt nice auto path your move help logs line news feed with chat find game the rss 100 how znc for own dns vps bot mg ln of 24 7
+Ircnow.Nsf:1730627640:  : opportunities increasingly institutions opportunity foundation scientific vbush1945 knowledge available frontiers essential economic products services inspired research software invented becoming thriving vannevar property obtained network cloning setting develop freedom already virtual however science private endless funding history through include explore courses helping expand depend ircnow policy exists closed skills always create coding longer public pursue begin being every basic world title https users meant learn about these ideas point spend other hopes today jobs this rely upon must made flow will make some time past labs also find keep that most open with more only them htm new www gov nsf can all for non lan has cut by
+Unbound.Blacklists:1730627640:  : githubusercontent 4skinskywalker malwaredomains gazellegames infringement justdomains stevenblack alternates blacklists directives configured following blocklist malformed copyright newhosts3 newhosts2 networks gambling index_en unwanted capitole manually consider reformat unbound mirror1 unified entries traffic torrent master inside insert piracy static filter banned should pihole mmotti obtain local https check using these files regex title taken this blob porn here anti site from note nzbs zone used then into need com app may can raw irc p2p ftp php dns www you put var etc awk dsi txt dl of be we 0
+Acme-client.AutoRenew:1730627640:  : stackexchange appropriately successfully certificate improvement httpd_check permissions letsencrypt fortnightly communicate renew_cert acme_check reasonable engineered automating reloading print_msg necessary essential favourite autorenew following elsewhere technique confirmed specific messages starting commands attempts somewhat renewing checking entirely silently provides stopping filename remember dovecot perhaps because returns default running already renewed cleanly cronjob renewal trivial written openbsd expects crontab verbose logger client called domain server stdout stderr simple syslog output failed marked direct little should fairly stands expiry within script though system editor create append weekly enough choice likely common 197411 rcctl every local outfd error found allow piped seems https chmod weeks title entry later again files badly would shell needs fails usage alter tweak opted your only over date mail then test this exit will elif once upon more than work just unix easy days text echo also case page info nice any 700 usr etc bin own but vim one was not may can are org tag var two set ksh of by eq gt 30 2
+Ircnow.Womenstem:1730627640:  : engineering technology womenstem involved partner science ircnow bring more your math let get and to
+Openbsd.VsFTP:1730627640:  : data_connection_timeout anon_mkdir_write_enable allow_writeable_chroot ascii_download_enable rsa_private_key_file connect_from_port_20 idle_session_timeout ascii_upload_enable chroot_list_enable anon_upload_enable xferlog_std_format dirmessage_enable secure_chroot_dir chroot_local_user text_userdb_names anonymous_enable userlist_enable xferlog_enable userlist_deny userlist_file pasv_max_port pasv_min_port rsa_cert_file ftp_data_port local_enable xferlog_file tcp_wrappers listen_ipv6 listen_port pasv_enable ftpd_banner nopriv_user local_umask ssl_enable installing rcscripts installed xdefaults hide_file extracted following deny_file ftpusers profile _vsftpd example virtual details openbsd service pkg_add welcome machine mailrc server 230991 ircnow 230533 cvsrc empty login cshrc 10800 60020 60011 rcctl 1800 were conf doas etc ssh see yes new the var net 022 crt ok to 21
+Baytuch.Bio:1730627640:  : technologies subsequently programming specialist activities discovered operating installed «power» structure networks programs computer machine systems studied baytuch windows updated celeron basics ubuntu karmic father bought using world lucid which first began koala later study linux years based intel write name with this that time when 1400 then 2005 like unix home and was for web bio mhz of 04 10 to my by xp 9
+Shelllabs.Openaccess:1730627640:  : datascienceatthecommandline trustworthymachinelearning probability4datascience tellingstorieswithdata implementations bayesrulesbook paperswithcode bradleyboehmke psychologists circlize_book visualization introduction reproducible applications quantitative repositories engineering information mathematics electronics statistical pdr_higgins algorithms libretexts collection ieeeaccess publishers electrical structures openaccess submission statistics scientific retrieval europepmc institute selection engineers shelllabs resources inference available preprints published practical runestone libraries economics unpaywall handbook modeling journals bayesian clinical circular sematech jokergoo mattansb pythonds bookdown research openstax datasets sciences scunning computer figshare stanford mixtape medrxiv academy biorxiv medical biology applied systems archive finance physics methods problem details reports solving feature fields github mackay theory causal kaggle div898 modern mdsr2e health https index study books r4csr using hands title arxiv itila rmrwr from many html homl link life than mdpi more nist such edu www osf nlp org gov mml 100 of uk
+Openbsd.Geomyidae:1730627640:  : installation repository geomyidae gophermap available bitreich openbsd execute pkg_add package server people should enable style which rcctl start ports made with then uses just work and own org can you its of is by
+Dovecot.Pigeonhole:1730627640:  : imapsieve_mailbox2_causes imapsieve_mailbox3_causes imapsieve_mailbox1_causes imapsieve_mailbox1_before imapsieve_mailbox2_before imapsieve_mailbox3_before sieve_global_extensions imapsieve_mailbox1_name imapsieve_mailbox2_name imapsieve_mailbox3_name imapsieve_mailbox2_from sieve_pipe_bin_dir sieve_extprograms sieve_imapsieve sieve_plugins installation mail_plugins environment combination imap_sieve pigeonhole variables directory opensmtpd learn_ham username protocol dovecot restart require setting pkg_add scripts matches report string rspamd useful rspamc copied append change server sievec shell grant above setup trash local rcctl inbox posts https poolp root mode doas copy with exec this file junk conf stop 2019 here usr lib run and org the etc vnd 755 sa 14 09 if 90
+Dd.Iso:1730627640:  : 19080225120218120009 247810048 available indicates executing overwrite removable partition 121001mb scsibus3 existing flashing identify generic sectors openbsd labeled correct install replace storage blindly warning command device serial amount rather before triple letter delete entire 128gb drive check image rsd0c below paste might title above first which eject dmesg space block bytes often note file disk once than have must data path with done copy mass case targ grep also next this can you raw lun use usb img its our iso dd we
+Dovecot.SharedMailboxes:1730627640: Dovecot.Install : mail_max_userip_connections sharing_with_symlinks configuration_manual shared_mailboxes sharedmailboxes acl_shared_dict automatically public_shared subscriptions mail_plugins individually disadvantage instructions planetofnix sensitively destination recommended complicated accessible cache_secs parameters dictionary separator following namespace commented separated subscribe described something variables configure continued specified protocol children location expanded imap_acl consider solution incoming services specific manually procmail comments document username publicly overflow simplest removing outlined compared explains creating account support reasons visible maildir folders expands dovecot example default follows section allowed address provide install enabled working instead already assumed details members restart finally feature doveadm padding bgcolor maximum editing method global reload emails should scroll remove number domain prefix saving logged stored grated grants broken define useful system client create ircnow change server manage margin under inbox there being vmail these looks izzyb where teams white since would enter needs users https vfile shown block black which limit other right using added rcctl first cover index guide their again setup files step this like from part each cron case note that your code data list only down next type into will they ways done same idea have sort such left also most doas uses them more just acls 5em 1em for lda see let etc lib org can 300 has wip new but isn two per run put atm who by 20 ln 10 90
+Openbsd.TigerVNC:1730627640: TigerVNC.SSH : installation incomplete everything vncviewer vncpasswd including passwords keylogged vncserver tigervnc security pkg_add desktop openbsd warning tunnel called xenodm enable client attach itself rcctl setup start ships doas type xfce with this zero can ssh has for ssl how you png be
+Openbsd.Prosody:1730627640: Mercurial.Usage : mod_auto_accept_subscriptions mod_captcha_registration mod_throttle_unsolicited mod_block_registrations mod_filter_chatstates mod_throttle_presence mod_support_contact mod_roster_allinall mod_message_logging mod_group_bookmarks mod_roster_command creating_accounts mod_support_room mod_cloud_notify mod_http_upload mod_deny_omemo mod_bookmarks2 mod_muc_ban_ip mod_muc_limits documentation configuration mod_vcard_muc certificates specifically mod_firewall letsencrypt mod_muc_log permissions downloading certificats mod_smacks especially connection equivalent accessible mercurial something explained generally available meanwhile directory fullchain configure security directly _prosody conflict handling openbsd private example problem clients reasons correct address servers section details virtual because mod_csi modules pkg_add readmes further written ensure record solves making should unable handle allows always domain simple jabber extras using local certs there https email mkdir _xmpp needs share works usage every point found clone chown host used each want doas your like from also user root only this that cron acme info copy with fast echo does fccf 5222 5269 3600 _tcp will look 1191 2602 aaaa aims wish tabs for run var key pem 162 lua dns usr but lib job can etc srv ssl soa aka lot of by hg 87 38 mx
+Openbsd.Unrealircd:1730627640:  : ares_process dependencies libcares_la unrealircd questions downloads recommend examples versions settings writeing changing makefile install tarball openbsd extract pkg_add default makeing useradd command storage inside source latest config folder recent should errors delete people called switch acures whoami verify might clean https click build rerun fixed sauce issue bunch sadly enter gmake known newer basic using start guide code doas this when will edit that just want from done also fine 1084 need have most curl lets then them home same here find over copy hope gets soon exit time you has too low for www dir ask org can xzf but be up of cp go gz 5 9
+Openbsd.KnownIssues:1730627640:  : scsi_xfer_pool_exhausted knownissues indication reference partition padding usually openbsd resolve failure likely reboot lfloat system memory attach margin enough bottom errors space title right 300px these 150px block width left from swap that get top due 5px are you png out an of
+Stagit.Install:1730627640:  : dgit_opt_set_owner_validation git_libgit2_opts configuration disadvantages stagit_cflags autogenerate installation codemadness description undeclared identifier repository dependency configured regenerate instances subdomain uncomment generates generator challenge releases metadata dnszones basename familiar continue shortlog diverged tarballs overview snapshot features branches suitable required browsers makefile reposdir location properly favicon history restart example support commits depends project dynamic written request changes replace default compile extract without locally writing pkg_add section located assumes openbsd server create simple static latest public curdir sha256 htdocs ircnow design listen printf remote should relayd client unveil pledge index below https httpd which chmod touch mkdir style paste known guide rcctl stats error 32x32 files based every about clone pages usage strip large visit cache edit this line acme that also wiki root doas have well time logo your html push send note site copy echo done 1239 refs work xvzf here text such lynx tree head like does atom feed 2000 many tags from just use png run for and the org got php css url see can var cgi w3m www tls ssl ftp etc was get bin nsd gz 80 5k 19 of cd ok sf ln cp by
+Ircnow.Roadmap2023:1730627640: Irc101.Irc101 C.Intro Lua.Intro Lisp.Intro 9101.9101 Perl101.Perl101 Ircnow.Projects Shell.Shell Bouncer.Bouncer Email.Email Vpn.Vpn Xmpp.Xmpp Eggdrop.Install Openbsd.Bchs Openhttpd.Configure Sftp.Chroot Openrsync.Usage Rsync.Usage Iked.Configure Opensmtpd.Configure Mlmmj.Install Got.Usage Cvs.Intro Asterisk.Install Codeforce.Intro Sonsofliberty.Intro Ircnow.Ranger Cloud9p.Roadmap : organizational sonsofliberty subscriptions centroidblog independence sponsorships transactions programming memberships marketplace advertisers roadmap2023 cryptocoin approaches developers ownership configure codeforce automated opensmtpd telephony donations implement financial bandwidth openrsync openhttpd training document security transfer tutorial asterisk eggdrops archives undeadly platform projects software services requests perl101 require hosting consent bouncer openbsd install provide revenue mailing towards network cloud9p include payment storage create number ranger server should public guides update ircnow voting course irc101 chroot system gotweb access source email shell usage intro party https legal extra mlmmj using offer blogs phone ipsec games user sftp xmpp lisp with fees 9101 bots then iked vpns free bchs path list 2024 tree some here team each file cvs lua bin cgi can znc vps src sip fix new 3rd eu
+FreeIRC.About:1730627640:  : debiankaios alternative operations connection services directly accounts dropbox webchat contact freeirc provide members welcome website mistere channel support google secure kilroy ircnow access manage server format coming there https hello about drive other shell setup cloud soon main team best what ircs info help 6697 6667 will your page this with both have they also xfnw are tls ssl and org can how znc way who don but use to q
+Eggdrop.TCLErorrWhileExecutingPackage:1730627640:  : tclerorrwhileexecutingpackage configuration additional scriptname libsqlite3 everything libraries directlry installed configure libcurl4 included goodluck manually assuming reminder libsasl2 packages autoconf scripts openssl library require easiest systems eggdrop restart vanilla example similar located center libssl trying debian tcltls unable should tcllib source rehash remove bottom folder simply error above these doesn about https extra based just sudo else line work than your wget what core load chat nice have look make some lang file with like help that root json need this find when part know dev can way not xzf and org see got for did how apt run pkg if of be rf gz uv 22 rm cd 7 1
+Chess.Tournament:1730627640:  : lewis_clark theskeleton tournament freechess location saturday players lichess 00utc april time 2023 jrmu date org 1st 19
+Bouncer.Ircrc:1730627640:  : jumpnetwork networks password bouncer example switch ircrc 31337 then type user need you com znc if to q
+9.Irc:1730627640:  : communications replacement highlighted filesystem monitoring displayed hierarchy machinaut versions existing recently projects channels networks probably similar purpose clients updated inferno weechat changes imagine archive general written shithub sources moment within useful 9front matrix inside handle easily github places jumped ircfs track https wcirc limbo extra plan9 email irssi lines linux newer there 1000s would other these this tail logs last tool acme just tree most well keep xmpp type like code ircs irc7 100s for few tui org can not are but any has src run all had hg be of
+Ircnow.Perl:1730627640: Category.Perl !Perl : administration connections selectively interfaces appendfile containing installed functions dependent federated currently readarray constants databases verbosity available specifics accessing following writefile download parselog contains optional provides intended warnings category accounts managing designed variable whatever library develop summary network sources readstr generic methods servers parsing program parsers action useful ircnow engine tables common botnow output export fileio errors gotweb loaded files class other debug aware using there izzyb tasks doing point https tools basic from perl just some each subs into your plan make tags info none also bots with code wish libs path logs and for org cgi bin can may via cli raw its but git of be qw 5
+9.Inter9:1730627640:  : modificationsdesigned implementations experimentation simultaneously infrastructure transparently compatibility participating unfortunately intentionally contradictory customization encapsulated sporadically applications incompatible experimental information corporation experienced alternative authorities centralized anticipates voluntarily distributed transported destination connections federation decreasing increasing moderation unsuitable government contribute originally networking principles sneakernet censorship capability regardless especially obstructed convoluted splintered consistent universal firewalls interface developed internets necessary protocols operating disparate consensus backwards wireguard expensive bandwidth difficult encourage countries switching standards preferred ecosystem anonymity important federated resistant preserved oriented networks attempts proposed imposing national blocking weakness although building globally changing presence multiple existing censored moreover wireless circuits anarchic requires platform gateways boundary creation together entirely dictated explicit starting isolated amenable routing suggest instead foreign general serious purpose because tunnels equally latency dynamic answers methods overlay assumes uniform packets improve joining however enemies control prevent vibrant expects success provide blocked openvpn between arpanet running support modeled without invited closely written reflect inter9 chosen across around namely access create making spread agency result future bridge theory simply spirit should reduce choose united effect anyone powers costs valid crime roots makes avoid where there order nodes links route other first taken ipsec these title allow apply world ideas users today which write layer rough goals after this will must used that each most them many like fail data rfcs free does file were code aims high help been have path full from ones some old sit new dns act own key few has not can may via 9p of by
+9.PNS:1730627640:  : subdirectories subdirectory alternative centralized turtlespeak recursively defederated independent nameservers engineering traditional distributed filesystem simplicity equivalent definition relatively respective complaints hierarchy connected shelltalk conflicts namespace pathnames mechanism delimeter analogous confusion immediate ircnever contains separate redirect children position changing querying involves designed pointing absolute multiple consider official possible persuade scenario location networks sanction removing pointers likewise although declare reached concept resolve handled forking divided queries request between handles address listing absence replace chooses because general prevent another however instead entries clients setting example records cloud9p suppose chroot lookup switch prefer itself points always parent belong easily namely domain within simply google ircnow remove unique change allows longer making inter9 inodes there enemy still their roots coded would first moved given large deter forks where abuse power needs keeps wants track which chunk order users split fewer paths until entry above exist force title makes this then well take from that same them mail join will both have easy hard able find ease must what unix time jrmu only task they run mkf own fns can one may get www dns pns any new by 1
+9.FNS:1730627640:  : subdirectories subdirectory independent turtlespeak distributed traditional alternative recursively centralized nameservers restoration engineering defederated definition simplicity relatively filesystem respective complaints equivalent conflicts shelltalk analogous namespace connected mechanism pathnames hierarchy confusion immediate delimeter resolving likewise position pointing ircnever although involves querying persuade contains children disputes possible location networks designed changing multiple removing sanction consider absolute official scenario pointers separate replace example forking another queries clients handles suppose concept setting reached entries instead resolve declare because handled cloud9p absence general records listing chooses between request address prevent however divided domain points parent itself simply namely longer belong change always prefer lookup chroot allows inter9 broken switch result ircnow inodes within google easily unique remove making force until fewer roots order where above users coded track keeps given paths wants there links which split moved enemy their forks needs exist large chunk makes deter entry abuse power title would still first then join easy from them ease able will this take both have they what jrmu that mail same well must unix time hard task find only get mkf fns own dns run www may can one new any by 1
+9.Ramfs:1730627640:  : profile replace running syscall create ramfs lines these null user bind with case home 0666 tmp off for dev xxx lib two usr if to cd we 1 9 2
+Dns.Troubleshooting:1730627640:  : troubleshooting authoritative nameservers redirect helpful intodns sites https some nsd for com
+Ircnow.Roadmap2024:1730627640: C.Intro Perl101.Perl101 9101.9101 Botnow.Botnow Shell.Shell Bouncer.Bouncer Email.Email Psybnc.Install Vpn.Vpn Xmpp.Xmpp Vps.Vps Eggdrop.Install Ikiwiki.Install Openhttpd.Configure Sftp.Chroot Openrsync.Usage Rsync.Usage Iked.Configure Opensmtpd.Configure Mlmmj.Install Got.Usage Cvs.Intro Asterisk.Install Openbsd.Bchs : installation centroidblog roadmap2024 programming experiments alternative requesting configure telephony openrsync postponed developer openhttpd implement opensmtpd outgoing incoming asterisk bouncers openbgpd automate accounts internet undeadly training tutorial eggdrops archives services provide ikiwiki hosting openbsd mailing perl101 network routing cloud9p include methods replace perhaps written gotweb psybnc action access create botnow inter9 course public system number voting update source guides chroot ircnow calls intro using plans shell phone setup https offer ipsec ospfd blogs email begin usage write mlmmj relay code sftp band iked xmpp bchs 9101 with user path tree paid fork vpns ticl file list mesh html ripd cvs org vps src znc cgi bin doc new sip eu
+Openssh.Totp:1730627640:  : dataswamp openbsd openssh solene https 2021 html totp org 2fa 06
+Openbsd.Localtime:1730627640:  : yyyymmddhhmm antarctica localtime greenwich singapore changing zoneinfo new_york contains manually hongkong est5edt america symlink openbsd mst7mdt mexico create system turkey africa share zones egypt title user 2024 gmt0 date doas wed apr etc the set usr can hst uct eet to be ln ls fs 33 12 nz
+Vps.Users:1730627640:  : innovative monitoring computing robotics embedded dealing startup center attach height energy smart tools https title users width logo 50px with our vps and www smt png 10
+Opensmtpd.Inbox:1730627640:  : sendersupport mailhardener postmaster returnpath guidelines protection googleapps certified providers opensmtpd yahooinc register services getting inboxed outlook records several toolbox checkmx policy https email tools 0spam title pages major gmail snds aspx will want with html live jmrp com you org use net gmx olc www pm of
+DNS.MTA-STS:1730627640:  : postmaster security tlsrptv1 20221012 guidance location max_age testing version htdocs ircnow daemon mailto known mkdir stsv1 _smtp https cname zones email 3600 well _tls mode _mta root org dns www var may txt gov nsd set rua mx up uk rw 53 63
+Route.Sourceaddr:1730627640: Hostnameif.Static : sourceaddr hostnameif ipaddress desired replace append static bottom route title line this your with the etc if0 set can of
+Nsd.Troubleshoot:1730627640:  : troubleshooting authoritative nameservers helpful intodns sites https some for com nsd
+Cron.Suppressmail:1730627640:  : suppressmail deliberate username replace command newline useless cronjob follows happens emails mailto server users there your this with that fill note tabs doas var may sed can if 1s
+Tcpbench.Usage:1730627640: Pf.Configure : connections networking configure specifies measuring benchmark installed tcpbench machines provided firewall incoming routable publicly hostname example accepts utility address openbsd replace helpful default server client speeds 12345 title usage https other will with need port from sure make man its org use you act one run and is ip by of to we
+Ircnow.Novem:1730627640: Freedom.Freedom Ircnow.Servers : documentation verification enthusiasts interviewed contribute extensions practicing marketing community madeonirc subscribe promoted redirect articles training complete hardware internet personal seclorum projects servers provide methods freedom private virtual mailing cloud9p support network contact regular qualify improve sending website inter9 ircnow worked mutual friend resume social finish duties commit needed coding minded attach 9force reward become rfloat deploy staff hours refer novem using width order write share weeks email media learn first tasks bonus 80pct after below basic admin apply title plan code join with user your team many hang wiki blog http ages ordo time over keep find help duty have like list the can one get own org and how out who png add to of cv by ll 2
+Ipmi.Java:1730627640:  : sysop_nitestorm restoffullpath driveletter connection dataideas exception modified security download override command spider2 warning comment program things second javaws errors anyway attach around device modify issues bypass prompt files 0_421 login still click check first ipmi then have jnlp take note that open list type will from jre1 able them lib run get you two txt put out are add but few ok 8
+Sed.Usage:1730627640:  : respectively description replacement cellspacing insensitive cellpadding instruction characters processing sequential debugging following execution operation principle modified replaces tableend commands possible contains storage pattern repeats content deletes example applies appends between comment meaning perform several defines options headnr stages allows global insert labels prints change breaks quotes output branch reused copies stream editor border syntax before memory number writes space after moves first lines swaps stops usage least input works means zones then idem nbsp hold file adds case does much next been goes sets with main that done from has get vim can not but abc by hs of 4 1 3 5 0
+Wg.Hosting:1730627640:  : server_mac_address unused_private_ip privatekey_server privatekey_client server_privatekey ip_for_client pubkey_client configuration pubkey_server peer_pubkey generation publically allowedips wireguard configure interface publickey keypairs endpoint required hostname contents standard replaced routable generate hosting without dynamic command should genkey tunnel syntax giving wgport blocks useful wgpeer remove change enough domain their 51820 setup wgkey given route tools wgaip shown below ports first user home vio0 have lots that want once this will file your inet them also but nat can 255 arp etc isp wg0 now tee em0 172 32 if 16 10 of
+Openbsd.CPAN:1729925970: Category.Perl !Perl Openbsd.Ports Openbsd.Pkg : troubleshooting permissions dependency mismatches upgrading libraries recompile directory conflicts available incorrect consider importan packages prepared required probably existing versions category library pkg_add include resolve install running prevent openbsd default example libdata replace execute related command s_iwgrp s_iwoth modules scripts details release created warning instead custom during before result access should search moving system issues owner using those share local wanna ports users perl5 mcpan again usage wrong break umask cause other there after write value comes only with dirs have note will need that some bugs your wide doas this then name them tree line page root risk more can usr out way new set 022 if p5 by of
+Hosting.RecentChanges:1729887278:  : recentchanges providers december hosting 12t04 jrmu 2023 2021 26z pm by 09 01 at 58
+Tor.RecentChanges:1729887278:  : recentchanges authorization ircforever services torsocks section address entrex update sylv1a hidden 25t01 04t18 jrmu 2021 june 2024 2023 36z org 57z 16 07 47 by am 06 10 19
+Pmwiki.RecentChanges:1729887278:  : indentationerror recentchanges simpleurl although january replace install pmwiki issues sylv1a output script 19t17 other seems blank april 2021 2023 have punk 19z mkf fix 46 by 29 06 10 to
+Rcd.RecentChanges:1729887278:  : recentchanges configure 14t14 2024 geze rcd 37z 03 by
+Vmctl.RecentChanges:1729887278:  : recentchanges reinstall vmctl 06t22 usage 06t23 09t05 jrmu 2024 disk 15z 55z 10z by 30 04 59 08
+Eggdrop191.Install:1729887278: Category.Eggdrop !Eggdrop Gnupg.Signature Eggdrop.Simple Openbsd.Tcltls : e01c240484de7dbe190fe141e7667de1d1a39aff allrecentchanges troubleshooting configuration development fingerprint examplebot afterwards indication downloaded keyservers eggdrop191 signature configure certified continues eggheads optional category obsolete messages securely filename libtcl86 reports problem trusted showing similar primary belongs warning unknown signing extract tarball botname openbsd release compile replace install source create folder verify tcltls latest should delete repeat ircnow tcllib action simple import steps above using issue local there https title might error gnupg group check state owner files next wiki make nano logs want brss with site dest that into from your need edit this will then recv pool stop made good 2021 xvzf ftp gpg pub sks net asc due mon cst rsa org for may not was and usr www run bad see cd vi 45 rm gz 58 13 36 23 16 31
+Eggdrop191.RecentChanges:1729887278:  : recentchanges eggdrop191 install updated version number 19t16 2023 jrmu 48z 04 03 by
+Netcat.RecentChanges:1729887278:  : recentchanges parameters november correct netcat byebye august unused 15t14 18t23 usage 07t01 2024 2021 smtp jrmu http user xfnw 2023 mkf 49z irc 53z 18z 22 51 09 pm 58 06 37 03 43 30 08
+Akkoma.RecentChanges:1729887278:  : recentchanges february install akkoma yonle 2023 09 at 12 49 pm by
+Lilywhitebot.RecentChanges:1729887278:  : recentchanges lilywhitebot install january 2023 mkf 24 at 11 am by
+Olympics.RecentChanges:1729887278:  : recentchanges olympics games 05t18 2023 jrmu 36z 11 39 by
+Pleroma.RecentChanges:1729887278:  : recentchanges pleroma install january 2023 mkf at 07 18 pm by
+Crontab.RecentChanges:1729876274:  : recentchanges correct crontab example mistake barth 06t12 edit 2024 31z the by 28 in 09
+Psybnc.Install:1729550059: Openbsd.Rcd : stonecheckdelay installation dependencies interacting connection unreliable hostallows addnetwork addserver stonetime different tolerance defaults nickname download specific libcares increase nickserv identify password p_server attempt running crashes openbsd careful example startup command privmsg pkg_add privsep useradd psybnc change ifndef ircnow define fields filled figure system entry0 inside checks login host2 patch port1 host1 port2 first usage build query apply every basic local quote hello world endif could with send jrmu each must ipv6 ipv4 note 6697 home doas 6667 egcc just made main when this then your http 2400 need 1680 2024 conf make src bin uid raw usr has how out oct mon may ssl for set new its zxf rcd ftp see org ksh old be gz 18 su 19 31 so 21 ln 30 03
+Wg.RecentChanges:1729410970:  : recentchanges wireguard configure hosting without moocow 19t21 2024 34z nat wg 10 25 by
+Tor.Hidden:1728676238:  : example_service_dir hiddenserviceport hiddenservicedir 20230720155711 authorization automatically configuration installation permissions configuring associated discovered satisfied sometimes retrieve creating hostname services optional contains pkg_add private details virtual article correct section somehow archive require similar starts pastly useful remain verify public target enable editor create things chown chmod onion there cases print least rcctl group torrc owned posts https begin 2019 blog with more boot must path that each note they even also pair used find keys this _tor sure user make most file will same you ssh and has for see etc can 127 net web org var way cat out one may 700 any v3 by
+Lecturify.Hardware:1728676238:  : constellation st4000nm0023 143413344190 motherboard integrated controller supermicro management enterprise expansions backplane lecturify ethernet 1000base p2349624 hardware _trksid 560watt support onboard storage chassis seagate capable single system supply height l49292 drives server m46890 brand level rails nodes 815tq 563cb x9dri slots intel ports caddy power 500gb https ddr3 ln4f with bays work will case 3ghz core full 2630 quad xeon ipmi sata gold only ebay nics 64gb lff cpu hex bpn sas 4tb www pci any ecc itm com rev pws ram kit reg not 1gb cse for 1u v1 01 4x 2k 2x e5 16 1h x8 1x v2 7
+Cvs.Anoncvs:1728676238: Cvs.Repo Cvs.Intro Cvs.Cvsweb : allowagentforwarding permitemptypasswords allowtcpforwarding x11forwarding fingerprints repositories instructions transported information sshd_config recommended potentially unnecessary maintaining committers cvsyncuser maintainer anoncvssh openrsync protocols hushlogin directory permittty drwxrwxr securely username services imported makefile commands profile openbsd replace archive restart another changed publish crontab results cvsroot ircnowd certain working reading cronjob libexec syncing perhaps example because already assumes whereas useradd writing created export chroot system should source delete inside stable passwd synced readme bottom logged domain resolv cvsweb mirror botnow except person brogue needed access hosts below guide intro index touch wheel chmod leave mknod mkdir https users total acopm chown ifend first guest found while leaks value match group rcctl false daily looks jrmu from want your ttys with 512b this only path shar like line libz libc will edit zero test also doas code 1001 then html have 4111 sure jail that real null vipw wiki runs org see www set php oct lha apr may aug can usr are bin new was etc dev 444 666 tmp var pwd cat but has gid ftp yes 46 57 16 27 06 0k by 19 29 96 28 cd 26 db 48 04 42 17 ln 3
+Cvs.Commit:1728676238: Cvs.Anoncvs Cvs.Cvsweb Cvs.Intro : automatically recommended directories permissions repository releasetag committers maintainer containing afterwards directory somewhere ownership committed transform vendortag shortcut checkout existing reponame imported original argument replaced specific redirect drwxrwxr granting explains groupadd properly ircnowd working cvsroot provide profile example anoncvs changes tracked usermod suppose located setting current cvsweb should source delete access folder module inside safely cannot author brogue result botnow create sample before actual rights export decide bottom mkdir files named works chown first write acopm since total shell wheel start chmod intro guide begin want will code your each need else this doas then with make that path them from have type just give jrmu omit when 512b also like init once note into time echo look does and lha oct one apr may aug new see fix any don put 06 0k 27 10 16 cd 29 57 17 04 42 11 46 26 48 19 rf by 28 3
+9.Netcat:1728676238:  : connection netcat ircnow telnet upload create paste path file 7777 tcp use org to 9
+Pidgin.Connect:1728676238: Xmpp.Xmpp : registrationsuccessful modifyaccount createaccount password networks checkbox remember accounts username multiple existing protocol already servers example connect details bonjour logging welcome enabled created program attach pidgin choose ircnow select domain manage allows simple click https same much xmpp this gadu save silc your time fill more chat into that been free have list open can the has and org png see add new for of
+Pbug.Bio:1728676238:  : currently holidays pbug bio on
+ZNC.Admin:1727950697: Debate.Dogfooding Bouncer.Bouncer Openbsd.Less Openbsd.Ilines Openbsd.Irssi Ircnow.Networks Openbsd.Vhost Openbsd.Ddos : 21_how_do_i_reset_my_znc_password i_forgot_my_password configuration disconnection reconnections certificates disconnected instructions controlpanel successfully troubleshoot investigate exclusively fingerprint maintenance connecting oftentimes validation improperly configured attempting vl0gy6rv79 dogfooding authorized globalirc following recommend plaintext encrypted sometimes hostnames important indicates repeating solutions addresses innocent networks possible throttle whenever wherever continue everyone trusting messages manually disallow stopping adminlog provides benefits clicking consult warning openbsd returns forcing example problem because through disable trusted servers expired closing slowing similar section reasons correct bouncer moddata command 2600net dealing without failing include usually evasion attacks request sharing ircnow should prefer fixing unique ilines please glined either switch attach likely banned scroll manage admins dalnet reduce abuser common forced offers typing bottom errors client debate ensure rather adding caused search secure above https fruit using users which quick user4 user3 certs vhost irssi there user1 enjoy daily tries helps lacks front user2 check being major below these title shows means issue write ipv4 that have test ipv6 less will from your been 2021 more grep doas 6697 scan this save irc6 only most want both page must find soon than znc6 down link ddos gets same list they pick case 6667 edit next then znc3 does znc2 need home spot znc4 hope team make lost wiki each znc5 sign uses over not see faq png are way day but won may has run bad ssl 256 bnc web msg let 01 09 29 50 by 23 33 24 28 12 3f 51 03 15 08 55 06 52 19 14
+Opensmtpd.Test:1727307959: Email.Email Netcat.SMTP Opensmtpd.Openrelay Openbsd.Opensmtpd : enhancedstatuscodes campaigncleaner deliverability managedomains dkimvalidator disposition destination blacklisted simpletable description senderscore improperly configured validation fakedomain otherplace afterwards postmaster googleapps deployment samplemail pretending autoreply recipient glockapps opensmtpd following spamscore dmarctest openrelay rejection addresses resources localhost accepted delivery 8bitmime multirbl complete fromname sendmail criminal 36700160 followed e57f9a36 379ec228 verifier external sortable sending example receive appears message invalid pleased similar testing running working another spoofed content subject version ruleset openbsd charset process foxtrot charlie replace toolbox checkmx server victim inline client itself should letter netcat likely output passes anyone forged mailto port25 create tester notice border though title delta plain ascii tools inbox esmtp https hello alpha enter basic first using hosts allow never bravo gmass valli comes width class press flags known helo your this when will only with rcpt says meet time data also even here make auth sure look quit date 2024 0700 type text want some echo ctrl help size then ehlo next were file 143 354 how new see 250 get don fix use bye 221 220 163 can 100 sep www log try and ssh url spf dsn 550 are 18 26 81 38
+PmWiki.MarkupMasterIndex:1727253378: PmWiki.WikiStyles PmWiki.ListStyles PmWiki.Links PmWiki.WikiWord PmWiki.Categories PmWiki.InterMap PmWiki.Uploads PmWiki.LinkSchemes PmWiki.Images PmWiki.TextFormattingRules Cookbook.WikiStylesPlus PmWiki.BlockMarkup PmWiki.PageDirectives PmWiki.Tables PmWiki.TableDirectives PmWiki.GroupHeaders PmWiki.CommentMarkup PmWiki.PageVariables PmWiki.IncludeOtherPages PmWiki.PageTextVariables PmWiki.ConditionalMarkup PmWiki.PageLists PmWiki.TableOfContents PmWiki.Forms PmWiki.WikiTrails PmWiki.PageListTemplates PmWiki.Internationalizations PmWiki.SkinTemplates PmWiki.MarkupExpressions : internationalizations textformattingrules conditionalmarkup includeotherpages pagetextvariables pagelisttemplates markupmasterindex specialreferences markupexpressions pageeditcontrols tableofcontents tabledirectives otherdirectives wikistylesplus pagedirectives imagesasimages local_document divisionblocks postingmarkups spacewikiwords wikigrouplinks nogroupfooter nogroupheader pagevariables functionality imagesaslinks externallinks internallinks intermaplinks searchresults linkwikiwords skintemplates commentmarkup tablesanddivs inlinemarkups bulletedlists strikethrough blockmarkups preformatted groupheaders introduction linkmarkups backslashes parentheses _subscript_ superscript description parenthesis conventions wikiwikiweb plaintables alternative uploadlinks linkschemes startofline structured attachlist addressend sectionend articleend detailsend linebreaks definition emphasized monospaced attributes characters horizontal wikitrails categories underscore emaillinks frequently liststyles paragraphs tabulation pagelists arbitrary signature anonymous numerical groupname encrypted delimited markupend unordered footerend trailpage including wikipedia accesskey headerend important signified multipart searchbox metadata category pagename norender inserted supports redirect indented password noaction keywords cookbook textarea includes centered concepts noheader replaced addition checkbox messages tableend question headings nofooter provides multiple produces floating vertical wikitext asideend separate semantic included emphasis contains elements caption process broadly someone applied display newline columns example enctype general notitle follows summary uploads noright applies default checked another escaped hanging deleted smaller briefly spanned aligned decimal lfloat pmwiki lframe rframe noleft rfloat answer deeper bigger strong author clears navend within phrase cellnr number elseif submit spaces quotes divend mailto though enable anchor authpw hidden create select titled method gopher single pmhlt value label input https forms ifend param lines page1 page2 page3 paras reset radio class first thumb 200px width could colon below known learn pipes joins blank alpha roman also file tool cols path html rows next val1 only that most this used each more read save val2 will item even from news excl code date time gif see any can png viz arg xyz abc odt tel fmt ftp bob url how pdf nap geo toc src by 80 my 5
+PmWiki.Glossary:1727253378: PmWiki.LayoutVariables PmWiki.PathVariables PmWiki.WikiFarmTerminology : wikifarmterminology layoutvariables customizations simultaneously enablepathinfo configuration automatically farmpubdirurl pathvariables subdirectory capitalizing wikisandbox capitalizes titlespaced individual considered namespaced characters synonymous deprecated farmconfig precedence privileges whitespace collection associated attributes configures similarly customize stripping something deviation specially including directive following rewriting generally parameter path_info component generated available describes installed likewise controls glossary pagename aliasing fullname consists settings accessed directly normally browsing inserted disabled specify example context default besides however several related existed browser usually differs version element appears expects various summary content formats defines latter stores pmwiki window spaces person phrase loaded people script locate modify either groups entire tricks shared handle chosen markup string author simply obtain called would cause local click place pmhlt these where which found files named using terms refer there built shown could their pages valid above takes acted https admin write given from also that this link uses with user note both over word each aren main used will such what uris have been tell upon case code data wide more only can two php who may any way has etc see of by
+Ambassador.Ilines:1726856436:  : oddprotocol connections planetofnix exemptions ircforever inspirenet configured thunderirc ambassador lecturify shelltalk greetings nastycode exception authorize currently providing sometimes bsdforall addresses accounts bouncers networks possible freeirc website request details support contact because ircnow relays jujube public ilines called around sample adding needed coming unique other afnet rpblc order ident users https limit opers using these email 2605 6400 0030 fc15 0434 0020 492c 00b4 0bb8 team c21e c3e7 0010 071b c3f8 441a f633 faa1 4532 4079 864b 00fe 85a0 bots 6404 ipv6 f8de 8206 05cc c684 02d3 069d 1290 here afwi have case ipv4 like spam look from many each this must week 84d3 05bf org 198 251 119 194 you 229 too our and ips ask are may new 183 can 133 141 137 209 800 174 158 228 184 240 161 130 at 48 81 89 91 38 39
+Opensmtpd.Vmail:1726705081:  : opensmtpd vmail
+Netcat.SMTP:1726703033: Netcat.Usage : destination disposition afterwards recipient opensmtpd e57f9a36 followed accepted delivery complete example address subject version content pleased sending charset charlie foxtrot process message letter netcat inline itself domain usage bravo alpha delta enter email ascii using plain esmtp title valid hello here text type from date 2024 with quit echo 0700 data mime rcpt then meet helo next our 354 250 you 143 bye 221 how for 220 sep 163 and to 81 18 38 ok nc 26
+Opensmtpd.Configure:1726636271: Dns.Overview Nsd.Configure DNS.Mail Acme-client.Configure Opensmtpd.Openrelay Dovecot.Install DNS.DKIM Opensmtpd.Troubleshoot : h5itbhzs73t4jshaj9yx6tf63yrataqugbxocx67wyekhch4zqiod6lkh configuration_manual userdb_quota_rule a8d16cd2144222fa 83bd6b3b1669649f misconfiguration troubleshooting authentication authenticated automatically inconsistent check_fcrdns alphanumeric mtaproxy511 information credentials temporarily permissions configuring optionally check_rdns connection encryption characters abnormally california interfaces translated postmaster submission reputation addresses including available configure separated opensmtpd authcheck important whitelist receiving _dkimsign usernames explained temporary connected following mtaproxy1 sunnyvale mtaproxy2 disabling assurance firewalls specifies passwords confirmed ownership otherwise forwarded recipient listeners openrelay exploited fullchain plaintext supported identical yahoodns protocol messages contains matching possible filtered outbound sections s_client starttls virtuals properly response enabling outgoing provider directly transfer variable replaced hostname multiple mailname 00000003 requires receives programs received security complete checking required indicate gigabyte increase loopback selector generate fallback _dovecot prompted starting hundreds ifconfig digicert packages overview delivery poolporg tempfail senders example smtpctl warning domains include storage defines signing because readmes specify logging private special openbsd happens running spammer express labeled records openssl allowed default request reverse already without aliases earlier defined account blocked install related managed entries filters finally dropped instead sending network version nologin pkg_add folders maildir passing useradd maillog relayed working trusted limited nothing servers further suppose written packets similar actions returns showing timeout offline symptom mistake dealing before adding second passwd except create headed decide socket actual checks should please handed handle author forced marked emails github tables blocks source macros single victim result entire letter egress length ircnow issues unable trying errors script exited signed finish having strict inside _smtpd delete listed public verify choose extras intend answer header linked reason gssapi using local setup being route files depth state delay 16h2s reply times queue spool hosts first point third guide rcctl https chmod colon vmail users admin field tells lines these esmtp smtps often daily which known store might rules child group mtree least those evpid phase about fruit enter chown 39035 avoid offer basic shows whose entry pairs value ports apply share valid pages begin 2001 test imap them this ipv6 used mta5 pop3 good ipv4 goes into junk that will flag anti mask your note free also real want high each root must else sent hang lmtp sbin many pony proc make next sha2 need have keys sure from exec plus part oath much more last sets data they here safe only disk doas find path stop keep same mta6 does both when mta7 type ctrl quit like easy case hash lost some book base been vio0 rcpt done unix acme what bind says s843 mean can 204 195 192 too jan 168 see fix bf1 vip due but 650 451 may get nsd pki www doc src am0 250 usr 587 etc crt 15s way 465 104 395 228 106 gq1 220 db8 ne1 lo0 vps pem new rwx 770 440 via 29 2b mx 1g 33 55 47 17
+Nsd.Configure:1726635635: Openbsd.Delphinusdnsd Openbsd.Tcpip IPv4.Overview IPv6.Overview Openbsd.Dns Dns.Records Openbsd.Dnszones Openbsd.Sockets IP.Myaddress Openbsd.Ifconfig Openbsd.Hostnameif0 Openbsd.Buyvm Openbsd.Vmminstall Nsd.Masterslave Openbsd.Domains Openbsd.Host Openbsd.Dig Openbsd.FQDN : troubleshooting understanding delphinusdnsd configuration authoritative disadvantages introduction installation configuring explanation hostnameif0 masterslave yyyymmddnn registered vmminstall nameserver addressing networking configured foreground 2021020301 substitute checkconf checkzone confirmed encounter authority verbosity elsewhere uncomment transfers subdomain necessary interface myaddress specified standards interpret difficult correctly addresses sections provided database username zonefile resource warnings normally dnszones delegate specific internet requires sysadmin ifconfig overview compared whenever openbsd defined records example control getting servers binding sockets specify results helpful refresh minimum service assumes aliases simpler audited invalid outside further version domains disable refuses quickly perhaps through message deleted logfile suppose origin enable should notify expire serial guides please remote system syntax always return finish output points proper before failed errors forgot change charge public forget notice 32265 which above buyvm might nokey could again quits query found write tcpip exist works start 37575 rcctl https denic using tools 86400 there retry these first 93210 title blank leave basic files allow after comes about pages every least will this 2001 fqdn your 3600 doas edit test aaaa imap also smtp move look case need line mail once done hide with make 5678 drop step that want sure port read glue _nsd ipv4 real note ipv6 news good logs info both does into like 1800 same only have than team part just nast fork more any man can var see www dig etc run yes 261 had tip 898 921 soa ns1 now was 100 db8 has 198 ns2 irc ttl how own xfr ask 192 off 34 50 51 33 we 07 31 43 by mx 53 49 14
+Openbsd.Dmarc:1726360741:  : enhancedstatuscodes campaigncleaner unlocktheinbox dkimvalidator managedomains destination disposition postmaster googleapps samplemail deployment localhost dmarctest autoreply opensmtpd resources recipient accepted mailtest formerly verifier 66f4c965 36700160 8bitmime delivery multirbl sendmail example charset openbsd version charlie content foxtrot subject pleased message checkmx toolbox address ircnow server inside tester itself port25 inline enter ascii hello alpha bravo esmtp delta https plain tools works dnswl valli size quit meet data rcpt ehlo with from help auth echo that text type 221 www com 250 bye org 354 220 you ok tv
+Donations.RecentChanges:1726172114:  : recentchanges donations 28t16 2024 jrmu 16z 05 38 by
+Ngircd.Ssl:1726172114: Acme-client.Configure Crontab.Edit Pf.Guide : troubleshooting uncommented connections certificate automation encouraged additional configure reloading necessary establish providing following otherwise openhttpd encrypted dhparams examples optional blocking automate hostname certfile rulesets properly firewall incoming downtime request putting _ngircd restart cronjob because renewed keyfile openssl seconds private replace copying expires process crontab renewal server client longer actual random expect before listen enable signed dhfile unable bottom daemon reread signal allows result simply highly ensure check pkill needs order certs chown 16697 would using which sleep visit after users title 16667 quick guide lines files above ports proto pfctl exist first begin pass make this into note doas with will that your 6660 9999 6669 edit acme must have once then 7000 days 6997 send were 2048 wait does want each see crt etc can log var may hup 300 tcp tls two are pem out let its by 90 of
+Unix101.RecentChanges:1726172114:  : recentchanges february unix101 11t17 jrmu 2022 2024 18z vi by at 08 16 pm 27
+Sshd.RecentChanges:1726172114:  : disablepassword recentchanges configure corrected lohang chroot 12t00 05t15 07t03 sshd jrmu 2024 typo 11z 17z 49z 54 by 08 52 06 43
+C101.RecentChanges:1726172114:  : recentchanges 01t18 c101 2024 jrmu 37z 08 05 by
+Iked.Roadwarrior:1726082313: Iked.Sitetosite Dns.FQDN Doas.Configure Pf.Intro Openhttpd.Configure Vpn.Vpn Unbound.Configure Pf.Configure Unbound.Blacklists : ikev2_childsa_enable ikev2_ike_auth_recv 0x3d1dc86e07c0cb15 0x964bd34b809388a9 0x9b48ee25a0b56672 confidentiality troubleshooting authentication iked_activesas iked_dstid_sas 0xceb3d571400 0xceb3d56a780 configuration encapsulating 0xcebae8df000 0xceb3d556c00 0xceb3d55e780 0xceb3d57c800 interoperable certificates associations authenticate installation instructions dynamically roadwarrior established information ike_sa_init configuring destination unsupported permissions sa_childsas blacklists 0x24ce827e 0x7c42210d connection 0x2b3e01ae 0x41576324 addressing sitetosite 0xb5cda039 proceeding curve25519 statistics configured 0xc61f7d48 0x11f53136 exchanging iked_flows internally 0x6f31fa50 forwarding directives 0xffffff00 installed following interface processes protocols daemonize verbosely responder qualified operating initiator generated depending webserver listening openhttpd necessary filtering authority openiked external consider received internet families download security commands expected ipsecctl username password bypasses assigned sa_flows hostname solution properly icmp_seq destname included probably initiate iked_sas valuable starting transfer networks together resolver unwanted outgoing supports obtained machines mschapv2 enabled handles running packets example gateway confirm openbsd srcname replace working udpecap pubkeys traffic unbound similar servers provide depends another clients passive tcpdump request consult meaning refuses caching assumes systems require through handled netstat client1 copying because default writing control devices pkg_add vether0 sysctl 830185 allows common policy 837528 ext_if tagged guides export 830193 domain ipcomp loaded ikectl 837375 define turned create change virtio folder reload htdocs public actual isakmp import ignore method ircnow access 119882 single simple errors 139849 159846 tunnel listed values 139942 itself before 159754 behind please 119770 unique verify output report lookup native trying secure rcctl local block bytes srcid range being there group input could these ecdsa https 20406 using peers quick reply clean pfctl rules check users setup first wants about relay debug intro inet6 final match which loose 63988 33324 valid chmod macro 43204 needs certs 37113 based 10591 faq17 iface fully title lacks nexti above below 19976 shell fqdn mail from ispi show enc0 mode time rspi such data make your that with 6404 1698 2605 sure ping type aaaa vio0 upon echo will doas must grep link stop read spis more sha2 hmac send sent like 0600 note also ipv6 pool sits used give this have easy both root into crls many most some find file pros edit only acts html 117 sad org lo1 etc 500 0x0 100 2d3 www 192 aes 128 gcm can dns 509 ttl 297 191 vpn vps are off 144 150 raw 194 has tee 251 ssh tdb var see rsa eap who may crt 235 zip too 518 464 589 tmp pfx ssl 127 tgz rdr xzf esn prf 256 ip6 ah ax dv mx
+Openbsd.FilePermissions:1725814737: Openbsd.Setuid : filepermissions 148089896932537 unpredictable unfortunately login_lchpass consequences login_passwd unauthorized login_chpass traceroute6 sshd_config unexpected forwarding themselves lockspool otherwise username1 username2 installed processes teammates suggested possible td309339 software checking binaries commands packages _dovecot accounts applying shutdown settings security downside libexec however disable privacy keysign warning created openbsd folders archive mailing viewing prevent usermod serious _identd related adduser program retired further changes powers client easily hiding review secure botnow daemon cannot htdocs denied server uptime member others nabble kernel setuid prying _smtpd remove leaves authpf logged helper access method launch delete decent breaks groups around these allow files chown fixed watch chmod _dbus latex local patch added those wheel users could ping6 title their ttyp6 avoid there until ttyp0 which world snoop shell https 0750 rwxr what this suid hide doas data ways utmp acme root wtmp home chfn noip want then sbin read pppd will that with chsh find 4000 rwsr your risk lprm make info sure logs from only eyes path marc 7691 many tech turn html list they soon like have also get may etc usr see apr off x11 who var 168 jan new don bad one ips 192 run znc amd www has n7 rx to 73 36 12 9k 03 35 10 if cd lh 17
+Dovecot.RecentChanges:1725635775:  : sharedmailboxes recentchanges sharedfolders pigeonhole december renaming dovecot command january install sylv1a 10t14 style izzyb 26t23 find lock 2023 dirs down 2024 2022 also 57z 07z mkf fix 30 03 at 04 pm by to 16 06 55 31
+Crontab.Edit:1725625711: Openbsd.Vi Ksh.Editor Opensmtpd.Configure Opensmtpd.Aliases Cron.Suppressmail : automatically notifications environmental instructions suppressmail periodically maintenance represents configured optionally opensmtpd including variables necessary newsyslog inclusive undefined divisible correctly following important scheduled installed properly saturday produced commands asterisk directly possible monthly openbsd aliases libexec crontab cronjob contain columns default however english ensures example located running details editing confirm whether because minute mailto output emails rotate editor easily change stored daemon typing reload bgpctl values weekly future sunday script hourly edited should syntax simple random server visual client these owner times daily dates files first every lines spamd shell setup flags title using https range valid means three there note wday mday 30am full list that from this says next then sbin rpki logs home send user make tabs your been them jobs when both uses have will need some runs root want path they org are etc for usr ksh any 0th see has can six of 11 by 59 6 7 8 2 4
+Awk.RecentChanges:1725566817:  : recentchanges usage 05t20 barth 2024 awk 13z 09 06 by
+Awk.Usage:1725566773:  : corresponding instructions particularly information manipulate expression containing performed separator ““” “”” invidious searching essential presented delimiter title” keywords learning variable element follows defines options records columns extract “this command defined between number fields abc” obtain entire filter source 9yozmi allows useful output change prints end” before after apply begin first value https lines usage being watch named linux users yewtu last “1 used echo file each text that will 9” “a when been zwok read the ofs awk are set can row has you nr 2 5 4 3 6 0
+Awk.Usage-Draft:1725566760:  : corresponding instructions particularly information containing expression manipulate “”” performed delimiter ““” invidious separator essential presented searching keywords title” learning variable command columns defines element options extract records between defined “this follows entire source number obtain fields abc” filter allows before useful 9yozmi output change prints end” after apply begin usage value first https lines draft users yewtu being watch named linux echo “a 9” each “1 when text used last file will that read zwok been awk the are ofs set you can has row nr 2 3 4 0 6 5
+Sed.RecentChanges:1725563091:  : recentchanges usage 05t19 barth 2024 sed 22z 09 04 by
+Sed.Usage-Draft:1725562966:  : respectively description instruction insensitive cellspacing replacement cellpadding characters processing sequential debugging following execution principle operation replaces commande tableend possible contains commands modified storage deletes pattern content perform repeats example applies between appends comment meaning defines several options quotes labels prints global headnr allows reused output breaks number branch editor border stream copies stages insert change before syntax memory writes space after usage stops moves first lines swaps draft input works zones means least file nbsp idem with that case sets goes much then done adds hold been does next main from has vim not but abc get can hs of by 4 1 5 0 3
+Got.Server:1725485490: Gotweb.Install Got.Repo Got.Usage : _gitdaemon currently installed possible verbose example nologin project replace pkg_add crontab assumes server public export domain gotweb manage create repos guide mkdir clone lacks using usage your base path with name doas this have need chsh sbin its www and the own var set com now so to up 5
+Ipmi.RecentChanges:1724827051:  : recentchanges 28t06 ipmi java 2024 jrmu 49z 08 34 by
+Ircnow.Media:1724394580:  : linux_magazin_en libreplanet2022 translation outline_220 gopherproxy interview extension freepress marketing ircwebnet llorente linuxint workshop magazine bitreich tgtimes italian network rfloat ircnow utenti events issues assets attach slides design images users https media video title width 300px aaron ruben degli logo 2021 with rete www and png pdf lnm the for com org 249 svg may fsf img by 09 of 97
+OpenBSD.OnOVH:1724288083:  : grub_hidden_timeout_quiet unfortunately grub_timeout instructions officially operating procedure supported 40_custom countdown following installer templates menuentry directory supports ovhcloud kopenbsd download provided specific systems minimal default finally debian ubuntu effort please update should output gunzip msdos1 hosted config normal reboot second select these amd64 enter https false title onovh allow guide linux base only with will next edit this root onto over when able note curl work user want vps run www com and add etc now see you hit kvm set how cdn org pub hd0 30 be rd go we by 10 12 gz 11 7 5
+OpenBSD.OnOVH-Draft:1724287687:  : grub_hidden_timeout_quiet unfortunately grub_timeout officially following templates supported operating menuentry installer procedure 40_custom countdown provided provides supports kopenbsd ovhcloud minimal systems default finally output please debian select should hosted gunzip effort reboot update config msdos1 second onovh amd64 login fresh https false enter title draft guide linux allow edit root will this only curl user over able next when base note with onto vps hd0 you set the now etc and add com www run kvm pub cdn org see how hit be by 30 go we gz rd 10 2 7 5
+Dns.Vhost:1724097247: Openbsd.Openbsd Openbsd.Znc Openbsd.Psybnc : connections configuring configured resolution associated addresses recommend following remember hostname fallback cooldude networks creating yourself pointing possible properly normally supports specific connects multiple hostmask bindhost nickname perform pointed example forward running instead provide happens another confirm lookups reverse however content suppose section binding bouncer domains servers openbsd records unique vhosts choose psybnc ircnow client notice logged assign rescue custom answer entire anyone single either subnet entry words title since world would money using heart which could binds brown match ident users means often first check aaaa both when ipv4 must need each will upon ipv6 have this from that only give want d00d then such tell 2001 c001 even rdns 3600 arpa rely same with john cost take ptr set org can 192 168 znc and db8 dig way isp had get lot out why 64 by 48
+DNS.SPF:1724096299:  : introduction simpletable transition 0123456789 pretending temperror temporary addresses permerror determine framework mechanism qualifier softfail sortable phishing megacorp matching stopping matches example account meaning records current unknown becomes useless neutral servers between scammer nothing follows someone policy accept subnet almost domain border sender cannot reject action others result marked prefix proper always please system anyone works width class given still allow email check might there right spam real ipv4 from want fake mxes spf1 tool what this does uses ipv6 aaaa none bank that your read 2001 open pass http will deny dns and for 168 ips ip4 192 255 ip6 db8 100 how set don but 000 ceo why org www bad my up 24 96
+Openbsd.Dump:1723951123: Openbsd.Restore : irreplaceable incremental restoration filesystems destination specifying partitions corruption downloaded functions following elsewhere lightblue dumpdates directory available complete security continue location actively requests actually capacity redirect remotely standard username overflow requires password prevents modified document restore options mounted warning instead openbsd helpful pushing backups machine command example include dumping current without chflags concern garbled created profile already mistake setting section details backing pulling written account padding version bgcolor perform special because besides process classic usually cancel secure nodump better backed ircnow script pushes access update easily folder screen htdocs md5sum entire source useful output always before primer notify passed server enough unless copied remove margin simple define other lower makes dumps level words wheel since above pulls title crash drwxr games using which group reset means forth those model x11r6 doing needs never space tells abort enter least local 1005m https occur being right black block later these swing doas will lost data root home cron line your code next skip last time adds note obey then call more have been ones must them type from host only this idea echo keys ctrl izzy some path view they 4452 size auto that edit 4608 3072 1024 5632 much disk sure tool done very left sd0f sd0e sd0d 153g 192g sd0k 844m 111m sd0a used made full copy mnt dmp var org etc ssh may dec usr run www how vmm any pwd see end was are new get dev lib tmp 5em 1em has nov oct 512 bin 22 14 7g 4g 41 2m 0g 9g df 28 16 21 33 17 47 18 29 by
+Hostnameif.Static:1723951123: Vmctl.Usage Openbsd.Ping Openbsd.Netcat Openbsd.Traceroute : configuration unpredictable disconnected abbreviation immediately abbreviated configuring connections networking traceroute improperly attempting configured production hostnameif unfiltered addresses rebooting interface following something prepared ifconfig requires netstart replaced followed provided assigned commonly mistakes practice services specific waiting openbsd serious problem warning bouncer servers example aliased account forward gateway specify default similar packets seconds restart console creates running without another letters static mygate dozens device should length unique subnet prefix netcat delete rather access before change adding actual serial inside failed virtio router manner number share sense first allow makes exact usage lines flush vmctl shows after ping6 using masks inet6 added reset doesn where given match above shell title users https cause stops 143a sure 0000 0db8 387e 9b1d ipv6 2001 3511 your file sets ipv4 each note from doas will must need this that vio0 time down just have test real want 200e were look case 2607 f8b0 400a dhcp best ddos than more same when then loss 192 168 org ssh isp may has 100 80a its and if0 new one can fly 255 any get but put 48 30 by of
+Vmm.UbuntuIso:1723951123:  : a4acfda10b18da50e2ec50ccaf860d7f20b389df8765611142305c0e911d16fd 843938df228d22f7b3742bc0d94aa3f0efe21092 partition_offset installation fingerprint sha256sums indication signature ubuntuiso processed automatic keyserver installed interface certified checksums presented libraries perfectly isolinux vesamenu releases generate mt86plus libcom32 115200n8 imported download username vnconfig autoboot vmlinuz console changes include trusted version provide primary support belongs signing cdimage switch0 unknown warning default pkg_add libutil xorriso already memtest mkisofs giocher openbsd serial umount lladdr enable rescue kernel append initrd normal number casper verify public memory joliet inodes update locked create modify search should diffs label rqtxt words https taken ideas qcow2 amd64 cdrom 1024m owner table cache ttys0 quiet vnd0c title these steps gnupg total jammy guide there mkdir match using doas live recv path grep 2021 info emul size true with this 2012 from good that 2023 made mode will when type root help then disk make must grub into 2018 home else stop vmm hwe vda pdt gpg dev aug thu etc new not for ftp rsa vga you and bin c32 cfg sun feb old run 788 two mon are bb cp 04 ee 57 34 07 33 gz 35
+Openbsd.Pleroma:1723951123:  : platform_provided_libvips authorized_ssh_clients vix_compilation_mode generated_config troubleshooting connectionerror administrative pleroma_server configuration microblogging emailaddress httpd_server installation dependencies certificates dbconnection request_uri _postgresql permanently activitypub remote_addr server_addr server_port succesfully recommended configuring information imagemagick environment configured repository websockets initialize sufficient repeatedly everything installing terminated openfiles ext_inet6 stacksize installed paramprob listening interface directory following dedicated retrieved challenge temporary http_host uncomment executing forwarded implement friendica describes replacing corrupted depending protocol location _pleroma 50331648 instance database upstream variable ifconfig starting infinity software disallow enabling loopback datasize behavior finished security required features strictly cap_mkdb consider yourself pixelfed increase properly severity peertube multiple exchange internal possibly username identity messages mastodon federate hubzilla setup_db creating attempts mix_prod redirect libmagic exiftool fuctions requests options follows default specify shminfo sitting reverse disable datadir content command started encrypt migrate running working session another mix_env current crontab reindex openbsd because timeout getting headers respond example keypair backlog nodelay network replace unreach echoreq traffic seminfo version pkg_add contrib support creates maxproc profile servers setting friends editing control useradd misskey return htdocs forget robots reload should rebar3 erlang output double latest domain family ffmpeg elixir syslog window single values social secret insert folder relayd failed random adding higher policy macros highly plerup having assign enable needed append export ircnow during before lc_all toobig icmpv6 daemon adjust buffer bottom trying sysctl shmmax semmns kernel safely vacuum online script rights likely initdb reason larger update starts reboot people pgdata closed order shell table block quick rcctl match icmp6 pfctl agent check asked limit enter still clone trace class local first press write proxy en_us https login state avoid rules apply front gmake title mkdir scrub using there after while could which crash three under guide again paths lines bunch means 65536 doing seems timex strip known cmake might type pass that psql sets root will take some once doas exit this from with then help urpf drop skip than copy tmux when pick json 4000 done home into true what 512m 8182 been stop deps stay pool recv ipv6 want them have over fedi acme sack next didn ipv4 used only wiki save well hurt grep www6 flag 2048 has but was git exs can 127 new txt hex tmp etc 302 gcc got aux ksh bin gnu utf phx fix url tcp due mvo via api let ftp its any 128 tls won php fit by cd ln 15 ok df 80 wx p5 v1
+Rad.RecentChanges:1723951123:  : recentchanges configure 01t20 2024 jrmu rad 13z 06 26 by
+IP.RecentChanges:1723819720:  : recentchanges myaddress 15t15 barth 2024 41z ip 08 29 by
+Dhcpd.RecentChanges:1723819720:  : recentchanges configure dhcpd 15t16 barth 2024 33z 08 30 by
+Ifconfig.Change:1723745535: Hostnameif.Static Vmctl.Usage Openbsd.Ping Openbsd.Netcat Openbsd.Traceroute Nsd.Configure Znc.Chroot Ngircd.Install Unbound.Configure Relayd.Acceleration Pf.Guide : disconnections configuration misconfigured troubleshoot acceleration hexadecimal configuring simpletable description 0xffffff80 configures networking 0xffffff00 interfaces proceeding 0xffffffff equivalent hostnameif restarting traceroute addresses following listeners reconnect intercept migrating performed services ifconfig notation sortable netstart outgoing adddress gateway default console aliased written openbsd creates because disable warning waiting records unbound suppose example seconds install remains relayd either subnet packet filter should update netcat dotted static chroot ngircd device failed serial access before action border change double ensure values lookup virtio adding mygate prefix length fourth routes check https learn using width could after class usage flush vmctl stale guide there hosts files first allow inet6 other ping6 third shows with mask make 2001 line ipv6 will next need edit then this step doas have vio0 your 2607 f8b0 400a 200e same zone down test ipv4 that loss both they quad read 128 nsd old was are new 255 man 192 db8 168 set 80a and org 100 znc if0 any vps has may pf to 30 48 of
+Dhcpd.Configure:1723739433: Openbsd.Tcpdump : troubleshooting configuration specifically dynamically declaration configuring information convenience functioning networking subdomain2 subdomain1 recommends 0xff7d00d5 convention improperly consortium responding following specified configure addresses sometimes interface indicates connected listening directive fictional uncomment commented repeating broadcast available truncated ethernet machines requests software hardware provides messages internet includes hostname included possible physical complete openbsd reading servers further clients routers contain caching unknown example replace because specify usually options however setting netmask suppose tcpdump packets present details labeled sending values define assign second expect leases 292622 sample device subnet allows manual inside 292615 en10mb starts unable remove static method helped actual system enable daemon either droms lemon dhcpd write shows bootp 39900 error ralph named rcctl below fixed using other first hosts lines flags range names https leave above books title since which users based same have with next from that been your make skip here keep this 0x10 deny html true 0800 will like link both type logs used ipv4 sure want also only real case view wire pool 100 198 but and if0 255 var not one can org was see may get etc xid 342 254 tos has did e8 24 68 8b 27 11 7b 7a by 67 02 06 51 01 31 13
+IP.Myaddress:1723735781: Vmm.Install : information 0xffffff00 myaddress localhost addresses interface reachable resolver1 broadcast determine probably multiple external followed username ifconfig publicly likewise example machine virtual openbsd install replace current netmask opendns records without refers always device domain system google driver typing itself number virtio inside letter short using which begin title check learn lines least setup https about uses inet made such your that this will tell look more find once vio0 myip real want have also run can few dig com the man vmm txt ns1 one org are not 255 168 192 127 has and of by to 10 4
+Relayd.Acceleration:1723662678: Pf.Guide Leafnode.Install Tcpip.Sockets Znc.Relayd Openhttpd.Configure Dns.Records Host.Usage Openhttpd.Hosting Znc.Chroot Telnet.Http Netcat.Http Acme-client.Configure Ln.Intro Ip.Myaddress Openbsd.Ddos Openbsd.Loginconf Openbsd.Rcctl Openssl.Http Openbsd.Syslogd : troubleshooting acknowledgments 20210414025234 configuration eavesdropping acceleration introduction simpletable recommended integration connections permissions server_addr configuring remote_addr server_port certificate application transparent webhosting encryption foreground commentary convention configured indication forwarding plaintext necessary forwarded listening challenge fullchain instances myaddress hostnames verbosity debugging openhttpd loginconf different newsyslog splitting resolving following available correctly selective openfiles directory extension sometimes stacksize indicates afterward localhost location rotation starting service2 service1 bouncers services properly protocol messages searches straight addition template database produces enormous complete filtered requests disabled listener examples priority leafnode sortable balancer normally features exposing replaced optional mistakes increase symbolic possible backlog headers warning private maximum openbsd keypair however www6tls another domains provide already default section android instead running present reverse without devices syslogd quickly setting openssl servers content protect sockets records happens forgery respond install restart directs td76656 missing labeled archive enabled prevent applied stunnel gateway simpler changes usually listens haproxy cannot relayd actual netcat wwwtls secure append syntax public client should failed errors update sample border chroot telnet before handle define detect serves packet highly turned create useful common daemon attach entire assume blocks guides typing please either notice nabble insert ircnow number bottom relays rcctl value class check match large tcpip there which https would usage close being width entry wrong these using above avoid three where certs touch fails lines first queue based pfctl shows below while doesn begin known strip lacks users tight title setup panel those links index still allow layer share acme icmp html into them test have that 7691 your 2001 this logs from next doas same bind will wish what uses want sure make send must real 1338 auto sack well 4096 need look like ones they both ipv6 ipv4 fill work stop then keys only also edit when mail ends last used ddos load pros such case than man znc see dns ip6 443 its 96m any var say may two sni has dvv db8 168 won 192 ip4 crt pem 100 128 127 bnc ios put of by 80 go n7
+Ircnow.Codeforce:1723319014: Freedom.Freedom Ircnow.Servers : documentation verification enthusiasts interviewed contribute practicing extensions subscribe madeonirc marketing codeforce community articles hardware personal complete training promoted projects internet redirect servers qualify mailing sending provide network virtual private methods freedom improve website cloud9p support regular contact attach rfloat ircnow inter9 coding duties finish friend needed commit worked social mutual reward become minded deploy resume below hours email width staff using share write after refer bonus tasks first weeks proud media 80pct title learn basic apply novem admin have duty help find your many with time user list wiki hang join plan over http blog like keep team the org out get and few one can add own who how png of to by cv ll 2
+Ircnow.CodeForce:1723318703: Vps.Vps Ircnow.Goals Freedom.Freedom Shell.Shell Ircnow.Howtoask Openbsd.Openbsd Openbsd.Training Openbsd.Ongoing Ircnow.Roadmap Third.Third Ircnow.Finances : administration documentation experience optionally commitment codeforce tutorials homestead interview following minutemin marketing improving questions finances training software customer internet progress familiar salaries sysadmin howtoask warriors recruits applying freedom roadmap openbsd promote improve someday ongoing minimum account request joining require network support willing friends duties ircnow finish before invite system reward afford cannot become resume coding deploy report rfloat attach goals third shell weeks party learn basic track after hours email staff seems title 80pct corps elite width while proud write smart would your time this help like team hang with must user send that lead unix take good few add the new vps way and out png org but pay if by cv 5 6
+Sshd.Disablepassword:1723002737:  : challengeresponseauthentication passwordauthentication authorized_keys disablepassword cryptographic passwordless bruteforcing authenticate sshd_config technically remembering bruteforced connecting scripting important disabling basically passwords generally utilizing slightly manually powerful security securely enabling testuser prevents enhances transfer provides features disabled referred protocol machine amazing through test123 logging enabled command distros defeats purpose process copying without instead suppose beauty notice better cannot ircnow sshing server others id_rsa client string misuse before remote unique allows method after which still login paste pipes above mkdir using there again enter linux works three title usage model based would eases they them need very this well only long time uses will your into host want kill edit that lies also have most same ways from side are but org vps one run its far try pub var pid few ask hup etc add of do by 4
+Iked.Binat:1722983444:  : 0xffffff00 challenge location hostname example openbsd gateway dynamic request passive vether0 address tagged ext_if listen isakmp server config proto strip roadw ipsec local binat match quick known ikev2 srcid httpd denis enc0 inet from 2020 port acme resp iked well pool vio0 init peer root etc 167 lo1 104 udp exp com 241 any dns rdr 127 tcp 68 51 pf up 80 52 11 34 18 53 22
+C101.C101:1722535537:  : particularist contributed mainrechner posterdati teammate creative licensed openbsd philipp commons friend primer attach helped https write under peter guide c101 for pdf the our has us
+Tcpbench.RecentChanges:1722353764:  : recentchanges tcpbench usage 30t15 2024 jrmu 27z 07 34 by
+C.RecentChanges:1722271335:  : recentchanges cprimer august scanf 05t18 jrmu 2023 2022 mkf 29z 10 51 by am 09 at 57
+Iked.Roadwarriorvmm:1721892591: Iked.Roadwarrior Vmm.Intro Vmm.Configure Openbsd.Install Dns.FQDN Pf.Configure Unbound.Blacklists : 0x964bd34b809388a9 0x9b48ee25a0b56672 confidentiality iked_activesas roadwarriorvmm iked_dstid_sas 0xceb3d56a780 0xceb3d556c00 0xceb3d55e780 0xceb3d571400 0xceb3d57c800 encapsulating 0xcebae8df000 configuration associations established configuring unsupported information sa_childsas permissions appropriate 0x7c42210d 0xb5cda039 0x6f31fa50 interfaces 0x24ce827e blacklists 0xffffff00 forwarding 0x2b3e01ae iked_flows 0x41576324 statistics configured listening authentic install75 mentioned qualified following sa_flows simulate hostname ipsecctl switch11 specific vmdusers outgoing firewall protocol icmp_seq families hardware unwanted destname machines iked_sas internet properly received external security designed expected exchange example unbound require network control openbsd testing replace tcpdump packets enabled virtual sysctls udpecap confirm pubkeys request default netstat through vether0 because address dynamic srcname cloning gateway assumes running working passive handled traffic vport11 similar tighten 119770 inside ircnow ext_if egress filter ipcomp socket server locked lladdr reload bsdiso access 139849 139942 420194 public output covers 420216 tunnel 420214 adjust 119882 verify ikectl images 830193 837528 tagged lookup 837375 memory 159846 isakmp create values should 830185 159754 domain chmod those fully input parts title ikev2 rcctl could https guide nexti using start intro srcid iface there bytes local being setup qcow2 tap11 owner cdrom tap22 block match allow reply inet6 19976 route 37113 43204 10591 first 63988 33324 veb11 pfctl 20406 quick vio0 init resp enc0 with mail echo type link time from data ping that 1698 6404 2605 aaaa ipv6 sure make fqdn ispi rspi show more peer sent need this each disk pool home doas copy both rule read have help 0600 only real 117 man org can you etc ttl not 100 cat ssh 500 192 dns 0x0 793 255 297 695 see tee pol has 2d3 251 may nat 191 lo1 144 150 any tdb raw var sad aes 128 gcm rdr 127 ip6 ms 53 1g 8b we of ah 23 mx
+Iked.Sitetosite:1721887487: Iked.Roadwarrior Dns.FQDN Doas.Configure Pf.Configure Openbsd.Rcctl Tcpdump.Usage Iked.Sitetositevmm Vmm.Intro : ikev2_send_auth_failed ikev2_childsa_enable ikev2_dispatch_cert 0xc1a541e28fb2a7a3 0x30d3299fdb266d78 0x7556f8d937f9a032 0xc0e414c2ee02f63a 9dc861be02b4775d e477a8efd0aab8c3 0000000000000000 confidentiality iked_activesas authentication iked_dstid_sas 0xe240b59c000 encapsulating 0xe2401b3b800 0xe2401b15800 0xe2401b4b800 sitetositevmm 0xe2423e83600 configuration 0xe2423e99900 0xe2401b35780 0xe2423e8fc00 interoperable encapsulation decapsulation associations installation certificates establishing notification authenticate established sa_childsas unsupported ike_sa_init configuring roadwarrior information permissions appropriate iked_flows 0x8be2ef36 connecting 0x7b7d374e 0x6a275df5 0x9cfd8ba5 curve25519 connection 0xfcbab443 foreground 0xcb5c66a6 respective successful afterwards exchanging 0xf997b9a0 statistics forwarding 0xa484d765 interface configure initiator listening exchanged untrusted necessary responder connected succeeded generated confirmed addresses qualified ipsecctl followed response sa_flows internet gateways networks security desktops icmp_seq transfer protocol messages properly normally iked_sas 00000001 initiate ike_auth allowing families included possibly directly openiked received solution machines mschapv2 expected external sysctls servers because example tcpdump default netstat devices openbsd pubkeys replace resplan initlan passive provide packets sa_free invalid running handles refuses request traffic laptops through consult instead created enabled private virtual omitted between attempt sending another testing require system public 520270 tunnel assume policy 455770 isakmp loaded 520825 across behind trying secure cookie subnet ext_if access either domain native appear should 463241 allows output ikectl actual folder 446068 define verify en10mb simple method reload please filter phones 451306 needed start these local bytes pfctl rules https macro first needs loose check srcid chmod refer usage intro guide reply prior input nexti shows 19976 being rcctl using there could 20406 group below error msgid title based ecdsa their quick which users shell peers faq17 clean names fully setup least this echo type link recv 0800 both hmac with fqdn sha2 that spis some from will want like find same note lack doas enc0 once time ping aren copy data rspi have them area ispi skip vio0 html inet 0600 pros sent they more also lans sure make aes 128 has 192 560 198 you 100 com man vpn org etc gcm www can sad 0x0 500 see 459 len 539 417 277 518 581 509 eap rsa 235 may esn dns udp 369 raw 144 new tag 150 lab 491 log tdb 304 too 108 ttl 523 prf ssh 256 tee ah of 05 64 11 e1 dv
+Tor.Irc:1721872077:  : novanetia3hthx2mlipvunm3akkvreuztojzixxmm527odjax5yvj5ad bsdnetoezbtsbrzlnrgxn7iv6qokouuyr4dkd7f2xt6fmmacvi2kjjad oftcnet6xg6roj6d7id4y4cu6dchysacqj2ldgea73qzdagufflqxrid ircnowww2n24aluccfzydqelohej55yrgfkpnp6jc6geijmqht6w77yd 4ufrikyorlatp5ekgz6tlre22v6b5jxqbiid6cp7nuhemklukiohidqd gm7pbm2ukiwbfnhwbqbwa4sie7o4uq24nbzhdlyamutifu7uxwgkymyd authentication virtualization sasl_mechanism sasl_password sasl_username architecture distribution alphabetical registration workstation information simpletable thunderirc connecting virtualbox ircforever ssl_capath liberachat ssl_verify following succeeded bsdforall associate addresses encrypted anonymity revealing configure including software networks directly download supports hostname sortable gateway freeirc through install hexchat another example servers looking restart message clients access whonix border needed routed logged system shell doesn irssi check enter plain onion press certs guide their login which class being width there your uses from boot most used mind type many 6697 text that irc6 just 6667 this some ipv6 well ipv4 and tor via org can 100 ssh may one how etc by
+Unix.Reading:1721452120:  : dbs_a_def_rwt_bibl_vppi_i1 pd_rhf_dp_s_all_spx_wp_26 olp_aod_redir_impl1 interconnections internetworking implementation interpretation communications revolutionary 9780143122791 9780470287156 9780684832678 understanding 9781555582739 professional transactions interprocess cryptography illustrated engineering programming environment typesetting foundations technology definitive 0131103627 013937681x 1484924479 0139376818 1484924471 097903423x 0131103628 0201615869 weinberger 1695978552 0139498761 0201634481 0979034237 0321486811 0470287152 0201634953 1555582737 0130810819 0130810816 0139498763 essentials 0201563177 philosophy formatting 1732265172 0471128457 1732265178 0201634952 1695978553 0471034665 0201633469 0201633467 020161586x 020163354x 0262510875 0201549794 accidental 0321486813 0132017997 0596001088 principles 1642350028 0262510871 1642350029 0596001087 electrical 1573980135 1449389554 1449389550 0130118981 techniques 0201633542 0130118982 0132017992 1593274769 0143122797 0201549799 1573980137 commentary available structure protocols computing publisher hardcover compilers september doraswamy cathedral kernighan paperback operating silverman intranets switching language elements hansteen absolute switches learning printing computer programs document mt_other schuster services stanford february prentice november practice painters pd_sbs_2 standard mitpress security naganand annabook networks writings foreword schneier advanced complete infolab january edition bridges private english mastery covered richard virtual openssh addison origins wizards jeffrey raymond barrett stevens routers penguin plauger reprint openbsd history science 9304042 default 2633296 gertner factory michael seifert pearson harkins musings perlman hackers edwards maurice reading 9615336 routing hamming silicon stephen october 5900491 0098268 ritchie garcarz digital applied product author reilly online bazaar amazon system starch design volume alfred wright second dnssec jeremy wesley narain source victor gehani august series stripe memoir thomas daniel monica ullman secure daemon detail relayd hafner sr_1_5 dennis graham domain peter linux wiley april httpd owner guide lions lucas https ideas 54675 march bruce ipsec james tools pages sites files index brian sethi doing media shell books troff first simon katie where salus radia style droms lemon lally ralph reed jrmu focs html isbn 2003 ravi unix 1996 2008 gary none late stay 2006 1998 4bsd 1990 1988 bret 2014 1992 2020 hall mike free 1994 dhcp 1999 sicp catb 1977 july asin bach 2013 1986 labs bell 1174 june 2010 1983 paul eric pike 1995 2001 john peer from nntp 2018 3rd 536 not new may 242 232 206 2nd www 248 589 1st 400 6th 241 ref esr edu org rob gnu awk jon aho tcp 576 art 580 – lam 328 big by up ii gp mv pf
+Openrsync.RecentChanges:1721403481:  : recentchanges openrsync chroot 04t06 04t04 usage jrmu 2024 51z 23z 00 by 07 57
+Iked.Sitetositevmm:1721367954: Iked.Sitetosite Vmm.Intro Vmm.Configure Openbsd.Install Pf.Configure Tcpdump.Usage : confidentiality sitetositevmm decapsulation encapsulation encapsulating associations configuring unsupported appropriate permissions information interfaces 0xffffff00 forwarding 0xf997b9a0 0xa484d765 statistics authentic listening configure install75 mentioned exchange hostname designed machines gateways ipsecctl protocol families switch22 switch11 icmp_seq hardware simulate expected received switch12 specific security vmdusers cloning resplan openbsd default packets vport11 example initlan because pubkeys enabled passive tighten sysctls tcpdump netstat assumes request pinging virtual testing confirm locked bsdiso lladdr memory create mygate active public images ikectl inside should adjust ext_if tunnel isakmp output reload filter verify 520270 socket covers 520825 https tap21 flows start bytes rcctl 20406 works input qcow2 after reply prior tap22 usage route local using guide chmod srcid ikev2 19976 there iface intro pfctl being could title owner parts setup cdrom veb12 veb11 veb22 first tap11 tap12 tap20 tap10 inet peer iked from fqdn 0600 doas link next disk both home that echo type enc0 time only this help more sent lack real with have read data show vio0 vio1 sure make each and etc cat tee 150 ttl 144 org 100 198 192 ssh tdb raw 108 you man nat tag log udp see spi 304 run 523 com can not 45 64 ms we 01 56 8b 51 ah e8 1g 05 of 24 ok
+Ospfd.Configure:1721341370: Vmm.Intro Route.Static Ripd.Configure Nat.Configure Openbsd.Install Pf.Configure : rg7dhwe35a7sldmq 9qvfzwh3hie0less ub4gwbqhmjfjwjdv ajilrubq9uvsnp9x jwmmqoitxokfvh8i troubleshooting configuration redistribute information destination recv_packet configuring demonstrate hypervisor 0xffffff00 0xffff0000 0x80000009 forwarding interfaces 0x80000017 0x8000001b 0x8000001c 0x80000022 0x80000016 performing 0x8000000b connecting 0x8000000a 0x80000002 0x80000004 0x80000003 represents connected multipath broadcast configure following propagate necessary correctly install75 neighbors translate addresses practiced switch35 matching hostname switch23 switch12 topology internet switch24 machines switch34 vmdusers checksum database reserved external icmp_seq presumes required querying traverse indicate deadtime together multiple simulate routers ospfctl because nexthop default routing network vport21 message makedev openbsd replace similar claudio careful vport11 virtual devices patient ruleset seconds ensures verbose 0x97d3 lladdr around locked sysctl states 0x5601 egress subnet 0x4bc2 0x89ea 0x44b8 0x5ac0 static inside memory create bsdiso global 0x7598 longer minute system 0x49c9 proper routes 0xf2b3 0x63ac images 0x5976 public 0x2cb3 0xe7f2 reload cannot maxlen uptime actual tap342 prefix tap322 domain socket title crypt keyid https key24 ospfd key23 key35 key34 key12 veb35 masks input reach veb12 inet6 bytes veb23 veb24 veb34 vmctl tap44 flags above tap53 valid owner cdrom qcow2 shows iface bckup debug tap55 which below intra tap22 share nodes tap42 three there error using order setup guide range intro costs vio0 wait ever will auth area ripd link type 2018 vio1 vio2 find that this same very does full save mode then with have ping able disk home from note when also 1215 1224 need 1657 take arpq 1024 prio your may 275 etc 353 316 273 adv 272 vmm one 279 127 730 168 192 run 120 fib 241 104 167 ttl 277 181 see and exp any now man org ip6 if0 ips 20g 1g 8b r5 43 26 e8 48 36 r4 r2 r3 29 33 37 51 38 07 06 08 of r1 39 64 ms
+Irc.Clients:1721092188: Bouncer.AdiIRC Bouncer.Adium Bouncer.AndroIRC Bouncer.Atomic Bouncer.Colloquy Bouncer.Erc Bouncer.Hexchat Bouncer.HydraIRC Bouncer.IRCForAndroid Bouncer.IRCCloud Bouncer.IRCCloudWeb Bouncer.IRCCloudAndroid Bouncer.IRCCloudiOS Bouncer.IceChat Bouncer.IrcEX Bouncer.Irssi Bouncer.Igloo Bouncer.KiwiIRC Bouncer.Konversation Bouncer.KVIrc Bouncer.Limechat Bouncer.Mibbit Bouncer.MIRC Bouncer.Nettalk Bouncer.Pidgin Bouncer.Quassel Bouncer.RevolutionIRC Bouncer.SimpleIRC Bouncer.Smuxi Bouncer.Textual Bouncer.Thunderbird Bouncer.TurboIRC Bouncer.Vision Bouncer.WeeChat Bouncer.XChat Bouncer.XChatAzure Bouncer.Yaaic : irccloudandroid ircforandroid revolutionirc konversation proprietary irccloudios thunderbird irccloudweb simpletable xchatazure simpleirc emulation turboirc hydrairc androirc limechat sortable colloquy bouncer clients hexchat quassel nettalk textual weechat kiwiirc icechat license windows pidgin atomic vision mibbit adiirc border apache ircex kvirc gplv2 gplv3 igloo irssi yaaic adium class smuxi linux width mirc name wine mac ✓ 100 erc bsd
+Irc.Clients-Draft:1721092181: Bouncer.AdiIRC Bouncer.Adium Bouncer.AndroIRC Bouncer.Atomic Bouncer.Colloquy Bouncer.Erc Bouncer.Hexchat Bouncer.HydraIRC Bouncer.IRCForAndroid Bouncer.IRCCloud Bouncer.IRCCloudWeb Bouncer.IRCCloudAndroid Bouncer.IRCCloudiOS Bouncer.IceChat Bouncer.IrcEX Bouncer.Irssi Bouncer.Igloo Bouncer.KiwiIRC Bouncer.Konversation Bouncer.KVIrc Bouncer.Limechat Bouncer.Mibbit Bouncer.MIRC Bouncer.Nettalk Bouncer.Pidgin Bouncer.Quassel Bouncer.RevolutionIRC Bouncer.SimpleIRC Bouncer.Smuxi Bouncer.Textual Bouncer.Thunderbird Bouncer.TurboIRC Bouncer.Vision Bouncer.WeeChat Bouncer.XChat Bouncer.XChatAzure Bouncer.Yaaic : irccloudandroid revolutionirc ircforandroid konversation proprietary irccloudios thunderbird irccloudweb simpletable xchatazure simpleirc emulation colloquy limechat sortable hydrairc androirc turboirc bouncer hexchat quassel nettalk textual weechat kiwiirc icechat license windows clients vision adiirc mibbit atomic pidgin border apache irssi gplv2 igloo adium gplv3 ircex yaaic smuxi width class linux kvirc draft mirc wine name ✓ bsd erc 100 mac
+Ifconfig.Wg:1721091969: Resolv.Conf Unwind.Configure Nat.Configure Pf.Configure : um6z8cwgsze8vgb03szkfrjm2mu 1xuhx5g1c3veekxiqkfc9vc lizlmgtl5tm8eggl6btvbt 1lrchbbwkmoz0hqq1rxm 75hpwgy28bnrtrmkxk8 prtydtgrvgq2lo6yfru kzsvrkrakzxlz9au8 dbv9byaanivu2aw configuration respectively restrictions information transported configuring networking nameserver forwarding interfaces wgendpoint 0xffffff00 0xffff0000 configure addresses forwarded wireguard different generated typically listening localhost encrypted tunneled hostname wgrtable ifconfig internet publicly routable machines wgpubkey properly examples icmp_seq together netstart external securely resolver replaced uniquely autoconf normally tcpdump through traffic request openssl default process openbsd private connect gateway instead packets privkey rdomain caching because finally another routing sysctls broader strings replies errors wgport wgpeer verify unwind coming method static client create update beyond source loosen obtain device actual wpakey pseudo allows routed 060220 egress either 043339 base64 second repeat 043353 060209 reply these wgpka bytes wgkey might order basic using would wgaip https first since title pfctl setup which match from mqud must link grep time this uses data ping note inet such file have will type what loop 7222 come echo rand then make sure over 7111 with line nwid vpns sent next your used dhcp wifi join that are ips man wg2 wg1 if0 etc cat org nat wg0 168 192 udp 127 may ttl 255 378 own one now any cut dns can 775 10 we of sh 01 08 ms 32 56 t1
+Site.RecentChanges:1721055207:  : recentchanges september editable editform sidebar author field 29t14 izzyb site none make jrmu 2024 2022 31z 11 at 06 am by 15 05
+Terms.RecentChanges:1721055207:  : recentchanges privacy october august terms shell 21t20 30t14 2023 jrmu 2021 2020 01z mkf vps 54z at by 03 31 am 08 06 35 12 09
+Openbsd.Gopher:1721055207:  : developed community tutorials protocols different codevoid spartan history openbsd gopher gemini please having sdfeu alive https kept very what that note the old and due are web org
+Openbsd.Uim:1721055207:  : forcepackedfont bitmapfont libchewing libpinyin arphicttf following lc_ctype includes facesize cjkwidth settings download packages facename terminal profile desired between mkwidth pkg_add chinese toolbar firefox english current command openbsd inside zhuyin engine export zenhei change toggle window ubuntu dejavu en_us xterm match false these fonts space lines input packs true need sans your when gtk3 mono ctrl that will also want this doas wqy uim see new run fep utf 25 kc 8
+Stopm.Stopm:1721055207: Openbsd.Rbldns Openbsd.Acopm : authentication fingerprinting automatically unfortunately unregistered holistically authenticate fingerprints residential statistical introducing intelligent blacklisted probability combination determined completely configured motivation reputation attackers customize operators confusing filtering freenode chatting networks sculptor examples assigned properly identify simosnap fighting severely channels flooding outright consider designed memorize prevents username requests innocent realname services openbsd believe require defeats respond purpose cherryh connect evasion address dealing endless updated privacy reduces whether forcing attempt monitor joining minimal factors because ranging default banning install enabled closing present another combine lookup entire system series admins should normal ircnow placed banned limits behind policy easily notice rbldns appear server forced shaped access client statue caused before clumsy public forces users error stopm which acopm needs carve proxy based score scans badly block rough scale might guess build flags often range first their every makes check ircds today also have from than spam with fair must this ways hard done smtp most will some they http been port come vpns fork ends rdns does ctcp 0000 that isps here more sasl over aren good bans only mirc lots quit link and non how ssl has you znc our try did may who via new bot own set won 95 by ip we 16 10 45 50
+Mutt.RecentChanges:1721055207:  : recentchanges connect 23t20 mutt 2023 jrmu 43z 04 19 by
+Webnews.RecentChanges:1721055207:  : recentchanges webnews install january 2023 mkf at 06 57 pm by
+Minutemin.Server:1721055207:  : documentation weaknesses configure minutemin defenders correctly conflict workings strength commands brother without daemons useless against masters victory network server better before manual ircnow myself trying counts friend damage types inner users clean peace enemy there until ready heart guard abuse learn first title pages admin will legs bots like know eyes that them this life must mine best code keep arms than what many one its who pwn but not are set our nor so of up
+Psybnc.RecentChanges:1721055207:  : recentchanges install psybnc 09t19 2024 jrmu 04z 17 by
+Iked.RecentChanges:1721055207:  : linuxstrongswan recentchanges roadwarrior sitetosite newconfig configure october windows android 15t06 april st13g iked jrmu july june 2022 2021 tool 2024 58z 31z by 07 at 03 49 pm 38 18 14 11 29 01 12 am 23 10
+Vhost.Ircnow:1721055207:  : oddprotocol planetofnix ircforever thunderirc nastycode following lecturify shelltalk bsdforall freeirc ircnow vhosts offer org com the we
+TigerVNC.RecentChanges:1721055207:  : recentchanges tigervnc install january october 2023 hawk 2021 ssh mkf by at pm 11 56 am 30 06
+Xfce.RecentChanges:1721055207:  : recentchanges install january xfce 2023 mkf at 06 17 pm by
+DNS.Ipv4rDNS:1721055207:  : yyyymmddnn 2021072300 ipv4rdns username zonefile internet example address replace minimum reverse assumes refresh should actual serial origin master expire retry zones 86400 admin title ifend valid which arpa 3600 your this note with conf 192 168 isn ttl ns1 com nsd ns2 etc var ptr the soa of
+Php.RecentChanges:1721055207:  : recentchanges install january 2023 php mkf at 06 52 pm by
+DNS.RDNS:1721055207: DNS.Mail Dns.Vhost DNS.Ipv4rDNS DNS.Ipv6rDNS : identification automatically unfortunately residential information diagnostic performing traceroute dedicated separated confirmed similarly addresses beginning providers generated structure configure generally sometimes followed matching ipv6rdns ipv4rdns overview original pointer numbers reverse service records highest domains missing through example written between periods another finally suppose dynamic forward resolve sending because created finding lowest digits should coming stored lookup single points called system colons remove server normal ircnow define fcdns would works which first zeros found while total title using looks vhost tools order prove entry often email given allow vpses hosts helps every level nodes d00d many have isps 2001 c001 most your spam this fill from then mark dots root does tree only also with will want rely each name last arpa same like 0000 wifi 0db8 when need four uses here used what that one don may 209 ptr 192 was and 168 ip6 169 www see top way 141 can why but put 173 hex are org by 39 32
+Ircnow.Diversity:1721055207: Freedom.Freedom Vps.Vps Shell.Shell Ircnow.Servers Openbsd.Vmmuser Vmm.Configure Vmm.DebianIso Vmm.DevuanIso Vmm.UbuntuIso Minutemin.Bootcamp Ircnow.Goals Ircnow.Minutemin : responsibilities configuration installation experimental oregontrail billionaire recommended participate controlled hypervisor configured guarantees supporting monopolies contribute occasional community operating marketing minutemin corporate devuaniso ubuntuiso debianiso homestead portfolio anonymous diversity volunteer supported business monopoly favorite platform bootcamp planning familiar software offering training machines purchase verified accepted tutorial document proceeds personal welcome freedom payment website warning account provide startup openbsd unix101 virtual private servers vmmuser network towards digital against upgrade running through created ircnow inside elites future system center rigged finish rfloat attach answer mutual resume option ensure guides social claims charge friend method purely source there month shell users goals equal weeks learn apply admin using below staff dream refer photo media today email title guest trial agree width build usage 50pct send test that help blog with tech this keep able your find must will 5usd over make code join read love ceos four made life need add can who any one get how and set vps see new was don png org by 4
+9.101:1721055207:  : virtualization independence introduction connections redirection grandfather description disappeared replacement namespaces networking navigating filesystem describing components installing challenges navigation everything knowledge scavenger obsoleted introduce operators obsoletes protocols hierarchy emphasize dinosaurs utilities scripting software drawterm commands describe features advanced explorer concepts download linuxemu berkeley database factotum replaces explain unix101 through 9legacy inferno porting service servers lessons courses systems actions perform execute discuss machine process sockets message welcome telnet scroll island create editor civics 9front beyond finish inside native window either commit cannot access folder during chatfs mailfs gitfs ports pipes other there usage these party ramfs where level sshfs basic users mount start clues title using learn force also send read with list demo cwfs have upas that been text show plan next from what open repo your imap pop3 find give home hjfs will like rcpu acme auth hunt make used hold vncs halt must each turn into vncv some goes wsys line vmx rio set rdp who ndb smb nfs sam ctl new add him cat 3rd bsd 9p
+Rio.RecentChanges:1721055207:  : recentchanges customize 30t21 2023 jrmu rio 22z 12 33 by
+Gnus.Connect:1721055207:  : gnusencryptedauthinfo automatically gnusauthinfo appropriate application quickstart ‘auth’ newsgroups replacing following emacswiki gnusgmail smtpmail specific password brackets machine address content derived ignored service license connect nnimap manual better select server domain method stream email imaps login which items enjoy found gnupg using https angle under user your with text setq some from used port page this file well will name full node the and www yet put org run was ret 587 ssl com see may gpg cc 9 0
+Openbsd.Adduser:1721055207:  : encryption partition passwords questions fullname blowfish warnings username dotfiles creating mistakes default disable unbound nologin welcome message adduser reading openbsd goodbye another uration option prompt groups authpf method daemon pbuild logins silent couldn config chance shells passwd master xenodm invite check later enter rrect input there about added class staff worry guest will skel from home copy into 1001 bgpd doas send auto your path want find for znc ksh gid 999 bin etc don let any new all see csh uid ok if be
+Openbsd.Drawtermssh:1721055207:  : allowagentforwarding allowtcpforwarding x11forwarding forcecommand drawtermssh sshd_config connecting currently following username insecure sshdraw openbsd pkg_add conterm scripts install cloud9p however example emulate create glenda sshcpu easily append likely duser empty doesn infra match local then else into read echo this head here unix more http date doas you var bin org usr etc see cat can out ask may no of be wm up it if
+Openbsd.Icecast:1721055207:  : music_directory configurations authentication basedirectory installation audio_output playlistlog description changeowner destination certificate nonetheless directories permissions fortunately hackmemore mixer_type featureful mountpoint background livestream afterwards extensions crossfade currently randomize available localhost developed community passoword ezstreams configure streaming execution shoutcast fileserve playlists adminroot accesslog installed according otherwise determine depending optional hostname software password finished errorlog populate multiple security database _icecast somewhat encoding projects protocol icecast2 loglevel supports filename prefered username channels file_ext decoders programs evermore accepted generate discover defaults examples location disabled versions randomly requires controls passowrd further logging logfile library quality bitrate finally logsize samples include madplay timeout private servers intakes setting folders encoder browser pkg_add formats replace another located sources openbsd happens appears webroot playing connect pidfile clients address verbose builtin chanage accepts written modular update listen socket itself public player cannot domain vorbis please oggdec needed header handle daemon signed online endian little 524288 adjust easier repeat secure simple limits called values search modern enable tracks mounts chroot logdir status create backup spaces should issues module behind normal egrep makes rcctl visit while genre queue force there debug radio start media 44100 quite repos burst alias share extra ships guide input might first needs paths xmlns earth 10000 group enjoy being until 26202 which 65535 using could note ices your this that used doas they http also have will only both 8000 with well edit show find many each 8443 ipv6 ipv4 warn info jazz same 4p12 deal free wait 8080 bind next flac them skip faad lame xiph home run mpc now mpd url top 128 etc tee m3u may ipc xdg mp3 pem m4a var aac but too xsl usr max 127 utf raw key oga two www org tmp by my 16 15 30 cp bk
+0dev.RecentChanges:1721055207:  : recentchanges dodocrypto november 0dev 2021 12 at 03 00 am by
+Ffmpeg.Recordscreen:1721055207:  : recordscreen video_size framerate 1440x900 ffvhuff x11grab display default ffmpeg debian alsai mkv aac on 2
+Pkgadd.RecentChanges:1721055207:  : recentchanges checkupdates january pkgadd pyr3x 2022 01 04 29 am by
+Nitter.Install:1721055207:  : thiskeyisverysecret httpmaxconnections instructions proxyvideos programming enabledebug environment javascript tokencount repository sometimes shelltalk enablerss bandwidth configure redisport localhost autoconf settings reported firewall hostname changing groupadd sslstrip requests language figuring problems fetching install openbsd useradd telling written pkg_add release libsass example version privoxy address hmackey twitter puzzles network blocked prepare browser project working 123456 server nitter access ircnow number githib zedeus things nimble inside change tokens system bigger failed banned latest create logdir libera trying false build gmake start these those 36777 lines title users fails tools https error maybe clone other abuse abort solve tries right wrong first have need your bugs thru only when 1024 auth true 4096 from home what 6397 lots help says chat nano pcre more they ddos will that free bash many mitm next 8118 with data soon past best else look like 8192 case gets scss edit com can app web api var let see why for won don but run out low 228 141 own 209 usr bin far not old bc su of if cp cd 50 by md
+Syslogd.Configure:1721055207:  : permissions configure logfiles syslogd openbsd warning already correct exist https using with when have the see man org to 8
+Irc.Services:1721055207: Irc.Easy : services provide quick guide easy made what for irc see of
+Chess.Reading:1721055207:  : chessstrategyonline openchessbooks international combination petersburg gutenberg chapter1 congress reading content 33870 https files 1909 html reti the mic www org
+Chess.RecentChanges:1721055207:  : recentchanges tournament chessgogi limitsbot february reading march 28t00 02t01 maxxe 01t01 jrmu 2022 2023 2024 21z 42z 23z pm by 10 at 29 04 49 40 03 50
+Debiankaios.Bio:1721055207:  : debiankaios merge_box mergebox projects minetest germany working related freeirc helping coming called things gitlab https guess time team some only game from the bio to
+Soju.Guide:1721055207:  : authentication configuration compatibility documentation networkname config_file information bouncerserv configuring protection repository connecting optionally credential supervisor reconnect installed executing compiling mechanism configure messaging supported connected yourname emersion password creating friendly external download starting building filename software computer upstream username messages setting sojuctl tarball getting command extract started clients general contrib process atleast running specify release address replays require source before golang create change server making system typing online ircnow certfp catsit tables causal agency modify update small ircv3 https begin plain which after doing admin these guide about index offer helps scdoc saves phone clone stays depth fetch gonna from code into sasl 6697 need this will with also keep wiki html tree head item runs like just ddos hide when read them chat turn more list make doas done easy xvzf been sure that case refs want cap has may git znc msg see php ftp org vps sr im md gz by v0 we ip 4 1 2
+Team.Networks:1721055207: Ambassador.Ilines Ircnow.Ilines : onlinegamesnet communications aerospacechat chatlatinoscl explosionirc universochat hackthissite universalnet unviersochat linuxconsole organization allnightcafe roleplaying chatjunkies umbrellanet communities performance darkscience trendsohbet kampungchat chathispano simpletable discouraged germanelite chatsystems description overthewire insomnia247 responsible chatplezier environment forumcerdas virtualife coolserver allnetwork chatlounge quoservers twistednet zwergenirc irchighway tildeverse chatsansar ambassador appointing amorlatino nationchat banglacafe shadowfire technology digitalirc liberachat characters spiderchat redhispano friendsirc allz4masti superhosts robothive community quartznet viciochat redlatina rootworld canternet puntochat chateamos malaysian swisschat chatgentr ircsource alphachat amicachat siamnarak ircfreakz mindforge minecraft streaming malikania shelltalk freshchat gamesurge darkfasel nastycode freeunibg confirmed chewbakka globalirc pineapple lecturify enjoychat providing desirenet dejatoons successor passwords zandronum hybridirc chatspike volunteer chatzona librairc skychatz slashnet smurfnet freenode romanian simosnap chat4all chatasia zeronode spigotmc darkmyst software irccloud networks frantech europnet provides quakenet external recycled chatopia openjoke telegram oltreirc bouncers buenchat accounts handling scenep2p friendly spotchat afternet geeknode geekshed stormbit greekirc platform irchaven allrednc absoluty trsohbet afterall tweakers swiftirc protocol swissirc sortable svipchat undernet services icqchat evilnet chating bsdunix darkirc brasirc ircgate eggdrop hazinem epiknet etnies6 irc4fun chathub english juggler deepest italian webchat irczone browser hackint gigairc cavenet geyiktr bolchat netchat roircop technet thaiirc xertion sorcery snoonet austnet writing support gz4m3m2 perhaps discord dealing reports halogen channel address ircfree without partner closely ayochat 2600net scratch rezosup azzurra bitlbee blitzed ilines barton geveze orange column ircnow dalnet border jujube should relays hacker gotham zonebg banana matrix exolia exchat invite glined efnext bsdnet please ekolay cherry afterx rusnet ircnet apropo kalbim twitch ircpal chateo synirc master stable secure sturtz mibbit luatic tested modern mango myirc grape ewnix esper euirc where https ptnet evolu wenet nfnet teams lemon rizon zemra zairc zenet uugrn amici lucky irctl class width zoite zurna title abuse anzub users today edgy1 chaat anope email 42net atrum efnet bgirc based 6697 6667 perl that pirc your does they plum irc6 ally note 6668 pear lost nfld best link ircd xmpp oftc ipv6 down noxt fast easy city 6660 bncs used many 6670 want name wnet room time lego axon from 7000 safe irc2 will gimp 9090 ipv4 text when yes 100 fig ask tbd non wip but znc may get 127 uk jp pw tv w3 tk gt xi
+Ntpd.RecentChanges:1721055207:  : recentchanges configure april ntpd 2022 jrmu at 06 17 am by
+Signify.RecentChanges:1721055207:  : recentchanges signify verify april 2022 jrmu at 06 24 pm by
+Openbsd.Apmd:1721055207:  : alternatively configuration installation hibernating performance installing completely management automatic hibernate following sometimes partition activated important connected workload handling examples managing included requires openbsd laptops scripts default battery enabled suspend charged getting running servers current minutes saving device easier system useful start usage using rcctl shows could https there which tools power while based handy since sleep state apmd when used they sets take mode note also mins that swap left make acpi very them doas sbcs need zzz aka you org cpu are don but if is of s3 8
+Baytuch.RecentChanges:1721055207:  : recentchanges february baytuch 2023 bio 17 at 12 00 pm by
+Rcctl.Rcctl:1721055207:  : redirect openbsd status rcctl 301
+Grep.Usage:1721055207:  : openbsd https usage grep page man org
+Chess.Chessgogi:1721055207:  : surrounded chessgogi promotion occupied captured dropping castling movement backward forward squares becomes except pieces larger counts middle normal after there start enemy 11x11 pawns right board yours extra left time with that ends like turn just can 8x8 and set use off any is by if 3 2 6 5 4 7
+WikiTips.WikiFormatting:1721055207:  : wikistyleexamples wikistylecolors wikiformatting backgrounds definitions techniques scrollbars wikistyles documents lightblue lightgrey different lightpink overflow commands darkgrey standard wikitips starting defining margins bgcolor padding colours defines wrapped defined margine maroon purple silver config pmwiki yellow rframe needed things create blocks syntax indent simple alert right black white width group green above guide using rules cover there shown https built left part like navy auto gray this them name with note some info text warn when find 1em 5em use you are can www org red don 100 by of as
+9.Cheatsheet:1721055207:  : autocomplete cheatsheet somenumber networking audiostat dependent ipconfig hardware restart sound echo ctrl grep pin ins cat dev is 9
+Openbsd.Restore:1721055207: Openbsd.Dump : capabilities interactive recommended partitions proceeding everything extraction filesystem specified directory blocksize overwrite multiple navigate selected restores limited changes openbsd working current details created command warning causing towards systems volumes specify always backed backup expect prompt unless access double before should gives owner error shell under break start tapes which first title check least https reads order newly space once list with will home last wish note next find have know your logs doas need disk when from mode page that dump made into view used this were www see add the dmp yet 29g are set any run var all can pwd org of cd so gz rf yn 3 0 1 6 4 5 q
+Got.RemoteRepo:1721055207:  : lyrfn6pdsruvi112nfzimh02aoohxvgq5y5jyy2qkpi interchangeably authorized_keys identification configurations createrepodir documentation remotestage destination directories fingerprint planetofnix id_ed25519 prefixname myprojects publichost clobbering remoterepo deployment convention passphrase accomplish permission doasbroken generating gitgotuser separately remotehost remoteuser privileges configured myprogram directory following adminuser openrsync balancing available gotwebdir hopefully rsync_cmd generally published extension structure automated intervals maximises isolation something randomart ownership describes contents security probably existing warnings stagedir accounts commands password allowing original username directly upstream multiple deployed consists advanced key_path getpwnam userhost creating location generate repopath versions contains examples computer staging readdir working opendir summary pushing without assumes needing ability changes methods because current copying created useradd hosting regular provide defined easiest cloning missing machine details folders another scripts reasons setting between locally prevent usually private concern logging connect default sha256 ssh_as needed action ircnow keygen output strict verify system delete failed really hidden access master harder scalar unless rename server proper future around beyond modify facing chroot normal hosted shared single adding extra areas below repos using while paste after steps where these would means setup named files which needs forms shell clone hosts write skips izzyb mkdir could known elsif users undef split chown https owned doesn added avoid scope fixed empty group image first enter wheel grant their again saved since leave chmod store this will bare have home into from next both same like code perl soon 0755 your only goal runs dirs flux cron note part easy also each want that make they then tree just init sets used stat pull most mode onto exit been wish pair skel load look 0750 move send sure wont over can etc dst src two bin url die rdh tmp has usr new its few but ooo sbo via job var don way uid far too gid day bit sdh vim www org udh cgi cd 15 by qq ae eq 4 3
+Openbsd.Bootconf:1721055207:  : parameters different bootconf yourself possible argument specific default openbsd invalid timeout choose kernel bootup device server image files boots title enter echo disk need hd2a stat from hd1a give more each them set not etc don mp to ls 30 so
+Wsconsctl.RecentChanges:1721055207:  : recentchanges wsconsctl usage 10t06 2024 jrmu 02z 50 by
+Atactl.Usage:1721055207:  : information represents diagnostic attached identify mangment turnning powered provide command openbsd reboots suspend returns system atactl useful could state sleep until about title usage disks https that will time next tool when from hard also need used type doas help can org sd0 you off the be by
+Ffs.Intro:1721055207:  : filesystem title intro fast ffs
+Fics.Admin:1721055207:  : ⟨emailaddress⟩ fics_addplayer ⟨fullname⟩ ⟨username⟩ possible yourself because running logged should adding chess admin title users adds make from root then with path home dir bin but man any to if su is 1
+Ln.Shell:1721055207:  : python3 tclsh8 local shell egcc usr bin ln 6
+Znc.Support:1721055207:  : redirect support znc
+Ifconfig.Vether:1721055207: Vmm.Configure : configuring interfaces connected configure generated ifconfig hostname ethernet creating gateway example default bridge0 replace vether0 openbsd address helpful virtual intend create actual subnet inside device serve title might times https with that find this must used mask next inet etc 255 for 192 org can now man tap vmm are may you 168 we be to by ip 4
+Ifconfig.Veb:1721055207:  : independent interfaces individual themselves configured addresses operation ethernet multiple supports function creation features ifconfig devices openbsd network between warning bridge unlike single longer pseudo cannot stack added inet6 other layer title takes https used then they says that page with over host man veb and org are as to of 4 3 2
+Cvsweb.Restore:1721055207:  : accidentally periodically fortunately correctly restoring available overwrite directory checkout revision download contents openbsd suppose example restore default enclose corrupt working current specify cvsweb follow delete system quotes login https plain amd64 shell parse title files these using type text conf note must flag want many that save into need from lets then link our etc you src are use may org bin cgi get url ftp of 18 mv 5
+Sshd.Chroot:1721055207: Chroot.Intro Openbsd.Adduser Sshd.Configure Openbsd.Hier Openrsync.Chroot : passwordauthentication disableforwarding troubleshooting chrootdirectory configuration instructions permittunnel sshd_config directories permissions information components openrsync writeable permittty configure chrooting specifies ownership indicates requires creating probably pathname programs populate messages explains writable groupadd already openbsd session replace default account adduser console usermod makedev useradd example authlog changes working startup charlie member others inside reload append folder checks states create syslog passwd belong record server itself exists device actual shell 60020 fatal modes error drwxr chown wheel intro mkdir after owned which files https nodes since ksyms title login pkill users first block match guide home sure with skel 1000 from next 512b want xf86 klog kmem copy hier that must will this call does etc see bin you and ksh can man any jun not org bad var std are hup yes run set few of by 17 49 we 01 56 cp cd ls
+Route.Static:1721055207: Vmm.Intro Nat.Configure Openbsd.Install Pf.Configure Route.Usage Openbsd.Sysctl : configuring rtp_default destination demonstrate forwarding 0xffff0000 priorities 0xffffff00 interfaces rtf_static connecting performing asymmetric hypervisor represents rtp_static calculated networking multipath listening following configure necessary broadcast specified install75 forwarded depending different translate multiple switch23 priority switch35 required hostname requests switch24 traverse switch34 switch12 vmdusers reserved ifconfig icmp_seq expected receives received topology internet directly changing together forwards simulate machines virtual tcpdump routing openbsd running vport21 replies vport11 packets careful correct routers devices gateway address similar however makedev replace through command dropped ruleset happens defined between ensures because 308964 reload system create public kernel 312342 images en10mb sysctl egress notice change tables expire filter 308979 longer subnet prefix 811394 814762 should maxlen 811231 814731 811288 814664 routes inside proper 312279 312357 941035 937602 941063 937682 passes breaks chosen domain lladdr locked memory bsdiso format 270045 270192 either lowest cannot handle choose tap342 tap322 adding 272799 coming 272550 272715 socket 270061 bytes paths masks https which input reply usage takes added allow basic still title intro setup mpath reach order bring where their based links first flags qcow2 vmctl range three nodes tap44 inet6 veb12 share cdrom veb34 veb24 owner veb35 tap53 veb23 costs above tap55 tap22 tap42 there below pfctl match using guide vio1 vio0 with vio2 that 0x28 echo from also does have home time 0800 ping will runs done type data this same then them send tell disk save note must when used next arpq 1024 what down need 20g let but try you new tos etc ips cat 831 any now see org ttl 349 mtu 181 353 if0 ip6 lab vmm our e8 r5 8b 16 r2 98 of 1g r3 52 r4 40 59 26 ms 56 r1
+Netcat.Usage:1721055109: Opensmtpd.Openrelay : troubleshooting specifically successfully destination networking 1597224404 configured 1597224116 afterwards connection connecting correctly opensmtpd establish debugging something recipient succeeded openrelay displayed essential extremely following valuable diagnose identify hostname properly accepted e57f9a36 nickserv networks followed delivery sysadmin password complete newnick channel privmsg example message address showing seconds newuser process subject pleased foxtrot charlie servers writing between warning sending because attempt replies either ircnow should record signon client netcat errors relays simple letter domain appear entire itself alpha esmtp hotel hello bravo delta enter whois valid email world shows vhost using above modes check blank title usage gline means swiss 12345 drone knife other reply which often test type just quit with look ipv6 ctrl such your here from motd next helo 2001 part idle 0db8 f8fb b8fa 9812 2562 bind will time this pong ping list join 6667 meet code then rcpt jrmu when data help echo tool golf army root body ever 11eb nice 2f18 f117 3a85 done case like aaaa rdns that 250 org 220 day 312 318 see 143 163 378 can for not and 379 are 317 354 bye 221 396 311 web any has mom nc 38 up b4 86
+Iked.Configure:1721024551: Iked.Sitetosite Unbound.Configure Pf.Guide IP.Myaddress Vmm.Install Openhttpd.Configure Unbound.Blacklists : troubleshooting interoperable configuration installation certificates destination permissions configuring information roadwarrior nameserver statically blacklists directives forwarding configured whitelists sitetosite openhttpd interface installed listening myaddress verbosely processes necessary correctly recommend following addresses daemonize hostname resolves networks password username valuable external firewall consider commands ifconfig unwanted probably outgoing assigned download resolver together redirect solution openiked included security internet clients provide connect unbound openbsd dynamic devices example traffic gateway tighten packets replace through passive assumes writing easiest ruleset caching servers privacy depends enabled freedom control consult running tagged filter turned htdocs before inside locate lookup values allows manual access domain sysctl isakmp ikectl public behind reload adding create notice verify ext_if native secure trying errors report actual simple system single ipcomp mschap inet6 being ikev2 debug ipsec first chown guide proto these needs clean https cause pfctl about their relay title macro chmod setup might point start wants where final rcctl quick match users faq17 local check srcid pages leave block valid using begin this then with from file will next root your doas into mode uses 0600 vio0 that edit crls sure over pros grep stop dhcp base bind make line type enc0 pool peer only have must upon html find note read vpn dns org any var etc 172 can its vmm has are 127 esp vps off ip6 eap www new udp web rdr 509 pki key rsa crt one tcp 16 53 ah 10 dv 24 ax 8
+Ripd.Configure:1720920424: Vmm.Intro Route.Static Nat.Configure Openbsd.Install Pf.Configure : troubleshooting redistribute destination information configuring recv_packet demonstrate 0xffff0000 interfaces calculated 0xffffff00 represents forwarding connecting performing hypervisor necessary following configure multipath connected triggered broadcast install75 practiced linkstate neighbors correctly translate addresses switch23 topology hostname switch12 internet multiple reserved machines switch35 switch24 switch34 simulate together vmdusers indicate icmp_seq traverse querying required presumes matching nexthop vport21 openbsd default deraadt vport11 devices makedev similar message network routing seconds ruleset verbose virtual updates current because careful routers ensures replace lladdr static locked sysctl maxlen memory bsdiso subnet ripctl tap342 kernel longer active reload proper actual egress public number uptime system create images entire tables cannot tap322 inside prefix domain socket veb34 qcow2 vmctl which below intro tap22 owner range bytes veb35 guide check flags shows veb23 reach cdrom veb24 share https based costs nodes title three above veb12 using iface debug inet6 order masks tap42 error input there tap44 pfctl valid tap55 tap53 will what ripd goes into same vio0 vio1 2014 with arpq your that then have also vio2 this save wait mode when disk home does note need case hops find ping from ever data 1024 exp etc 353 ttl 181 yes now org man and any 241 104 167 192 20g 127 ips may run see vmm 224 if0 fib ip6 60 dv r5 we r2 of 30 r3 r1 29 48 ms 56 64 26 r4 07 8b e8 1g
+Ifconfig.Wg-Draft:1720890048: Nat.Configure : um6z8cwgsze8vgb03szkfrjm2mu 1xuhx5g1c3veekxiqkfc9vc lizlmgtl5tm8eggl6btvbt 1lrchbbwkmoz0hqq1rxm prtydtgrvgq2lo6yfru 75hpwgy28bnrtrmkxk8 kzsvrkrakzxlz9au8 dbv9byaanivu2aw respectively configuring translation transported information wgendpoint interfaces 0xffffff00 addresses configure wireguard generated encrypted listening ifconfig routable publicly uniquely machines wgpubkey netstart hostname proccess replaced securely properly together examples internet icmp_seq openbsd connect through working openssl network traffic packets default tcpdump private request strings wgport verify routed wgpeer 043353 device base64 repeat pseudo create allows 043339 second obtain 060209 egress 060220 update coming wgaip bytes reply these https wgkey match title draft which setup using first echo have 7111 will time that 7222 from this line loop then with ping data must grep inet your link type rand vpns over sent mqud file any ttl 255 378 168 wg1 192 etc wg0 now wg2 not org nat man 775 can cat udp are own cut use 10 we so 01 32 pf sh be ms 56 08 of
+Nat.Configure:1720887214: Nat.Intro Vmm.Configure : automatically translation directional hypervisor interfaces configured conditions 0xffffff00 forwarding install75 machines hostname vmdusers internal services network matches packets finally address default replace virtual applies switch0 provide between mapping perform aliased inside egress bsdiso actual maxlen format filter public memory locked lladdr proper sysctl vport0 socket reach those route intro doesn ports inet6 leave binat title qcow2 link1 cdrom owner first from disk home want that line this veb0 tap0 rule only come your with arpq 1024 vio0 cat non the etc vmm are met 168 and can run 192 any ip6 ab if 01 up 23 45 of 2g pf
+Profiles.Jrmu:1720850106:  : ar1jr6ljjt8g7v9onc7usyjnmyurt1ouqercl43cynttopue3hcyggheikdbyq4bdjbozocpu0wq3i3tgctl5ros0dxlbu8ybuyoxuyr0lbjzxlpb5rtbukngdfyzkhkwjcgtphxmsuwyeymv bllyceaubvpkxyvunnum03xvtiiw3mqrfjexc1vaowqfpovtksmow0t4vl4kltbwxygi4q7dnkzikgt7valpbbzwgwvh3qnkdpob vigctooodq5g1neypztop6answ7jxwqibupglts71yakbqqbcui2p8wz8g8n9zrvxjm9gq0fkwxpbdsf tpogcp91hca1eqcpwsneibpittc7sqhorz4wqz2bet6we9hj0brfubeepsjfiwi20agvnv pznecudbmnlgje40heemfcniouo4hmvaizxfczkbtlzaji3wxhkv1sqahzp13euuk2mec aaaac3nzac1lzdi1nte5aaaaio23glmmdq6eligenxoo9or8auqk7td3xgru 4qfaibyovkfg44p4udfgfxc9mbqltj5mtpdojeetxb3dloj1vbszk ug4rbjlrlmqkuiz7l3y33zhxpcoludkwwguetiiy aaaab3nzac1yc2eaaaadaqabaaacaqcnj 01j1880te70wjx9jhd9bc7j185 01h9j7wtpf2trzvcckahkgqfvz k46zow7kxluuwenscby0iuw 0mwrtbcngpjk9lolrpz iejddzldhakxmnxn independence attachment philosophy fileserver breadofgod jz2v7akpqy community currently dataswamp fishlinux interests hyyl6iyqn 0a3nheklh 6yjar8lvw educator profiles aaronlin original projects learning software iuxmyhh contact ed25519 started website network achieve resides worked ircnow public decade source random awake users https bible michi yr5ce title rwwg9 email years spent 300px width from name real rust ftrv nein unix help 2019 open free self jrmu keys xmpp tech plan org ssh jpg the for usa dev png rsa gy _
+Jrmu.Bio:1720850060:  : ar1jr6ljjt8g7v9onc7usyjnmyurt1ouqercl43cynttopue3hcyggheikdbyq4bdjbozocpu0wq3i3tgctl5ros0dxlbu8ybuyoxuyr0lbjzxlpb5rtbukngdfyzkhkwjcgtphxmsuwyeymv bllyceaubvpkxyvunnum03xvtiiw3mqrfjexc1vaowqfpovtksmow0t4vl4kltbwxygi4q7dnkzikgt7valpbbzwgwvh3qnkdpob vigctooodq5g1neypztop6answ7jxwqibupglts71yakbqqbcui2p8wz8g8n9zrvxjm9gq0fkwxpbdsf tpogcp91hca1eqcpwsneibpittc7sqhorz4wqz2bet6we9hj0brfubeepsjfiwi20agvnv pznecudbmnlgje40heemfcniouo4hmvaizxfczkbtlzaji3wxhkv1sqahzp13euuk2mec aaaac3nzac1lzdi1nte5aaaaio23glmmdq6eligenxoo9or8auqk7td3xgru 4qfaibyovkfg44p4udfgfxc9mbqltj5mtpdojeetxb3dloj1vbszk ug4rbjlrlmqkuiz7l3y33zhxpcoludkwwguetiiy aaaab3nzac1yc2eaaaadaqabaaacaqcnj 01j1880te70wjx9jhd9bc7j185 01h9j7wtpf2trzvcckahkgqfvz k46zow7kxluuwenscby0iuw 0mwrtbcngpjk9lolrpz iejddzldhakxmnxn independence attachment fileserver breadofgod jz2v7akpqy philosophy currently 0a3nheklh 6yjar8lvw community fishlinux dataswamp interests hyyl6iyqn original projects profiles aaronlin redirect software learning educator achieve iuxmyhh ed25519 resides website started contact network public ircnow random source decade worked users spent michi width 300px awake https rwwg9 bible title years email yr5ce from jrmu rust open ftrv nein unix plan tech 2019 free self keys xmpp name real help the bio jpg org usa png ssh for dev rsa gy _
+Ospfd.RecentChanges:1720799853:  : recentchanges configure ospfd 12t15 2024 jrmu 17z 07 53 by
+Ripd.Configure-Draft:1720672416: Vmm.Intro Route.Static Nat.Configure Openbsd.Install Pf.Configure : troubleshooting redistribute configuring recv_packet demonstrate 0xffffff00 interfaces forwarding 0xffff0000 hypervisor represents connecting performing multipath configure addresses connected triggered following install75 broadcast necessary correctly neighbors practiced translate hostname indicate machines multiple topology switch35 simulate switch23 traverse required internet switch24 together switch34 matching switch12 presumes vmdusers reserved deraadt openbsd network vport21 ensures devices careful similar ruleset vport11 routing makedev because default replace virtual message updates routers verbose seconds create tap342 bsdiso locked format lladdr images tap322 memory system static domain sysctl maxlen egress public socket subnet prefix longer ripctl uptime inside cannot proper actual reload qcow2 veb24 debug error tap44 below veb23 pfctl iface masks intro cdrom veb12 owner veb34 shows state inet6 vmctl veb35 input check tap55 title draft there guide which above range three nodes order tap42 tap22 costs using tap53 share https will home ripd then 2014 1024 arpq each vio1 have vio0 from with your note next link disk that vio2 find this same wait ever does also save flag need mode etc if0 exp yes org man ip6 nat may and any now ips vmm run 20g see r3 16 dv 60 of we r5 07 r2 r1 r4 8b e8 1g
+Wordpress.Install:1720400568:  : mysql_secure_installation wp_proxy_bypass_hosts wp_proxy_password wp_proxy_username mysql_install_db configuration wp_proxy_host wp_proxy_port introduction application corporation downloading permissions db_password connection extensions wp_siteurl identified privileges dedicated wordpress available forwarded recommend following directory copyright resolving openfiles localhost php74_fpm accessing parsedurl statement parse_url correctly chrooted database actually packages commands services required activate combined although affected location software hostname versions mariadb db_user servers db_name prepare welcome openbsd restart current archive section default include headers initial fastcgi monitor db_host _server example wp_home easiest enabled started reverse present imagick release browser opening writing daemons plugins pkg_add socket create relayd folder static define within change choose latest option scheme behind covers domain pecl74 second listen render mysqli client egress _mysql needed placed mysqld assume finish sample append values readme themes unpack oracle should others https grant clear query input share setup rcctl httpd first fetch mkdir chown pages needs index flush using style types order title which there shows enter login group tells none your must time this make only want both doas find exit exec busy will path that into case sure misc mime from done sets 8080 0711 edit work next part help code 2048 last step 2018 2000 uses 12v1 1024 else curl post max var xzf www new way zip net web run off can not now usr may cnf bye org ftp cd ok gz gd cp sf ln 3 6 5
+Openbsd.Wordpress:1720400534:  : mysql_secure_installation wp_proxy_bypass_hosts wp_proxy_password wp_proxy_username mysql_install_db configuration wp_proxy_port wp_proxy_host introduction downloading corporation db_password permissions application privileges identified extensions connection wp_siteurl directory openfiles following recommend wordpress dedicated localhost available statement copyright forwarded accessing php74_fpm correctly parsedurl parse_url resolving database location although hostname combined chrooted affected activate commands actually services required redirect packages versions software openbsd browser servers example welcome reverse mariadb monitor opening plugins started db_user db_host writing db_name daemons section restart prepare initial archive _server easiest enabled include imagick fastcgi present wp_home default current pkg_add headers release values second create change sample define _mysql folder pecl74 socket placed client covers latest should behind others choose oracle within option mysqld unpack listen egress mysqli assume relayd finish append themes readme needed scheme domain static render needs httpd enter mkdir style tells first index using grant https clear shows query rcctl order types share pages which login group fetch input flush chown there setup sure curl want that mime only your misc this case code else post edit part next both into doas find exec uses time from sets make work must 8080 done none 12v1 help path will busy 1024 0711 2048 2018 exit 2000 last step run can web var www cnf xzf new way off net now max may usr bye zip not org ftp ok ln sf cd gd cp gz 6 5 3
+Openrsync.Chroot:1720072851: Chroot.Intro Sshd.Chroot : dependencies configured libcrypto openrsync chrooting confined username explains libutil clients libexec assumes copying replace provide inside create expect actual copied mkdir intro title users guide with home hard work libm this link that have sshd need usr the you bin how and few cp so ld we ln
+Openbsd.Loginconf:1720072478: Openbsd.Vipw Grep.Usage Openbsd.Singleuser : troubleshooting configuration connections descriptors temporarily singleuser partitions configured downloaded groupname otherwise correctly necessary loginconf specifies processes unlimited openfiles resources stacksize described following allocated lockedmem terminal shutdown infinity cap_mkdb database services recreate requires revision checkout 33554432 networks original displays controls coredump username searches checking retrieve maximum openbsd current nologin nofiles default example warning usermod suppose replace missing deleted restore confirm changed failure maxproc seconds changes creates classes content spaces passwd limits expect ulimit master lostpw plenty parsed system cvsweb amount reboot values actual should edited daemon editor logout signal bottom kbytes begins blocks memory unable number export 329478 985092 exists shell using field https usage error press apply 32768 title might xterm write amd64 usual allow paste plain least faq10 means tty00 4096 doas need then save into this chsh copy next link with quit type html sbin grep vipw path what uses 256m once text mode root read ctrl your 1310 have each time done from many been 1001 that man5 sets tail make will home line room come much note sure give also 8182 tabs they are can etc org fix and way now how www get new for too src cgi usr per has may cut end ksh 5th cpu won add see
+Ssh.Chroot:1720071741: Chroot.Intro Openbsd.Adduser Sshd.Configure : passwordauthentication disableforwarding chrootdirectory troubleshooting configuration permittunnel sshd_config permissions information directories components openrsync libcrypto writeable specifies permittty ownership indicates chrooting configure pathname populate writable requires redirect explains messages creating groupadd default libutil libexec replace startup session openbsd working account already authlog adduser changes support useradd console usermod makedev inside reload itself create folder syslog record states others checks device append actual passwd member exists server belong after mkdir owned which users shell wheel ksyms drwxr since files https chown nodes first intro match modes fatal 60020 login error block guide pkill title home skel this from 512b with does libm that xf86 klog kmem copy must will sure usr set bin run all ksh man jun var yes any hup org and bad are few etc not std by 17 of 49 we 01 cp ls cd 56 ln
+Rsync.Usage:1720070494:  : everything corruption filesystem directory openrsync available specifies verbosity shorthand username capacity transfer compress actively remotely includes commands multiple options instead openbsd however current rewrite mounted example verbose archive backing warning written display require second ircnow either copies copied called primer during before backup enough useful tells least space 1005m local check quick title usage going being occur buggy https below samba seems used will size sd0a have take your much disk sure make 844m path each turn 111m sd0d sd0k show more tool this dest into home copy 192g doas data sd0e sd0f 153g here from both work with mode org dev its own tmp usr avz can may add var bit run of so 7g 28 12 22 9g 16 df 2m 14 41 63 4g 0g
+Openrsync.Usage:1720069043:  : synchronizes destination simpletable recursively lightweight filesystem corruption ermissions everything transfers openrsync shorthand directory verbosity available imestamps username multiple explains sortable symbolic capacity designed increase actively openbsd dgloprt example options warning current however instead mounted folders written backing rewrite special require purpose source second server rchive primer enough backup before little copied common border copies least space 1005m using check quick local title usage buggy occur https class needs match being width evice path home each turn with next will this copy also 192g from most your both much 844m 111m 153g sd0a used size sd0d have take disk sure make data sd0f sd0e sd0k sets does uses inks want roup wner root mode into see dev the add may run not org but www tmp can var usr man 28 16 9g 7g of 4g 22 41 14 12 2m 0g 63 if df
+Atactl.RecentChanges:1719955081:  : recentchanges command atactl usage 07t10 sleep 2024 16z mkf add 04 57 by
+Ffs.RecentChanges:1719955081:  : recentchanges intro 30t12 2024 hehe ffs 49z mkf 04 56 by
+PmWiki.BasicEditing:1719919148: PmWiki.WikiSandbox Main.WikiSandbox PmWiki.WikiWikiWeb PmWiki.Passwords PmWiki.TextFormattingRules PmWiki.MarkupMasterIndex PmWiki.WikiStyles PmWiki.ListStyles PmWiki.WikiGroup PmWiki.InterMap PmWiki.NonexistentPages PmWiki.Links PmWiki.Tables PmWiki.TableDirectives PmWiki.Images PmWiki.PageLists PmWiki.PageTextVariables PmWiki.PageListTemplates PmWiki.BasicEditing PmWiki.WikiTrails PmWiki.DocumentationIndex PmWiki.SpecialCharacters PmWiki.LayoutVariables PmWiki.PmWikiPhilosophy PmWiki.Audiences Cookbook.EnableHTML : textformattingrules documentationindex pagelisttemplates markupmasterindex pagetextvariables specialcharacters markupheadersend nonexistentpages pmwikiphilosophy layoutvariables tabledirectives definitionlists administrator strikethrough collaborative automatically bulletedlists preformatted highlighting htmlpnewline superscripts _subscripts_ contribution navigational basicediting description wikisandbox indentation apostrophes definitions discussions effectively pagesummary wikiwikiweb information environment subheadings backslashes demonstrate parentheses consecutive capitalized explicitly linebreaks generating horizontal wikistyles structured wikitrails pagetitles monospaced paragraphs experiment exhaustive liststyles enablehtml consistent affecting important markupend somewhere separator passwords wikigroup different pagelists indicated displayed processed emphasize specially courteous wikipedia interwiki reference audiences asterisks unordered following available beginning trademark justified essential described organized describes protected depending including potential copyright something underline together tableend anything multiple practice examples cookbook numbered fullname emphasis creating floating centered indented brackets intermap elements sequence directly advanced provides preceded aardvark rendered security versions separate supports inserted enabling editable policies pagedesc followed packages external normally preserve keyboard another produce borders default hanging reading markup2 literal reasons further getting include outline started exclude italics authors enclose removed comment linking endings results engines someone smaller leading deleted feature however escaped markup1 exactly options markups usually created details address wysiwyg without achieve content systems column called exists action tables single output quotes hashes dashes bottom colons recent blocks thinks should square deeper inline source treats strong merges issues double common anyway except useful appear invite others making recipe simple search images change syntax bigger ff7f00 footer mailto merged become within cellnr edited config design before types links shows class learn whole lines https sites still email pmhlt force cause allow blank color green marks about there cells being using wraps first which width fixed typed mixed field write means major above false after based minor signs items boxes below click looks parts ifend align empty that more used next main what pipe also this code bold left from make four they same will than sets each like find rich much help good blue note kept many must have such want most very pose open talk then hide does when home bare area only your well long wide font 8482 see can 169 174 may faq php don top its xyz lot url www try two etc of by my 3
+Gre.6in4vmm:1719763033: Vmm.Intro Nat.Configure Openbsd.Install Pf.Configure : encapsulation demonstration connectivity deliberately destination transmitted demonstrate translation forwarding statistics hypervisor configured interfaces 0xffffff00 performing internet6 addresses listening keepalive install75 performed following conserve vmdusers machines icmp_seq received examples publicly reserved hostname relevant routable multiple replaced properly priority similar tcpdump cloning request default ruleset network switch0 packets openbsd however dropped 6in4vmm virtual routing gateway private finally warning bsdiso 078159 697773 tunnel tables sysctl lladdr locked expire format memory static 358153 562742 create 562772 inside google system vport0 images 060019 060104 698305 mygate subnet 579278 reload kernel 579234 579301 078225 filter en10mb 579228 358103 579250 access should egress 579188 socket 579210 prefix length 579212 chosen inet6 iface route first allow intro title icmp6 flags uhlch reply bytes ping6 1e100 round using qcow2 owner later cdrom guide link1 other apply vmctl match these https pfctl echo time 2001 hlim 4023 data 1000 gre0 f8b0 from 2607 gre3 refs disk both uhll must 7066 also ipv4 tap3 test gre2 will uhcs home ipv6 fe33 3333 vio0 abcd with efff fe80 veb0 mask f102 trip have this done uhch tap2 loss show type loop view 0800 then 0xc0 need ucpn only been once db8 you and etc tos cat mtu run 142 see get ugs ucn 051 20g 205 any has 077 ip6 now 976 max org 186 avg std dev 027 com 025 678 636 609 man 615 631 646 up ms 47 71 48 37 11 49 1g 68 of 32 54
+Gre.6in4:1719650546: Vmm.Intro Nat.Configure Openbsd.Install Pf.Configure : demonstration encapsulation deliberately connectivity translation transmitted demonstrate interfaces hypervisor 0xffffff00 forwarding configured statistics performing addresses following performed keepalive install75 listening hostname properly internet conserve reserved received replaced examples icmp_seq machines vmdusers multiple routable publicly request similar packets default virtual ruleset openbsd switch0 however cloning tcpdump network warning private dropped finally prefix sysctl length egress locked socket 078225 memory reload bsdiso 697773 lladdr mygate 358153 tunnel 698305 358103 en10mb format chosen google 579212 access 579301 create 579278 system subnet 562772 562742 078159 inside images should 579188 kernel filter 579250 vport1 060019 579228 579234 vport0 060104 579210 vmctl qcow2 icmp6 match bytes pfctl reply iface allow inet6 route ping6 round first title intro owner these using link1 later other https cdrom guide apply echo have from gre3 veb0 2607 ipv6 gre0 4023 f8b0 hlim 2001 1000 need data time will ipv4 this view with loop loss trip type once both been gre2 test only vio0 0800 home 0xc0 6in4 disk then tap3 also tap2 must dev db8 std avg max tos 609 636 678 025 142 nat com vmm 051 077 976 027 run 102 see you has and etc 20g cat any ip6 now one 631 man org 615 646 54 33 a3 e8 47 ms 32 1g of 71 48 up 49
+PmWiki.ConditionalMarkup:1719647511: PmWiki.Passwords PmWiki.Security PITS.01417 PmWiki.AuthUser Cookbook.AuthUser PmWiki.PageTextVariables Cookbook.ConditionalMarkupSamples PmWiki.WikiTrails PmWiki.PageVariables PmWiki.MarkupExpressions : conditionalmarkupsamples concatenatedconditions combiningconditions specialreferences markupexpressions pagetextvariables reg_expression administrator automatically authenticated pagevariables wikitrailpage yyyymmddthhmm unpredictable conditionals circumvented placeholders invalidlogin recognizable readability attachments permissions insensitive cellspacing cellpadding parameters previously equivalent condmarkup explicitly wikitrails authorized groupname1 groupname2 configured characters unbalanced evaluated specified currently rendering filenames following described passwords interface represent identical directive markupend beginning requested displayed bracketed evaluates operators unlimited quotation strtotime somegroup important inclusive separated pagename provides authuser cookbook included norender audience examples portions excluded contains matching function patterns standard anything optional asterisk creating thispage multiple username trailing although advanced security profiles specific combined contents silently wildcard building feedback brackets somepage assigned argument required expected omitted matches complex regular string2 defined comment mygroup ontrail summary secrets leading sidebar applies between without assumed results earlier string1 entered implied specify correct boolean browser enabled session recipes warning negated generic exactly nesting editors readers neither meaning careful bgcolor elseif2 authors testing ignored allowed opposed appears nested format cannot before around border indent exists spaces manual newwin within always logged pmwiki number if2end common better authid square closes action group3 equals group2 group1 quotes admins logout authpw errors during begins syntax proven others mostly margin tested upload viewer easily allows header commas custom member levels footer useful cond2 being means class ifend named false cond3 cond1 date2 where using added date1 value pmhlt which times range notes meant least 01417 doesn these pages below among else2 cases those given tests pmcal built dates there today name3 block month later three fixed forms cause marks shows check above have that they also work when list body only from hide used true what ptvs will attr both into next more many need pits beta were 2005 once zero main like hour 2006 nbsp same link pic1 just tips even than must http year left fail org iso net see png gif has but via may sub php one xor now pvs 2em two fcc you who viz set jpg was by w3 qa 66
+Gre.6in4-Draft:1719640569: Vmm.Intro Nat.Configure Pf.Configure : demonstration encapsulation connectivity deliberately demonstrate translation transmitted 0xffffff00 statistics configured performing forwarding hypervisor interfaces keepalive addresses following performed listening install75 publicly machines properly applying icmp_seq multiple hostname reserved received internet vmdusers routable packets tcpdump private finally default switch0 virtual replace similar network dropped however request cloning openbsd warning ruleset en10mb egress 060019 google lladdr inside create bsdiso memory tunnel 562742 078159 locked reload 078225 697773 358153 sysctl 060104 format 358103 images 698305 mygate actual kernel filter subnet 579228 vport0 579301 access 579250 579212 socket prefix length should 579188 579234 579210 579278 chosen 562772 first icmp6 inet6 bytes pfctl reply match binat ping6 route iface allow draft round title qcow2 intro using other cdrom owner vmctl link1 since https guide 2001 gre3 2607 from veb0 time gre0 ipv6 will loss echo have 1000 4023 f8b0 here fd19 must data this hlim 6in4 trip been both view ipv4 type loop with gre2 test vio0 once only 0800 0xc0 home disk tap3 tap2 then need also run db8 tos dev see std max 142 025 051 vmm you com 976 avg 077 609 636 027 has 102 678 any etc now 646 cat are ip6 its and 127 20g one 615 org man 631 47 33 e8 ms a3 32 54 1g of 71 48 up 49
+Gre.6in4nat:1719640245: Vmm.Intro Nat.Configure Pf.Configure : encapsulation demonstration deliberately connectivity translation transmitted demonstrate forwarding hypervisor configured statistics 0xffffff00 performing interfaces listening following addresses install75 keepalive performed machines received hostname multiple properly publicly routable icmp_seq vmdusers internet reserved applying however request switch0 network tcpdump ruleset packets default virtual similar replace dropped cloning 6in4nat openbsd finally warning lladdr format create locked 579228 sysctl images 579250 tunnel filter kernel bsdiso google memory should 358153 579234 inside mygate 562742 562772 579278 579212 579301 reload egress 579188 en10mb 579210 access prefix socket actual length 060104 060019 vport0 chosen 697773 698305 078225 358103 078159 allow bytes icmp6 match reply intro ping6 route link1 since cdrom pfctl inet6 iface https binat title first round guide owner qcow2 vmctl other using data hlim 2001 time from gre3 echo gre2 test vio0 fd19 loss 0800 ipv6 2607 0xc0 f8b0 trip 1000 4023 loop type gre0 view also veb0 will with need must only here this home ipv4 both been then once disk tap2 tap3 have 142 db8 etc run avg 636 cat 127 678 max dev you 609 std tos are 20g 025 see and any its ip6 com 631 976 org man 646 has one vmm 077 now 102 027 051 615 e8 ms 32 47 71 a3 33 54 of up 48 1g 49
+Gre.RecentChanges:1719516358:  : recentchanges 27t19 6in4 2024 jrmu gre 14z 06 25 by
+Identd.RecentChanges:1719015076:  : recentchanges configure identd 22t00 2024 jrmu 57z 06 10 by
+Openbsd.Identd:1719015069: Openbsd.Znc Openbsd.Oidentd : instructions configure redirect bouncers provided oidentd replies openbsd started getting follow caveat enable simple rcctl spoof very like doas base that will with want the for znc you one set can is to by
+Identd.Configure:1719015057: Openbsd.Znc Openbsd.Oidentd : instructions configuring configure bouncers provided getting oidentd replies openbsd started caveat simple enable follow spoof title rcctl that want doas like very base with will for you the znc set one can by is to
+Buyvm.Routedsubnet:1718997272:  : routedsubnet migrating title buyvm to
+Ircnow.Hosting:1718899103:  : planetofnix oddprotocol 0xffffff80 bsdforall nastycode hosting address default gateway ircnow subnet prefix 2602 fccf 2160 user 2179 ipv6 2199 2220 mask 2239 2180 2159 2200 ipv4 2140 2219 104 242 167 com org 134 ips 243 133 244 241 len 240 131 132 129 135 25 48
+Ripd.RecentChanges:1718830596:  : recentchanges configure 19t20 ripd 2024 jrmu 27z 06 53 by
+Password.Words:1718759501:  : alphabetical password generate shuffled running command quickly however should random share order words these 10000 this dict your list can usr use for of to
+Ifconfig.Wifitoethernet:1718745788: Ifconfig.Wifi Nat.Configure Dhcpd.Configure Unbound.Configure : troubleshooting wifitoethernet translation immediately networking interfaces hypervisor configured nameserver forwarding netstart ifconfig reserved hostname properly ruleset already applied replace servers clients routers netmask example assumes unbound routing restart caching listens changes provide service address finally because egress sysctl reload reboot filter option packet domain ensure enable either public choose subnet device assign actual pfctl rcctl dhcpd going guide range first flags inet6 using match title echo then does make free your with from need next that this have were will are etc dns if0 192 168 cat nat try not 255 any ip6 ips com 254 30 up 24
+Ifconfig.Wifi:1718744696: Dmesg.Usage : radio_measurement wpagroupcipher short_slottime short_preamble spectrum_mgmt configuration autoconf6temp instructions airportwifi configuring anotherwifi placeholder successful 0xffffff00 connection autoselect wpaciphers wpaprotos temporary interface prefixlen broadcast ieee80211 multicast autoconf4 addresses permanent hostname ifconfig wireless icmp_seq wifionly specific priority mywpakey firmware indicate included examples assigned simplex openbsd replace running network privacy changes wpaakms scopeid netmask install default mywifi nearby actual access points 848843 driver llprio vltime should pltime active device ar9271 status egress groups please lladdr laptop usage dmesg inet6 79dbm bssid mcs15 76dbm https these write 86297 check bytes ping6 flags 68721 index media 61dbm 84dbm title above below athn0 uhub0 63dbm mcs31 bring first 4700 from 2606 wpa1 1111 hlim data your also nwid with 2607 fb90 bd8d d8e3 38bc 158b ab34 have usb2 make find html faq4 tech 5407 chip uses 1500 test wlan mcs4 mode 1t1r fe20 wpa2 ccmp fe80 7bff scan mcs7 next 11n rev mtu psk and org if0 608 310 for how see www etc via c42 0x5 212 255 168 192 358 017 059 362 485 109 ttl bb 30 64 78 56 we 03 04 is
+Openbsd.BBB:1718727237:  : product_detail_black_sm melf7vvdgpccuwv0uhevaq gpiopintoggle successfully respectively installation demonstrate development beagleboard blink_count destructive connections simpletable gpio_pin_op beaglebone configured consisting privileges connecting operations developers downloaded operating hobbyists supported converter community populated following generally numbering accessing connected integrity installer overwrite commands official numbered possible graceful computer gp_value provides platform miniroot overview finishes verifies revision prompted ethernet adafruit remember messages flashing accessed multiple required hardware content include gpioctl replace blinker writing microsd console openbsd powered default soonish pressed applied adapter machine ttyusb0 differs firstly control utility through numbers correct grouped usually toggled prepare running signify mirrors devices compile program seconds am335x gp_pin called serial printf medium target facing output rename manual blinky little return starts should closed system actual marked signal supply border letter before button having static bellow sha256 latest insert sizeof unistd switch 115200 memset string boards define opened listed values screen o_rdwr either scrips beware create gpios which cable error https refer other avoid pages while could using stdio gpio1 shell doing named errno fcntl sleep types times const debug gpio2 banks ports comes files gpio0 gpio3 under tools basic title there image cuau0 green among shown class armv7 width rsdxc white above linux least wire user unix find read leds with damn must onto from else will doas pins last each zero wide card your what plug usr0 also loop this near main line case data char miro disk once used base wait boot note when emmc grab then html hold ch07 sudo slot docs cost side four held ftp see img etc can pub www org fun 954 1gb jpg any try bbb txd max dot 615 png gnd rxd via now 75 fd j1 dc 5v 10 dd 24 21 50 73 32
+Sftp.Chroot:1718693528: Chroot.Intro Openbsd.Adduser Sshd.Configure : passwordauthentication disableforwarding troubleshooting chrootdirectory configuration permittunnel forcecommand permissions sshd_config information directories precaution components configure chrooting writeable ownership subsystem indicates permittty specifies possible accouunt pathname writable requires internal messages explains groupadd creating nologin openbsd already authlog account replace useradd working adduser changes uploads default holding startup session usermod reload others checks member exists states append folder record belong create inside syslog server actual passwd error pkill modes fatal 60020 intro https files chown mkdir after wheel drwxr owned which since title guide added block users match first shell does home with must sftp that this chsh 512b sbin will sure make bad jun not var any org all are hup yes run of we 17 49 01 ls 56 by 8
+Ifconfig.Hostap:1718690606: Dhcpd.Configure Unbound.Configure Nat.Configure : troubleshooting mywpapasswd translation immediately forwarding networking nameserver configure indicates password hostname supports reserved wireless netstart mediaopt ifconfig properly unbound caching openbsd desired servers routers netmask example replace clients routing address listens restart hotspot applied devices connect because finally service ruleset changes egress hostap choose sysctl mynwid actual option access reload reboot ensure enable assign system domain public driver either subnet wpakey filter packet dhcpd using match rcctl flags pfctl inet6 range title first other point known check going guide https echo from next your need with that athn card mode will then free also this make were does page wifi man 168 org if0 192 nat try not etc any can are dns 254 255 ip6 com and ips to 30 24
+Vlan.Configure:1718610449: Vmm.Configure Nat.Configure : translation interfaces hypervisor identifier configured install75 listening hostname ifconfig vmdusers machines reserved properly icmp_seq packets tcpdump address virtual network request flowing switch0 running confirm openbsd tagged parent locked vnetid vport0 egress lladdr 755954 749350 en10mb 749239 inside allows create memory bsdiso simple socket 756052 mygate format owner https qcow2 vlan0 cdrom reply link0 title vlans going guest using space bytes setup match sent veb0 ping with that 8100 data disk vio0 home type from then time tap0 inet 0x48 line this echo 113 ttl pri vmm tos can see 802 vid nat 372 org 102 201 man etc cat out any and fe 7b 8b e8 7a 27 43 d0 dc 04 1q ba 14 e1 pf we as be ip aa 42 bb cc 64 ms 24 2g
+Vlan.RecentChanges:1718564491:  : recentchanges configure 16t19 vlan 2024 jrmu 16z 06 00 by
+Vmm.Plan9:1718519335: Vmm.Intro Vmm.Configure : 89f1e35bf735bfc9aeca38286a9a6607f3a40292befa4a30133157790f2edbcc installation instructions configured interface available download properly explains uploads account switch0 openbsd desktop assumes cloud9p virtual machine 9front gunzip choose memory sha256 ircnow vpsnow locked lladdr inside create intro 10522 amd64 https cdrom using 2048m chown allow owner qcow2 title plan9 guide wiki html this user home disk have doas org you iso png the vmm doc are ftp etc gz aa mv ff ee bb
+Ifconfig.Vlan:1718402143:  : configuring identifier 0xffffff00 interface ifconfig hostname replace openbsd virtual network parent virtio vnetid packet vlan0 title virto vlans https with such vio0 inet cat tag org 100 etc if0 the man for as up 2 4 5
+Nat.RecentChanges:1718396385:  : recentchanges configure 14t20 2024 jrmu nat 35z 06 19 by
+Freedom.Radio:1718214333:  : communications open_spectrum radiofreedom regulation challenges political frequency available wikipedia including amendment cyberlaw stanford business freedoms wireless license without digital general encrypt purpose attach study first works bands truly https title party basic third from four 2012 data blog some your org the age use png any how not but are edu to
+Sshd.Configure:1718153029:  : clientaliveinterval clientalivecountmax configuration disconnecting prematurely sshd_config configure sessions settings messages seconds openbsd prevent example reload enable title https lines pkill these every times from idle your then have file send its etc hup org man and two add for to 15 6
+Team.Federation:1718081947:  : certification information oddprotocol connections planetofnix federation ircforever mainstream exemptions inspirenet thunderirc addresses providers bsdforall resolving shelltalk nastycode lecturify whenever accepted networks register support contact freeirc hosting cloud9p reports fashion timely behalf ircnow subnet please refuse commit update change email abuse rpblc admin title check space those below other order ipv4 0030 your team ipv6 2605 6400 fc15 help faa1 c3e7 must list this also 0020 0434 492c f449 0010 have well more 00fe make 84d3 able will c21e c684 join c3f8 f8de f633 like 1290 069d 8206 0bb8 6404 071b 4079 05bf 441a 00b4 85a0 864b 251 can org 119 2d3 198 104 244 185 158 and 229 133 130 240 not may 209 141 228 184 183 173 39 48 89 78 81 by 80 91
+Openbsd.Pmwiki:1717917854: Nsd.Configure Nsd.Zone Php.Install Relayd.Acceleration Openhttpd.Tls : typeyourpasswordthenpressctrl yc9qehuv0whgu19qqvhonhw1zutmc file_get_contents defaultpasswords enablepathinfo accessibility automatically configuration kchfdl42rabog documentation acceleration uploadurlfmt query_string permissions recommended lightweight configuring flexibility requirement javascript got_author connection nameserver siteadmin directory openrsync installed following configure openhttpd requested challenge 104857600 mirroring uploaddir necessary scripturl pubdirurl actually almanack location authform authuser cookbook assuming required creating requests familiar creation overview blowfish esvfdfwa download evaluate checkout username database example however favicon protect encrypt records rewrite command pmcrypt provide uploads fastcgi chroots regular exclude crontab browser support cronjob improve receive sources openbsd replace include instead limited setting finally restart located forking syncing working release htdocs readme pmwiki sample allows proper ircnow daemon relayd either change prompt hashes latest stable export simple backup stored commit making import delete domain listen folder before socket create passwd please update pages index rcctl daily local chown sleep email https these clean match using clone files ifend false rules helps title lines above 100mb large tells which doesn other guide begin block known strip while with doas acme will make xvzf when want skip urls well repo mind that like ends trim this from have zone body edit sure keep true next says grab only very text host also copy real they give init www its tls nsd org php run 360 new etc var tgz git not ftp can web are txt two max any put fpm 1mb cd by 14 cp of 11 mv 34 13 2b 09 80
+Profiles.Xfnw:1717898747:  : profiles attach title xfnw png
+Openbsd.Sysctl:1717885411:  : always_keepalive connections frequently forcing sysctls servers openbsd command alives egrep title apply other done find conf root this time inet from cat try run out tcp you all etc ssh if to as 1
+Cvsweb.RecentChanges:1717864050:  : recentchanges restore cvsweb 08t16 2024 jrmu 47z 06 23 by
+Cron.RecentChanges:1717696620:  : recentchanges suppressmail 06t17 cron 2024 jrmu 41z 55 by
+Shell.Cronjobs:1717696565:  : suppressmail deliberate redirect username cronjobs replace useless happens command newline follows emails mailto server there shell users fill note that with tabs doas this your var can sed may 1s if
+Ksh.History:1717693205:  : sh_history commands variable histfile setting profile openbsd default entire recent called change easily system export https fixed apply alias title shell shows this also does save most disk uses echo only wide that will when korn for etc the org ksh can not by fc 16 be 8 0
+Ksh.Editor:1717691298: Vipw.Usage Crontab.Usage Got.Usage Openbsd.Vi Openbsd.Mg : environmental keybindings temporarily immediately systemwide including variables utilities defaults changing openbsd suppose example defined profile program replace persist crontab sources actual editor change visual export emacs apply usage title echo want this both your user will make like vipw with root last line many such sets type got the ksh and etc for add not are by mg if we
+Openbsd.Tcpdump:1717566643: Openbsd.RSTFlood Openbsd.SYNFlood Openbsd.SYNACKFlood : danielmiessler dramatically troubleshoot destination synackflood parentheses yyyymmddss collection permission specifying convenient networking addresses processed malicious interface utilities different recommend including sensitive filtering protocols wireshark portrange simplest rstflood standard tcpflags synflood hostname hardware enormous problems external grouping keywords requires tcpdump traffic certain logging packets subnets combine because service include ability english verbose example adapted quickly without content openbsd finding replace involve ranges reveal format option speeds lladdr serial lookup number output source normal always coming syntax should headed server basics choose easily ports reset going shows which links https guide first bytes ascii using study power title avoid files input users month doing often pcap this will doas only here into that from vio0 have then data 6667 icmp like when note used root 7000 year view much 1500 type very live tool also time more than read evil stop unix ctrl logs lies you day udp see run man org ip6 can irc was 128 bit 192 dst 172 168 get src tos ttl but 24 13 10 18 22
+MountNfs.RecentChanges:1717408434:  : recentchanges mountnfs usage 03t09 2024 35z mkf 06 52 by
+MountNfs.Usage:1717408355:  : mount_point something mount_nfs directory different somewhere supports exported hostname mountnfs systems mounted version exports usually openbsd domain server names offer other usage paths with like file doas also each most unix and are you can set but has may is be ip 2 3
+FwUpdate.RecentChanges:1717402701:  : recentchanges fwupdate usage 03t08 2024 01z mkf 06 17 by
+Hostnameif.Autoconf:1717285170: Hostnameif.Static Dhcpd.Configure Rad.Configure Openbsd.Install Dhclient.Configure Slaacd.Configure : autoconfiguration autoconfiguring autoconfigure unpredictable installation networking preferable interfaces configured improperly installing hostnameif addresses available instructs dhclient serious openbsd replace problem specify servers easiest running lladdr change manner switch slaacd actual relies static vlan0 dhcpd inet6 after https cause title asked about none ipv6 your ipv4 vio0 this both sure make edit with when note done want if0 and for way the are rad org cat etc may
+Rad.Configure:1717273573: Hostnameif.Autoconf Slaacd.Configure : imsg_open_icmp6sock troubleshooting advertisements iface_timeout configuration solicitation dynamically information configured nameserver hostnameif networking foreground inspecting increased instances verbosity following interface multicast operation connected generated addresses discovers autoconf linkaddr manually messages prefixes machines possible specify clients openbsd startup running declare disable finally provide suppose default instead correct joining values router enable adding daemon slaacd static having option ensure handle source during should normal rcctl pkill first limit debug https check group title reply sends block their 1234 will also 5678 2001 want ipv6 with rest then that they stop term when 7a02 help fe7b 27ff ea8b fe80 from this tell new got if0 use rad db8 255 hop 422 org own can you but dns may etc cat of we 64 by be
+Znc.Patch:1717260330: Gpg.Verify Tar.Usage Ftp.Usage Znc.Chroot : d5823cacb477191cac0075555ae420cc0209989e pthread_attr_init pthread_attr_t multicore threading following recommend segfaults signature download provides sdatadir properly upstream releases software version cstring patched sconfig servers applied openbsd patches extract pkg_add chroots options warning verify attach latest stable custom source choose module easier script ircnow erbose causes stand usage gnupg build https added unzip files avoid first schat apply used 2024 from also main that xvzf diff argc next make must argv doas have code recv char bug fix znc int org 292 may mon cpp src new feb wed ftp gpg txt get you but for the tar can web old key due gz 0a be 27 sh 21 18 17 12 36 48 cd
+Route.Hostnameif:1717136223:  : configuration hostnameif networking 0xffffff00 necessary generated sometimes following interface manually assigned cloning default gateway address example suppose packets command subnet mygate routes second values adding reason lines files inet6 given iface marks using first title note this that 2001 link vio0 upon will says adds ipv6 ipv4 part been have your need db8 the 100 may for use 198 new etc cat are 51 we 48 to of
+Unbound.LAN:1717074145:  : configuration pseudosection installation respectively configured configures interfaces nameserver validating 2024053000 additional subdomains restricted verbosity operation authority validated character available installed specifies connected localhost displayed providing prefetch insecure commands behavior facility settings internet internal sections identity external keywords position verisign resolver nxdomain hostname messages question private allowed reverse unblock address network unbound control example version repeats lookups homelab general forward default queries updated fetched disable comment specify finally enables respond started servers enabled options openbsd proceed another utility refuse syslog blocks daemon starts system second access always coming expire before answer listen errors status opcode header equals 604800 remote global manual single action stated static target clause socket public edited should cache order which flags group tells alpha every nstld value spans rcctl 86400 query third space three these after found users where could first zones 27611 catch title entry sthen gamma delta using since above there data hide 1800 beta send bind cest size from both 2020 this line file msec used time each when logs same keep with also they root arpa doas will 1232 edns only base 3600 part that note ipv4 rcvd ipv6 must lan 254 200 yes are 168 127 116 192 see may thu msg ptr 900 has var dig let its too vim can grs cmd udp soa got 220 tcp run ip6 208 222 ip4 how 10 p1 67 of 21 14 29 41 by qr 28 35 58
+Unbound.LAN-Draft:1717074143:  : configuration pseudosection respectively installation additional interfaces subdomains validating 2024053000 restricted nameserver configures configured operation available validated authority installed specifies verbosity connected character localhost displayed providing behavior prefetch settings commands insecure facility internet sections verisign identity nxdomain question external messages hostname keywords resolver position internal private allowed reverse unblock address network unbound control example version repeats lookups homelab forward default queries updated fetched disable comment specify enables respond finally started enabled openbsd servers options proceed another general utility equals global access action daemon second starts static always refuse blocks remote status answer errors syslog stated single manual 604800 before expire listen opcode header system should edited public target clause socket coming zones third value nstld first alpha spans cache query flags space rcctl tells which order catch 86400 found after where users these three group could 27611 every title entry gamma delta since using sthen draft above there send note with from 1232 data msec arpa time 1800 this that hide size cest beta when must root 2020 3600 used base file bind both line logs edns part ipv6 keep same also ipv4 will each they only rcvd doas yes 222 var lan ip6 udp 208 192 can its 168 220 254 ip4 200 127 got cmd ptr are msg 116 tcp let how vim may thu see has dig run 900 grs too soa 67 10 21 28 58 35 of p1 by 41 29 14 qr
+Marketing.Recruit:1716986366:  : 28american_revolution minuteman_patriot_ wikimedia marketing wikipedia recruit commons upload 292px thumb https svg png org 39
+Ifconfig.Usage:1716982214:  : installations information interfaces 0xff000000 0xffffff00 autoselect prefixlen broadcast dependent mentioned something multicast referring priority ethernet allmulti loopback ifconfig changing software hardware chagning netmask running promisc simplex address adderss scopeid without besides changed maximum virtual openbsd network options usually getting pflog0 llprio groups active status egress packet adding utilty lladdr index inet6 using local about flags 33136 stack other which 32768 exist shows times media usage will them fe80 enc0 size this they used 8b43 most 1500 like 2002 ipv6 vio0 ee06 fedd ccff 1040 8049 any lo0 mtu and can set em0 0x1 mac 0x3 127 but 141 nat 128 you aa bb 56 34 78 48 64 by
+Ifconfig.Ifconfig:1716982195:  : ifconfig
+Site.SideBar-Draft:1716915804: Ircnow.Servers Bouncer.Bouncer Xmpp.Xmpp Shell.Shell Email.Email Email.Lists Chess.Chess Radio.Radio Vps.Vps Minetest.Minetest Ircnow.Roadmap Freedom.Freedom Ircnow.Media Ircnow.Team Minutemin.Bootcamp Adminforces.Training Codeforce.Training Almanack.Almanack Terms.Terms Donations.Donations Ircnow.Contact SiteAdmin.AuthUser Site.SideBar : adminforces minutemin donations homestead siteadmin codeforce authgroup bootcamp minetest authuser almanack training bouncers freedom contact sidebar service roadmap servers clients liberty express mailing ircnow source action admins shells radio chess lists email terms media world vpses right https draft ifend team xmpp pony edit join the got org of
+Donations.Donations:1716914296: Freedom.Freedom Vps.Vps : 14kaid0omdsq3do144 00g03z3ay7usb6gbij cn2eyt4ec5mk6q04gi btn_donatecc_lg paypalobjects supporting 8rthff4wvl donations madeonirc marketing liberapay purchase hardware internet uploads freedom widgets welcome center ircnow stripe months assets https 30usd 60usd title thank pools small en_us wiki also user year buy org per vps svg gif you for the www png
+Oidentd.Changeident:1716855097:  : disconnection reconnection successfully disconnected individually changeident alternative restarting afterwards disallows everytime following temporary alternate tampering setformat identfile displayed different requested confirmed solutions username contents settings enforces automate networks displays whatever themself commands requests checking shutdown required manually identbox desired account changed without changes control advised process ensures suggest warning oidentd admins pretty client untill random global server theirs rather kindly recent idents result easily issues should method placed single would reply alone which whole users above cause there other where hence doesn clone guide wants reads voila have than will this upon gets well your make note less whom case from move know uses over used said must much some goto also then been any run znc are see via msg can has but way irc won don new fix by of
+Znc.Admin:1716854789:  : redirect admin znc
+Irc101.RecentChanges:1716850016:  : recentchanges irc101 27t22 2024 jrmu 28z 05 41 by
+Irc101.Irc101:1716849688:  : redirect irc101 guide
+Hosts.Configure-Draft:1716187508: Hosts.InternetAddress Ksh.Redirection : internetaddress configuration whitelisting redirection permissions afterwards precaution tedunangst absolutely associates literally necessary malicious somewhere addresses requiring configure argument provided security probably password operator insecure specific complete drawback programs database yourself command logging mastery aliases chances persist without coconut because require current reached already creates running openbsd appends keyword network ircnow needed easier whoami should others normal format simple stolen manual unless permit stated allows nopass access below means wheel shell write could hosts users fixed needs chmod using https avoid login group order again first title draft holds names quite exist doas time life root will file lead this does when line find that next echo also exit gets then have note ctrl flak post sign type test else want tell done ksh can any etc are bug org see ask non lot of by ip we su
+Ircnow.Hardware:1716155317:  : hus724040ale641 143413344190 mz7ge960hmhp motherboard controller integrated wd4000fyyz expansions supermicro management backplane mjaoa5f0 p2349624 ext05f3q hardware 1000base ethernet onboard storage chassis support hitachi 560watt capable samsung 2x960gb 01ul1b3 _trksid server l49292 height single supply system m46890 ircnow nodes rails model x9dri 815tq 00003 563cb 01k04 drive https 2x4tb intel power caddy ports slots ln4f only ebay bays gold sata 2630 full ipmi quad xeon will core case with 48gb ddr3 work 3ghz 64gb nics pci hdd wdc ecc sas ram www cpu lff not itm com pws hex kit bpn reg rev ssd for 1gb cse 4x 1h v1 e5 v2 x8 1x
+Oddprotocol.Hardware:1716155129:  : 143413344190 mz7ge960hmhp oddprotocol motherboard integrated supermicro expansions management controller backplane ethernet wd40efrx ext05f3q p2349624 hardware 1000base 560watt 68wt0n0 samsung onboard capable storage 2x960gb _trksid support chassis single server height supply l49292 m46890 system model 3x4tb 00a80 00003 nodes power caddy drive 815tq 563cb x9dri ports slots intel https rails only ipmi will core 64gb quad bays xeon full 2630 case ln4f 3ghz gold ddr3 ebay nics work sata with not reg cpu bpn sas rev ram kit pws pci com lff itm ecc 1gb hex ssd hdd wdc www for cse v1 1u 4x v2 e5 1h 16 01 1x x8
+Bsdforall.Hardware:1716154914:  : hms5c4040ble641 143413344190 mz7ge960hmhp motherboard expansions integrated supermicro management controller backplane bsdforall ethernet ext1303q mpaoa5d0 p2349624 hardware 1000base _trksid samsung onboard 560watt chassis storage support 2x960gb capable single supply server height l49292 m46890 system model 00005 power nodes caddy drive 815tq 563cb x9dri ports 2x4tb intel slots https rails ddr3 only bays 2630 64gb case xeon ln4f sata will core ipmi full gold quad nics 3ghz with hgst ebay work rev sas ssd bpn ram www pci ecc hdd reg cpu not 1gb com itm hex pws cse lff kit 1u e5 4x 1h v2 x8 v1 16 01 1x
+Nastycode.Hardware:1716151594:  : 143413344190 mz7ge960hmhp st4000dm004 motherboard expansions supermicro integrated management controller backplane nastycode ethernet ext1303q p2349624 hardware 1000base chassis capable 2x960gb samsung storage onboard support 560watt _trksid height 2cv104 single supply server m46890 l49292 system 815tq 00005 intel model slots 2x4tb ports 563cb power x9dri caddy drive nodes https rails ddr3 only bays 2630 64gb case xeon ln4f sata will core ipmi full gold quad nics 3ghz with ebay work 0001 rev sas ssd bpn ram www pci ecc hdd reg cpu not 1gb com itm hex pws cse lff for kit 1u e5 4x 1h v2 x8 16 1x
+Planetofnix.Hardware:1716151503:  : hms5c4040ble641 143413344190 mz7ge960hmhp planetofnix motherboard expansions integrated supermicro management controller backplane ethernet ext1303q mpaoa5d0 p2349624 hardware 1000base _trksid samsung onboard 560watt chassis storage support 2x960gb capable single supply server height l49292 m46890 system model 00005 power nodes caddy drive 815tq 563cb x9dri ports 2x4tb intel slots https rails ddr3 only bays 2630 64gb case xeon ln4f sata will core ipmi full gold quad nics 3ghz with hgst ebay work rev sas sdd bpn ram www pci ecc hdd reg cpu not 1gb com itm hex pws cse lff for kit 1u e5 4x 1h v2 x8 v1 16 01 1x
+Marketing.Memes:1715882704:  : east_and_west_shaking_hands_at_the_laying_of_last_rail_union_pacific_railroad_ california_diamond_jubilee_half_dollar_commemorative_obverse _westward_the_course_of_empire_takes_its_way_ and9gctjrnzpkxfnes2bjdrpn5yzi4b56esqqo78sw john_wilkes_booth_wanted_poster_new spinning_jenny_improved_203_marsden boston_tea_party_currier_colored phillis_wheatley_frontpiece_1834 wright_first_flight_1903dec17_ htb1ww_yosni8kjjsspeq6awipxa1 _government_printing_office_ raising_the_flag_on_iwo_jima declaration_of_independence_ edison_and_phonograph_edit1 poor_richard_almanack_1739 edison_incandescent_lights 27s_first_view_of_kentucky international_morse_code _boston_public_library_ apollo_11_lunar_module_ flag_all_gave_some_530x fwpnw026hobokennjsa0266 weavercustomengravings california_clipper_500 battle_of_new_orleans historyofinformation 28john_gast_painting 26_clark_stamp_2004 cotton_gin_ewm_2007 allthatsinteresting 2c_by_john_trumbull pearlharborwarbirds launch_test_flight_ ford_assembly_line_ incrediblekeepsakes american_progress_ 28full_restore_115 improved_no2_wagon warhistoryonline madeonirc128x128 benjaminfranklin seal_of_virginia edisonphonograph _ten_years_ago_ emanuel_leutze_ 20230210_141532 j38telegraphkey fineartamerica fallofthealamo rusticsignsusa d3ao8sz5crj5i0 propoganda_07 propoganda_26 propoganda_22 propoganda_42 liberty_bond_ unitedweserve propoganda_09 propoganda_45 propoganda_06 propoganda_12 propoganda_38 propoganda_43 propoganda_31 propoganda_23 propoganda_36 propoganda_39 propoganda_01 artworkimages thanksgiving _restoration pennsylvania empirecenter lincolntrain _smithsonian philadelphia mediumlarge firstflight learntoread antislavery brownscombe confederate viking_pre 2c_larger_ cloudfront vegetables commanding propaganda 1565108493 recruiting 1690320414 1676079803 decorative wordpress wikipedia wikimedia rationing speckyboy overboard marketing 28cropped encrypted redbubble 574084501 freeusers 1910ford products congress official download february together software infantry airforce 750x1000 broumley greeting regiment commons content uploads gstatic 211x300 divided instead gazette eggdrop channel network nonfree officer vintage poster2 507x640 support against silicon 436x640 charles company 200x300 digital 212x300 victory 205x300 209x300 landing ringing workers soldier 150625 avenge attach flying burned yerkes alicdn coding garden f8f8f8 theyve sheila semper 1200px states 281819 should murals county 1182px 1188px valley ddoser effort lewis_ modelt ferris https thumb 179th fault tread wheel 558px 749px boone comes nazis 480px 00047 these 379px crier 768px rtalk floyd books acres 504px width efnet 679px stand 777px ifend throw 800px memes alive 476px doxed _1913 675px false mills 2017 2018 save core 40gb mule navy them join 2019 what bill capt tbn0 your usqp usmc moon 1946 each have town 1862 ae01 jpeg 2011 flat 7827 shop wall wild 28by 2016 from know _gpn 2003 copy 1840 guts hero unix org svg jpg png www pad 075 ih1 win _13 _10 got cau joe not him ask buy 014 diy ww2 29 6f f9 52 a7 35 fd b0 cf e9 b4 5a kf 1a 5d 54 9c c9 f7 6d 0d
+Openbsd.Sysupgrade75:1715409598: Openbsd.Dump Openbsd.Restore Openrsync.Usage Openbsd.Cu Vmctl.Usage Openbsd.Buyvm Openbsd.Top Openbsd.Syspatch : congratulations automatically configuration sysupgrade75 installation successfully proactively processorup particular substitute performing installing powerdown rebooting switching succeeded completes signature completed operating partition openrsync relinking fw_update processes progress verified location detected syspatch username fetching averages sysmerge download packages messages openbsd console running restore syncing generic pkg_add example loading welcome xserv75 probing version earlier reading system proper making before secure device number should vmmci0 serial create amount kernel base75 begins access sha256 recent unique memory login check first intel 2046m uname vmctl guide nodes drive 15472 using disks amd64 https buyvm usage quick error files 2288m after tty00 cache cores 1023m 1775m 44889 title above done sets intr idle cpu1 nice spin need real from will once free 189m doas cpu0 unix like says host last view able have this been note your html days keep none 392m beta swap type then make sure 2324 993m dump most that back 2024 want 638k com0 find org may see faq tot and any www top are ram man 137 216 fix 217 mdt tgz cdn 100 has vnc cd0 nfs can hd1 pc0 pub a20 tue apr wed ssh mar hd0 66 of 49 01 65 67 kb 33 79 43 14 19 41 61
+Ircnow.Services:1715357549: Yonle.Bio : ancientwisdom simpletable emphasize volunteer opensmtpd services everyone archiver sortable biboumi prosody oldwiki dovecot border gopher ircnow staff class yonle mlmmj izzyb width anope radio means names after maxxe more jrmu fics part gitd your docs list duty well host this and dns are bio for not org mkf web got 100 in of if
+Openbsd.Biboumi:1715332431: Openbsd.Ddos Prosody.Install : require_cert_revocation_info use_ecc_point_compression realname_customization target_link_libraries realname_from_jid component_secret fixed_irc_server link_directories xmpp_server_ip identification configuration outgoing_bind dependencies project_name invitations configuring connections discussions participate sourceforge postgresql installing persistent cmakelists management configure e2fsprogs automatic dwithout_ compiling installed unlimited following sometimes otherwise continue requires required pervious programs embedded hostname features snapshot password download building filtered favorite supports nickserv log_file biboumi systemd example openbsd replace libuuid prosody instead linking compile running disable address setting pkg_add sqlite3 extract tarball ca_file getting bouncer channel private notices version listing servers however gateway libidn botan2 during sample identd policy broken method export update client colors modify actual number ircnow adding public needed errors mkdir https there unzip first using louiz local admin about basic write chats false above users their could doesn flags seems true ctcp ping also 5347 only xvzf then this doas unxz ddos goal will your like sure next udns etc usr and ssl net pem 192 var txt ftp 127 git tls xvf can its sed let cfg of gz dl cd by 0
+Ircnow.Services-Draft:1715325795:  : ancientwisdom simpletable volunteer opensmtpd emphasize archiver everyone services sortable dovecot biboumi prosody oldwiki ircnow border gopher anope width staff class after names radio maxxe mlmmj izzyb yonle means draft docs well duty this list your gitd part jrmu more host fics and 100 org are yoy mkf not got dns for web in if of
+OpenBSD.Iked:1715324303:  : openbsd iked
+Debate.Providers:1714796024: Blazingfast.Io Colohouse.Com Glowhost.Com Debate.Contabo Debate.Flokinet Hostdime.Com Ideastack.Com Hyperfilter.Com Go4hosting.In Leapswitch.Com Crazyhosting.Com Onliveserver.Com Rdsindia.Com Cyfuture.Com Serverbasket.Com Hostingraja.In Resellerclub.Com Everdata.Com Ricohidc.Com Milesweb.Com Nowindiaonline.In Cloudoye.Com Softsyshosting.Com Webji.In Hostkarle.Com Serverscart.Com Vnetindia.Com Superbytehosting.Com Sytes.In Royalclouds.Net : ddoshostingsolutions colocationamerica uncensoredhosting superbytehosting nowindiaonline washingtonpost softsyshosting orangewebsite torbitcoinvps resellerclub serverbasket onliveserver crazyhosting hkcolocation unresponsive hosthongkong unreasonable yourlasthost sunnyvision serverscart recommended blazingfast royalclouds filesharing performance researching ariseserver hyperfilter spartanhost hostingraja alternative idcloudhost showthread guidelines censorship especially acceptable leapswitch serverwala hostsailor additional reputation deplatform use_policy simcentric luxembourg datapacket purchasing tornadovps delegation go4hosting afterwards technology quotecolo crackdown indonesia filtering questions dedicated ideastack singapore unhelpful providers australia endoffice currently amsterdam community aliendata hostkarle operating vnetindia including quadranet prometeus colohouse expensive hostclean sysadmins lowendbox political selecting countries religious potential attention sharktech serverrun microsoft offensive threatens important bandwidth streaming prohibits purchase customer 17671188 flokinet theverge hostdime continue anything friendly hostdata defining glowhost budgetvm supports untested serverhk includes leaseweb required criteria rdsindia terrible disrupts cyfuture milesweb ricohidc realtime everdata cloudoye miditech pakistan b4uindia shutting requires services replied openbsd contabo forbids cloudid without running centers located scripts respond digital 1352990 perhaps reports privacy systems content spreads hetzner careful certain lacking options already payment another bigrock anynode europe should speech google allows better really before notify debate amazon psychz offers follow ignore choose subnet answer github behind scenes strong host24 africa linode choopa memory https sytes legal webji doesn usage forum 10110 abuse heavy proxy herza ocean azure whole large price title check money where vegas vpses using first their buyvm south order court texas these reply there least email terms trial that what hate city chat rdns ipv6 free xmpp 2018 this york they find have slow good user bans know them from been size will didn asia need html aren when long send give list very case such best many uses vpns take over game two may www bot irc cgi law but aws faq new api aup ovh php org gab day can few prq x4b uk qz 08 pk
+Site.AllRecentChanges:1714773654:  : sendmoneytosplinter0616outlook tclerorrwhileexecutingpackage downloadingandinstalling theloungewebircclient userscategorymirrory emailandroidemailapp groupstagscategories ircfreehomesteadvps daughtersofliberty php_session_active troubleshootingdns ipv6certification dumpbackupwithscp indentationerror mlmmjwebarchiver macscreensharing category_mirrory allrecentchanges lanofopportunity sharedmailboxes wikipediadanger filepermissions irccloudandroid controlcomputer openforeveryone disablepassword sshfingerprints linuxstrongswan microsoftdanger sqsession_start squirrelmailing serverlocations libertyordeath holierthanthou firstamendment discriminatory unixphilosophy unboundadblock monopolydanger wikiformatting facebookdanger authentication webmail_access config_default session_status legalandsafety legalampsafety implementation resetpassword bejelentkezni accessibility mailopenproxy unfortunately sonsofliberty delphinusdnsd vicepresident ancientwisdom serversrights administrator youtubedanger debianinstall modifications mozilladanger sharedfolders compatibility amplification webmail_error httpopenproxy ethicalsource tcpresetflood conversations authorization configuration revolutionirc sysupgrade71 organization slackwareiso outreachkids sysupgrade75 googledanger introduction konversation orangepi3lts sysupgrade70 checkupdates recordscreen default_pref ircv3defense acceleration instructions dragonflybsd texturestyle addingarenas serverrights partitioning unmaintained sysupgrade68 sysupgrade69 sysupgrade74 certsreissue basicbotwiki applications denomination ethicalflaws opsofliberty constitution on_is_active publicdomain lilywhitebot shellsshkeys matterbridge startupdream debiandanger autocomplete searchsocial bindresolver independence outofmemory changeident grammatical appledanger roadmap2024 interactive uncommented tcpackflood configuring opentracker nginxphpfpm development masterslave recordaudio mailwindows thunderbird preferences victorycpus worldbackup planetofnix irccloudios information nowwithinit debiankaios pioneertldr wikisandbox certificate sourceforge encryptfile sshbackdoor drawtermssh slackdanger opofliberty sqliteviews alternative letsencrypt matrixflaws disposition heheheheheh keybindings independent replacement screenshots ellisisland recommended roadmap2023 roadmap2021 oldsoftware redirection gophernicus splinternet macterminal oddprotocol hunchentoot irccloudweb description definitions myipaddress knownissues roadmap2022 connectbot ambassador chatsecure hydragyrum miniontoby enterprise devuan4iso subheading pigeonhole hyperlinks rmsboycott thunderirc nodejstrap pentesters dueprocess eggdrop193 hostnameif bittorrent vulnerable tournament censorship passphrase registrars homerouter openaccess factorauth accordance federation hatespeech dodocrypto ngircdlink rockylinux zoomdanger cheatsheet configtest additional posterdati connection uberdanger unrealircd nameserver eggdrop191 compatible parameters edgerouter translator attempting extracting freespeech management javascript afterwards zncmodules configured wikigroups chimaera_4 remoterepo blacklists singleuser dehydrated zncsupport milestones monospaced linuxflaws expiration jsdrawterm status2022 vmminstall powershell dogfooding eggdrop184 openhttpd minutemin nastycode sulieztya september immigrant applemail chatforce marketing install73 ubuntuiso dkimproxy checklist education opensmtpd openrsync hostowner almalinux shelllabs womenstem pointless grapeteam devuaniso synclient ircitizen statement copyright duplicity geomyidae staticnet sysadmins install74 openrelay currently rulebylaw universal reinstall questions autorenew duplicate noxturnix partners2 bsdforall localtime documents disklabel wsconsctl loginconf seamonkey revertion wikistyle providers shortcuts christian compiling essential permanent archivist suggested upgrade67 addresses installed diversity install69 install68 myaddress donations simpleirc procedure craziness wordpress pfbadhost lecturify debianiso importing install67 upgrade72 polishing limitsbot emailtray 9gridchan opentoall install70 codeforce formating sysupdate complains install71 functions meeekeeef localhost fusername challenge supported clawsmail siteadmin specified install75 _dkimsign pftesting chessgogi selfadmin customize passwords directory subdomain madeonirc workethic following beowulf_3 erroneous efficency cookbooks necessary xdefaults delimiter newconfig receiving manifesto ircbridge simpleurl discussed databases debugging languages almanack february phishing optional november settings listener sendmail properly bootcamp specific zncdaily vmmlinux licensed gtlsgamr original training cronjobs theguest provides profiles tlsmulti zncadmin 26214400 minetest announce projects security required remember networks normally chrooted smtphost hardware monitors december services solution dokuwiki spelling udpflood accurate rstflood wikitips assembly markdown initfree sylpheed intermap softened pagelist ethernet probably counting guardian http2irc finances duckhunt opernbsd acmemail packages nickserv tutorial suzerain akoizumi olympics vhosttcl resolved ipv6rdns superior tiramisu unneeded editable syspatch editform changing _dovecot renaming although ipv4rdns basilisk expanded pfstable explorer redrum88 tigervnc zncflaws browsers updating bootconf overview sshwifty juicessh optimize commands freenode homepage dnszones zonefile republic ifconfig torsocks hostserv asterisk congress takeover chording netadmin religion leafnode softraid founders authuser openiked plan9ini confused marriage numbered partdisk chroot69 howtoask ircnowv2 wesnothd progress puttygen bearcode messages brackets instance fallback writable browsing drawback continue xmlflaws mandarax donateus released freedom october openssl openbsd hexchat anoncvs oidentd fossdev biboumi another because synapse welcome netsurf freeirc created bouncer baytuch newdisk syslogd tcpdump coconut initial vmmuser missing settler openweb thelion certbot mhonarc related economy nsturtz plermoa perl101 achurch changed catalog kiwiirc termius naglfar netizen sources version clients newsnow spacing unix100 psotnic openssh anycast restore feature updated weechat started schemes serfish instead cloud9p mistera removed militia ikiwiki linking expired privacy boxette guixiso voidiso icechat gazette sheriff cleanup rbldnsd destiny january article zouheir metrics realvnc newdeal various openpgp snipped nixdork exhibit iscabbs history website censord reading ircnowd xonotic apperad pufferf ongoing unix101 signify adduser rewrite prosody bitlbee webnews whynotc storkim clarify freedns pleroma texlive hosting aboutus rsakeys contact sinhala recruit mcabber writing helpers tunnels camping nitpick exiting keypair section restart strings markets mention nologin opening correct misused include already written account uploads foxtrot icecast subject sidebar without charlie warning present mt_rand charset appears summary 9pideas content sending tarball defines plugins backups contrib general easyapp cprimer example mariadb rebuild swapctl unusual request private cleaned defined authsrv fastcgi however crontab options ansible byebye august akkoma debate cherry before always unwind relayd policy inter9 sylv1a allies tcltls yiming pmwiki should revise thanks irc201 sysctl kilroy course forero sorted police rspamd pidgin spaces checks better keygen botnow syntax markup netcat 9front blocks global chanop maddie system locale pylink readme serial making please detect reload pkgadd invert wikiv1 export report bncnow errors quofan relays gotweb stagit ffmpeg hidden trying actual concat caesar delete vision femail myname attach daemon lookup inline socket rather atactl verify logout longer cannot return latest htdocs braces siskin lohang monero ilines xabber dnssec gomuks python botznc paster output wraith frames across hashes switch telnet offset typing themes become netbsd census base64 xenodm devune monaco web101 unused psybnc tcache kissmo banana nitter atomic dennis coders kiliro termux medals jujube hotkey vpnmac reason jacobk pirata ircweb adiirc easily winirc pledge unveil humans civics setuid atheme libera doxing growfs xboard cvsweb viewer commit arthur alpine fdroid acmesh vpnios refuge guide irssi 04t02 might april 26t20 yonle izzyb 11t17 28t21 ports ircfs tcpip third fixes xterm maxxe added 08t05 stuff 15t09 04t03 audit 04t18 03t20 st13g seems dillo usage 26t01 parec needs ipsec 07t05 blank 23t15 31t23 22t01 03t23 26t23 emoji igloo pyr3x haiku 16t07 rules 03t07 30t21 20t22 07t23 lemon 05t18 setup empty pppoe 30t12 13t18 18t10 fixed 11t19 01t13 buyvm anope 08t02 bsdrd 01t01 guava 20t06 panic 01t15 18t15 03t16 18t09 exits minor 24t16 17t18 march stopm zleap hed0x 25t18 28t17 24t19 14t14 tools 09t16 19t01 mango wrong quota draft field 20t00 18t16 16t21 27t19 01t18 24t22 01t03 14t09 29t05 09t21 18t05 games 09t18 navic rcctl 06t20 jmirc 16t00 there dmarc 11t20 13t03 16t20 12t15 dnswl 19t19 sysop 31t21 pipes 10t20 abuse chewy 11t04 tasks 04t20 10t17 16t19 31t22 media 19t17 memes never 10t06 notes 12t19 25t04 npppd 30t02 26t18 types icmp6 vsftp 12t17 02t14 19t16 23t03 26t16 fiche scanf 29t16 goals 01t17 adium ascii radio yaxim 19t00 happy 15t12 09t05 29t03 17t20 02t13 dhcpd 11t06 08t01 07t17 vmctl 10t22 dutch 02t01 21t04 07t22 25t17 mount fatal array 21t15 25t14 28t04 01t16 19t04 delta gajim 27t18 curly ifend 31t10 using 07t01 09t19 08t21 nicoz above sleep 24t17 union 10t05 22t02 09t20 06t23 23t12 03t18 newfs 26t07 10t23 31t19 14t02 28t00 31t14 gnost sarah 03t06 https monal 07t10 06t05 22t00 24t15 30t13 29t21 08t20 saved title 29t22 23t00 labor 26t04 16t04 index emacs 28t08 fdisk fonts 04t21 means 03t21 class teams 04t00 21t17 alpha 11t00 ircrc 09t04 22t14 08t16 22t04 where 21t18 24t02 kvirc 22t16 worry 15t22 opera based bravo 22t19 query 22t03 22t05 19t21 strip 23t20 chain exist 23t19 17t19 glono cinap 09t01 since 22t06 match which 18t12 false color 27t10 17t15 02t17 21t20 02t18 04t13 16t18 03t02 10t15 inbox 11t16 20t16 06t04 06t07 09t23 27t20 06t21 could dmesg 21t03 06t19 ramfs 27t15 02t21 skins 17t04 10t00 12t04 21t16 chmod 12t00 07t21 04t05 19t03 10t14 touch acopm 11t07 06t22 08t13 05t03 01t21 30t14 chown psftp cvsfs 12t09 creed 12t05 16t09 05t19 29t23 php74 02t06 13t14 mkdir jrmu soju body menu 2602 aaaa rahl devs that some fccf ddos geze punk runs into todo 1008 pop3 does 2001 bgpd hide siva imap totp doas chsh ntpd motd hawk your sbin will well math fics fvwm duty make full this from hope quit give sure xvzf logs echo find fqdn dino once u9fs hopm 9pfs many tmux wifi xfnw hier html more utf8 fees uses mime must 0dev zuke next both fork done snac have ctrl were bash like when typo sins july gnus 2020 sudo mosh ssdp june cgit xmpp dash xfce dirs vipw grep rfcs fizi kill what cash x230 c101 bots rcpu pbug ianj same bugs xorg cpan stub mutt why9 want jan6 dima caps i18n sshd none bchs plum yeah i2pd slrn apmd gear honk mkf 43z 30z 49z 14z 46z 12z 162 58z 13z bio wss 01z may 15z pfa pki 40z cwm 24z 08z 37z 26z mta 53z 44z 28z db8 07z 42z 00z 38z day ps2 22z 11z 05z wiz 03z 16z 17z 51z 34z 09z 59z 41z x86 10z 25z 36z 21z 50z 54z jlj 143 23z 18z 02z 57z gry spf 19z 45z 04z 56z 47z via 20z psi 48z 33z 32z lol 127 27z 29z 39z 06z 35z 55z 31z zip gpl vim but www pns dcc mif nsf fns g1n lua 755 bbb dig crt ksh inn wip usr src 451 was 634 sox 403 few gpg m16 huh erc uim 644 psp 87 80 mv gz rx 52 9c
+Openbsd.Fstab:1714482051: Openbsd.Dmesg Disklabel.Usage Swap.Partition Openbsd.Outofmemory Swapctl.Usage Ffs.Intro Openbsd.Dump Openbsd.Fsck : fd7ecb3de7e46e12 automatically unexpectedly filesystems outofmemory recommended interesting partitions considered identifier executable exhausted writeable disklabel wxallowed operating 524288000 indicates performed indicated describes specifies rewritten processes sometimes recently scsibus1 increase 256000mb ordering analysis scsibus2 relative drawback 41943040 normally complete openbsd swapctl mounted storage because running sectors creates instead numbers deraadt execute however setting example present 20480mb checked options devices ignored created nosuid needed reason bootup cannot change refuse freeze checks should reboot others virtio setuid killed papers update allows likely edited before backed adding unique would local space first often https nodev intro using dumps names fstab usage dmesg could index ven05 large value duids lines tells point doesn which disks wrong least wants there group panic title block bytes x11r6 256gb only mode find read with also each root this when over will used uses real doas been core your grep next pass have that both html they what conf fsck user 20gb many days case targ home type fast hard look none sd0k take then old ffs two 512 usr lun are and sd1 see org has new its etc var www obj src tmp may rw wd
+Dovecot.Install:1714175707: Openbsd.Loginconf Openbsd.Rcctl : auth_verbose_passwords auth_debug_passwords troubleshooting _rc_rm_runfile _rc_parse_conf configuration mail_location dovecot_flags installation instructions verbose_ssl oddprotocol permissions dovecotcert _rc_quirks submission mail_debug directory debugging suggested rearrange loginconf protocols openfiles following fullchain addresses _dkimsign euhb95xlq indicates username _dovecot receives doveconf rc_check _rc_wait explains ssl_cert rc_start blowfish replaced allowing settings cap_mkdb s_client prevents starting required database consider starttls maildir support finally folders service openbsd encrypt defines example missing include comment private connect nologin virtual warning useradd coconut rebuild openssl maillog pkg_add happens readmes default managed ssl_key changes passwd listen domain remove adding please aiyngk enable forgot ircnow failed scheme spaces static driver daemon script system passdb bottom turned second exists userdb denied single secure owners public _smtpd https which block lines error users chmod store vmail doing rcctl owned first _mail fails write group class local chown using empty again share fatal these order tells since where imap that 0750 make sure need doas find will with your real mode sbin when used 1003 this work note more many have than help tabs lmtp must just best euid 4096 egid 8192 from then args pop3 home 2001 path jrmu last want host sha1 also such exec says case 231 etc var 125 518 pem jun see can may 143 let via blf ext out yes and 440 770 aid ips don rwx db8 168 usr doc max but crt if 41 of by we 37 80 35 my
+Dovecot.Install-Draft:1714175622: Openbsd.Loginconf Openbsd.Rcctl : auth_verbose_passwords auth_debug_passwords troubleshooting _rc_rm_runfile _rc_parse_conf configuration mail_location dovecot_flags instructions installation permissions dovecotcert oddprotocol verbose_ssl mail_debug _rc_quirks submission loginconf openfiles indicates directory protocols rearrange _dkimsign euhb95xlq debugging following fullchain addresses suggested receives doveconf starting database cap_mkdb ssl_cert username prevents blowfish starttls _dovecot required s_client rc_check consider explains settings allowing replaced rc_start _rc_wait openbsd service encrypt example maillog happens connect coconut include comment defines default finally rebuild support openssl warning missing virtual maildir useradd managed folders changes nologin readmes private ssl_key pkg_add enable aiyngk scheme bottom passdb userdb listen domain please script passwd failed system denied turned ircnow adding driver single exists owners _smtpd remove spaces forgot second daemon secure public static vmail rcctl block group class https these since again lines first share local draft order doing error write where chmod chown _mail owned which tells users store empty using fails fatal 1003 with make 4096 jrmu real when 8192 0750 mode your doas must tabs this host that egid euid imap find will case path best just need such more work note than help have sure many last lmtp pop3 says sha1 2001 then from want also args home exec used sbin 518 etc var and don yes can aid ips rwx jun pem 440 125 231 770 db8 168 see via let but max usr out 143 ext doc may crt blf we 80 by if 41 37 of 35 my
+Openbsd.Fetchmail-Draft:1714075533:  : header_checks configuration stackexchange fetchmailrc jeffexample batchlimit forwarding delievered bouncemail indicating postmaster connection detecting describes questions dangerous delivered password protocol together accounts provider messages retrieve fetchall facility antispam defaults commands delivery designed document bounced resolve postmap postfix service minutes restart through openbsd another logfile special similar problem install servers timeout pkg_add reasons status bottom errors create filter needed secure client secret syslog option system ignore daemon assume remote 642677 regexp user2 user3 user1 https local taken issue about notes there users exact given above draft chmod owner using cloud hosts avoid since every safer cache this loss uses mode also with from wide each poll hand loop edit 0600 like look pool imap root must will have over lets main want many pull smtp that info unix more had via pop you vim may are top ssl www far 5xx set 4xx 150 var 300 now 100 of cf if we
+Ssh.RecentChanges:1714062737:  : recentchanges fingerprints 23t15 2024 jrmu ssh 40z 04 by
+Mariadb.Install:1713031588:  : mysql_install_db database_name multithreaded installation initialising initialises replacement mysqld_safe mysqlclient privileges identified initialize dependency user_name localhost directory following uncommnet including configure password1 databases modifying creation commands packages address regular mariadb creates changes execute console connect running mariabd pkg_add openbsd similar servers library headers access socket yourdb syntax remote editor enable system oracle tables grant shows above rcctl after start 94120 lines user1 flush basic error happy other apply there order check 1016 1040 side good with will only pops 40am this root grep doas 3306 curl bind port list save days page need msql very bold new – for are two var see www aux now api cnf one its usr etc we by 02 p0 sp 00 up of ok
+Openbsd.Openbsd:1713031339: Ircnow.Howtoask Minutemin.Bootcamp Openbsd.Ongoing Openbsd.Stable Openbsd.Testing Openbsd.Team Openbsd.Abuse Servers.Rights Minutemin.Code Minutemin.Server Minutemin.Duty Congress.Procedure Minutemin.Game Openbsd.Buyvm Openbsd.Vmminstall Openbsd.Vmmuser Openbsd.Vmmlinux Openbsd.BBB Openbsd.Bsdrd Openbsd.Sysupgrade68 Openbsd.Install67 Openbsd.Install68 Openbsd.Upgrade67 Openbsd.Upgrade68 Openbsd.Newdisk Openbsd.Fdisk Openbsd.Disklabel Openbsd.Growfs Openbsd.Net Tcpip.Overview Openbsd.Staticnet IPv4.Overview IPv6.Overview Tcpip.Sockets Openbsd.Netmask Openbsd.Anycast Openbsd.Pf Openbsd.Ddos Pf.Guide Openbsd.SSDP Openbsd.ACKFlood Openbsd.RSTFlood Openbsd.SYNFlood Openbsd.HTTPFlood Openbsd.NTPAmplification Openbsd.UDPFlood Openbsd.Amplification Openbsd.Ping Openbsd.Netcat Openbsd.Tcpdump Ln.Intro Telnet.Http Openssl.Http Openbsd.PFStable Openbsd.PFTesting Openbsd.Pfbadhost Relayd.Acceleration Openbsd.Stunnel Openbsd.Npppd Openbsd.Pppoe Openbsd.Dhcpd Dns.Overview Openbsd.Nsd Nsd.Masterslave Nsd.Troubleshoot Dns.Records Openbsd.Unbound Openbsd.Dig Dns.FQDN Openbsd.Unboundadblock Openbsd.Sshkeys Openbsd.Sshbackdoor Dns.Zonefile Openbsd.RDNS Openbsd.Vhost Openbsd.Domains Dns.Registrars Openbsd.Dnsbl Openbsd.Rbldns Openbsd.Delphinusdnsd Openbsd.Iked Openbsd.Wireguard Openbsd.Gopher Openbsd.Gophernicus Openbsd.Geomyidae Bucky.Install Openbsd.Ntpd Openbsd.Sftp Openbsd.Tor Openbsd.Sshd Openbsd.Www Openhttpd.Configure Openhttpd.Hosting Acme-client.Configure Openbsd.Httpopenproxy Openhttpd.Perl Openbsd.Php Openbsd.Dokuwiki Openbsd.Pmwiki Openbsd.Squirrelmail Openbsd.Cgit Openbsd.Gotweb Openbsd.Oscommerce Openbsd.Cumulusclips Openbsd.Fluxbb Openbsd.Question2answer Openbsd.Wordpress Openbsd.H5ai Openbsd.Easyapp Openbsd.Manna Openbsd.Irc Znc.Chroot Openbsd.ZNCAdmin Openbsd.ZNCSupport Openbsd.ZNCModules Openbsd.Psybnc Openbsd.Ilines Openbsd.Bitlbee Openbsd.Botnow Openbsd.Censord Openbsd.Identd Oidentd.Install Oidentd.ZNC Openbsd.Eggdrop Openbsd.Wraith Openbsd.Biblebot Openbsd.Tcltls Pylink.Install Openbsd.Ircrelayd Openbsd.Matterbridge Openbsd.Ii Openbsd.Sic Ngircd.Install Ngircd.Link Ngircd.Ssl Openbsd.Hopm Openbsd.Acopm Ngircd.Oper Achurch.Install Anope.Install Openbsd.CPAN Openbsd.Mail Openbsd.Opensmtpd Openbsd.Opensmtpd-relay Openbsd.Opensmtpd-2 Openbsd.Dkimproxy Openbsd.Dovecot Openbsd.Dmarc Openbsd.Spf Openbsd.Dkim Openbsd.Spamd Openbsd.Mlmmj Openbsd.Mailopenproxy Openbsd.Alpine Openbsd.Mutt Openbsd.Fdm Openbsd.Av Openbsd.Utilities Openbsd.Pkg Openbsd.Ports Openbsd.Doas Openbsd.Locale Openbsd.Oath-toolkit Openbsd.Ssh Openbsd.Syspatch Openbsd.Ffmpeg Openbsd.Dump Openbsd.Restore Openbsd.Backups Openbsd.Openrsync Openbsd.Cron Openbsd.Rcctl Openbsd.XTerm Tmux.Config Openbsd.Iplookup Openbsd.Vi Openbsd.Mg Openbsd.Games Openbsd.Minetest Openbsd.Freeciv Openbsd.Openttd Openbsd.Asterisk Openbsd.INN Leafnode.Install Webnews.Install Openbsd.Misc Openbsd.Prosody Openbsd.Biboumi Openbsd.Matrix Openbsd.Gnupg Openbsd.Slrn Openbsd.Chroot Password.Management Openbsd.Base64 Openbsd.Uim Openbsd.Dev Openbsd.Hosting Hosting.Providers Openbsd.Vmm Openbsd.Announce Openbsd.Security Openbsd.Phishing Openbsd.Dos Openbsd.Spam Openbsd.0days Openbsd.Rootkits Openbsd.Pledge Openbsd.Unveil Openbsd.Databaseperms Openbsd.Two-FactorAuth Openbsd.Secureweb Openbsd.Trust Openbsd.Defaultdeny Openbsd.Loginconf Openbsd.Ids Openbsd.Setuid Openbsd.Sa Openbsd.Edquota Openbsd.Shell Openbsd.Police Openbsd.FilePermissions : ntpamplification question2answer filepermissions unboundadblock databaseperms mailopenproxy delphinusdnsd announcements httpopenproxy configuration sysupgrade68 cumulusclips acceleration squirrelmail troubleshoot matterbridge conveniently instructions development sshbackdoor defaultdeny gophernicus pkglocatedb masterslave imagemagick information unofficial oscommerce zncmodules zncsupport accounting vmminstall management developers themselves networking registrars factorauth beaglebone audiovideo blacklists procedure minutemin wireguard addresses searching questions staticnet detection ircrelayd intrusion openhttpd upgrade67 disklabel install67 install68 configure wordpress httpflood partition geomyidae pftesting pfbadhost loginconf languages secureweb opensmtpd dkimproxy utilities reference openrsync telephony providers policing netmasks bootcamp pfstable rootkits vmmlinux phishing howtoask overview accounts security binaries congress dokuwiki udpflood biblebot ackflood synflood leafnode asterisk password minetest iplookup rstflood symbolic zonefile syspatch chrooted zncadmin template answered training examples archived properly plumbing almanack sysadmin openbsd restore backups toolkit openttd freeciv webnews sshkeys prosody biboumi bitcoin icecast oidentd eggdrop bitlbee censord edquota dovecot hosting achurch sockets anycast newdisk vmmuser easyapp stunnel domains records tcpdump openssl service chinese ongoing servers through special package mailing channel readmes defense ramdisk suppose proxies daemons bundled project wraith guides matrix ngircd telnet gotweb tcltls base64 pmwiki netcat sndiod vorbis source netpgp pylink pledge setuid ilines rights psybnc attack system growfs police quotas packet ircnow filter denial unveil fluxbb botnow adding client ffmpeg before sample border alpine locale rbldns bsdrd tcpip using ports pages often buyvm honor abuse spamd share there dmarc anope files mlmmj https shell acopm npppd fdisk which xterm gnupg dnsbl games title learn bucky width final pppoe trust vhost start first intro 0days these rcctl manna dhcpd links reset misc name oath have sudo also doas hopm slrn cgit help tmux h5ai ntpd sftp sshd cron acme chat rdns ircs your find room that then come with mutt want cpan iked take many fqdn ddos ipv4 apps duty ipv6 code ssdp ping mgmt team org faq can ids and sic www fdm uim php bbb inn spf dig sox usr doc 100 but get ii by
+Openbsd.Upgrade75:1712868165: Openbsd.Bsdrd Openbsd.Sysupgrade Openbsd.Dump Openbsd.Restore Vmctl.Usage Openbsd.Cu Openbsd.Buyvm Signify.Verify Openbsd.Bootconf Openbsd.Pkg OpenSSH.Connect Openbsd.Top Openbsd.Syspatch Openbsd.Fwupdate : 0xffffffff81001000 congratulations configuration automatically installation inconsistent successfully filesystems immediately recommended maintaining proprietary downloading university particular installing optionally developers simplicity manipulate fontconfig substitute sysupgrade bootloader unattended california utoinstall thereafter networking prepending ramdisk_cd everything installed processor upgrade75 succeeded processes upgrading 0x1a6a408 copyright signature operating directory correctly something switching partition available completed interrupt installer libraries following megabytes fw_update relinking reinstall beginning lightpink lightgrey lightblue location overflow xshare75 password existing skipping downtime sysmerge bootconf provider upgrades reserved pressing required fwupdate mounting shutdown possible checking packages selected terminal 17741653 probably versions firmware tutorial averages security 0xaa40e8 syspatch entering external labelled disabled programs graphics messages continue verified freetype hostname xfont75 openbsd signify restore closest servers xbase75 minimal console patches against decided usually bgcolor outside another assumes padding pkg_add missing default happens connect seconds timeout welcome openssh 4076463 booting 1688576 regents 3891240 editing xserv75 proceed corrupt pattern prompts answers probing control arrived details careful replace reading 1391208 1546359 1232896 4277256 running example 4027400 written generic updated hundred present advance repair typing escape 088677 except define 115200 413392 should margin rights reboot ircnow create sha256 verify symbol return serial yellow either 317541 464016 708608 memory change during before bootup number screen needed notify proper amount mirror booted choose issues easier mostly comp75 device game75 making cannot kernel normal unique guide steps amd64 would proxy uname https above error cores using intel later entry point 1204m leave often cache 2288m flash ports allow drive nodes 10112 abort vt220 15472 order which bsdrd users buyvm force clean vmctl boots man75 tty00 cause fonts shell shown usage table state disks title first jrmu2 alert final block going login black 2046m 1982 sure 1986 that note this sets html from will hard hd0a also 1989 done list just root with must make 1991 2024 1993 none 8080 then 1995 such been risk your only faq4 dump them long have view sake even text used like says exit find back 2324 com0 baud swap want doas 387m nice spin intr idle cpu1 real 666m 638k 756m cpu0 left warn info else sd0a fsck same idea days 5em get few cdt may 1em see and but any fix top did tgz act tot iso org 128 www elf mdt cd0 wed thu apr nfs alt was has way pc0 ftp pub a20 url new usb mnt etc cdn vnc 109 vmm ok 55 fp 29 21 94 79 0k 18 kb 49
+Ambassador.Markets:1712855742:  : sufficiently disabilities successfully demographics underserved immediately mainstream dissidents pseudonyms accessible developers ambassador appreciate marketing currently fediverse advocates sysadmins unwilling religious political technical community slackware anonymity bandwidth neglected available satellite interface education software hardware properly requires students mastodon continue computer millions tracking movement american internet involves strategy english android focused compete network neither recycle windows markets openbsd invaded clients because example upgrade latency however eastern hearing readers african outside element connect quickly privacy grounds western feature limited hangout middle europe better matrix censor unable matter dialup easily screen easier issues vision google poorer behind speech refuse others target social ircnow cannot minded gentoo netbsd harder should users money still habit niche think 1mbps china there skill shine total allow adopt these email where haiku rural learn world speak parts often south with vpns more free rich they have home find that best fine know fast half help some live high year asia save very text hate this many foss slow our tor you set dsl who for few key old run nor but far usa org 10 if 20 by xp 4
+Swapctl.Usage:1712819184: Fdisk.Usage Disklabel.Usage Openbsd.Fstab Dd.Usage : 23e250c235b4218f transferred 1073741824 partitions convention management disklabel following preferred dedicated megabytes available necessary 76192760 priority swapfile prepared capacity 41943040 presence existing 41942976 possible swapctl 2109020 2104451 openbsd 4213471 example 2106160 changes confirm another already specify finally replace records meaning 2097152 devices provide 6310623 create blocks unused fstype prompt bottom single system exists adding verify offset switch busier memory plenty letter editor bsize usage fsize fstab since space fdisk where files using first total count being point mount title enter heavy https helps need only long none with have free will sd1b 1024 next also that says this just duid find line note then grep even area sd0b tool list user home some secs lack zero call path 2860 100 512 its can you org and now see may 092 out 1gb new etc any has 20g for cpg we 1m 64 14 q
+Disklabel.Usage:1712818194: Fdisk.Usage Disklabel.Partitioning Newfs.Usage Openbsd.Fstab : fd7ecb3de7e46e12 configuration partitioning 1073736341 filesystem partitions 1073736405 boundaries identifier convention parameters disklabel available gigabytes construct megabytes cylinders terabytes allocated operating installed kilobytes truncated defaults relative geometry ordering boundary creating indicate commands installs suffixes message logical openbsd letters because another changes created already sectors creates display reading nearest instead modify labels expert toggle header delete entire sliced resize values offset unique fstype unused please layout second prefer inside device before editor should prompt single fstab duids start bsize names print fdisk usage newfs write fsize units first using 32768 space total leave https track title guide reset cover exist point mount enter drive after help this then area quit show free 4096 2bsd want swap your have root auto undo with into mode same need just last each note grep than path lose exit save like page find time doas does been may gpt mbr etc see sd1 now 512 sd0 org cpg has add can any non ser we so 0g
+Mount.RecentChanges:1712817303:  : recentchanges mount usage 11t06 2024 jrmu 40z 04 19 by
+Swapctl.RecentChanges:1712817303:  : recentchanges swapctl usage 11t06 2024 jrmu 14z 04 33 by
+Newfs.Usage:1712816414: Fdisk.Usage Openbsd.Disklabel Mount.Usage Openbsd.Fstab : permanently 1073736320 disklabel construct mentioned partition cylinder examples previous suppose openbsd backups sectors either system 524285 inodes blocks groups newfs rsd1a title bytes 26062 52224 super mount usage fstab fdisk https after order each make 44mb file used have fsck doas sure now for can run add and you set etc org 814 512 644 3mb dev our we of at
+Mount.Usage:1712816380:  : title mount usage
+Fdisk.Usage:1712794198: Openbsd.Backup Dmesg.Usage Disklabel.Usage Newfs.Usage : 5f6d0b5c9f65249d automatically interactively irreversible partitioning installation information substitute initialize additional everything partitions identifier completely 1073741824 attempting installing particular 1073736341 relatively gigabytes recommend signature 524288000 wikipedia important available disklabel including cylinder defaults existing 41943040 mistakes bootable scsibus1 geometry followed 256000mb starting possible manually probably scsibus2 commands extended openbsd program changes correct current sectors entries proceed instead without warning machine already 20480mb storage drivers running reading careful forever destroy writing numbers highest disable section utility create called saving backup offset 0xaa55 before should ending double unused loaded record update reinit entire layout setpid master simple select device virtio wiping lowest notice choose single fdisk 66836 usage 66837 above newfs looks using write https enter block print dmesg space given check abort blank range entry stats first title there disks files guide whole after could cause aside typos setup faq14 vmctl these done edit when also type this size make sd0b mode quit wish last want your dump note loss html swap sure easy find targ data will grep good 512g sd0a from that safe root bios help exit need show head page list doas flag have made then full view like code case sd1 255 254 may org can now chs lba www see 0x0 mbr two usb way get has lun wd a6 01 0g iy 64
+Openbsd.Disklabel:1712792592:  : disklabel redirect openbsd usage
+Disklabel.Partitioning:1712791333: Openbsd.Disklabel Openbsd.Hier Swap.Partition Openbsd.Pkg Newfs.Usage : automatically partitioning respectively accordingly adjustments description comfortable partitions indicating filesystem convention boundaries represents installer allocated hierarchy otherwise presented different construct gigabytes disklabel selecting available remaining cylinders terabytes megabytes kilobytes truncated 14270432 34010176 41943040 22746368 17110752 33983648 enlarged 11263808 41942976 manually packages 22127904 suggests indicate 19285344 suffixes sensible followed 23497888 commands boundary 12900448 webpages software 24756192 2109020 openbsd 7883296 1279776 instead changes 1279840 3388864 1801888 3461024 1369984 nearest recover 5190752 deleted 5017152 sectors 5014912 written unsaved display prompts default 7932864 2692544 usually blindly benefit compact provide typical hosting however message started notice offset layout unused sample source server modify listed values actual header fstype entire letter resize decide editor typing likely column create should local print sizes 16384 https mount reset space fsize point x11r6 bsize using first again still email usage newfs write since build about these users units total enter there title 20480 sense needs paste works shows makes cases names ustom guide disks after often 2bsd lose copy will read home free exit want this area swap time take from left most code that than with your have them 2448 find 1690 1029 plan 2449 1314 note 5499 were 3873 help quit each very path sure undo last usr sd0 now 624 obj src can any var pkg cpg don 5gb but 879 tmp was 668 two non org add 7gb 7m 0g 6g 4g 8m 9m 9g 8g 0m 3g 5m
+Newfs.RecentChanges:1712791192:  : recentchanges newfs usage 10t23 2024 jrmu 05z 04 18 by
+Disklabel.RecentChanges:1712712104:  : recentchanges partitioning disklabel 10t00 2024 jrmu 52z 04 13 by
+Softraid.Install:1712705449: Fdisk.Usage Dd.Usage Openbsd.Install : installation transferred 21474533376 performance 42949017600 disciplines disklabels utoinstall encryption efficiency partitions initialize installing afterwards regardless directory softraid0 different recommend installer available replicate currently operating according instructs represent identical megabyte possible properly mirrored scsibus4 clearing scsibus3 41942448 requires 83884800 0xaa40e8 attached 41942976 mistakes 37044791 openbsd program created 4076463 20479mb sectors welcome command booting confirm replace 3891240 example 1688576 warning 1048576 40959mb changes records makedev another include writing loading minimum devices optimal because limited support probing bioctl layout prompt editor arrays offset volume always actual second system verify online status noencl notice master double ensure entire return follow normal making crypto raid1c cannot during forget cdboot pgrade models random 317541 708608 464016 disks count fdisk usage rsd2c names third sizes enter amd64 bytes 2046m raid5 https first these below title guide clean check drive based shell faq14 right rsd4c sd1a also have wipe type cd0a exit that page sd0a seed such file zero with need sd2a sd3a targ note html secs this will same 638k com0 from used 2bsd here then help your full case many what drop copy plus next new don usb but two lun 006 mem are pc0 512 mbr 028 may too how 109 now www hd1 hd0 a20 etc run 1m iy dd sr 65
+Softraid.Rebuild:1712699819: Openbsd.Backups : identically 21474533376 immediately partitions rebuilding attention softraid0 disklabel assuming degraded commands recreate replaced progress careful working backups openbsd rebuilt warning special offline started example happens bioctl volume delete status device online typing noencl before output should mirror layout double failed ifdisk could check raid1 names based https first wrong title avoid sized array shows disks data hard loss this sd1a with 20gb must risk time goes sd0a your when done once then very that want them now sd2 set can pay may org two any was to iy we rm
+Openbsd.Psybnc:1712690075:  : redirect install openbsd psybnc
+Openbsd.Snac:1712593846: Acme-client.Configure : 5f55afb155b9aee70cf335daa44b47f3 max_timeline_entries queue_retry_minutes timeline_purge_days short_description local_purge_days queue_retry_max abcdefg1234567 admin_account daemon_logger microblogging installation snac_openbsd dependencies minimalistic successfully admin_email certificate configuring daemon_args activitypub lightweight daemon_user installing repository completely connection javascript challenge configure interface 104857600 openhttpd lecturify rc_reload following multiuser required packages password instance creating yourname continue snacuser codeberg allowing examples location database obtained supports features optional dbglevel grunfink hostname network request fastcgi address replace cssurls basedir private backend written startup useradd pkg_add website cookies setting datadir editing finally adduser client listen rc_cmd domain server enable change prefix editor socket should create allows layout simple needed unveil static https close there doing snac2 denis false title rcctl yonle works clone setup known visit after chmod certs rc_bg strip lines acme path info this subr pexp root json init 8001 done with doas save true ctrl file then nano will make gzip copy curl once body well even only fedi such post 2020 that tls and var etc ssl 127 for 443 get 128 tcp rsa 120 key org jpg usr bin git yes ksh see crt 18 11 of go 22 by
+Openbsd.Install75:1712530416: Signify.Verify Openbsd.Buyvm Vmctl.Usage Openbsd.Bsdrd Vmm.Configure Dhclient.Configure IP.Myaddress Hostnameif.Static Dns.Overview Unbound.Configure Openbsd.Fdisk Openbsd.Disklabel Openbsd.Base : 1b7ff2bba74aebde congratulations configuration automatically architecture verification installation asynchronous registration independence successfully partitioning inconsistent specifically nameservers maintaining dynamically recommended information softraidfde configuring hostnameif prepending installing eventually networking utoinstall configured unverified administer interfaces cloudflare passphrase fontconfig encouraged substitute encryption maintained developers particular simplicity statically resolution management manipulate directory libraries available addresses subdomain myaddress described fragments disklabel install75 loginname qualified carefully timezones sometimes allocates megabytes completed invisible including allocated disabling important relinking selecting fw_update packages download properly cylinder password location provides programs pathname internet software accident disabled autoconf security downtime included provider dhclient freetype possible selected pressing overview entering terminal labelled xshare75 continue graphics remotely 0xaa40e8 username 12900448 contains 22746368 settings physical 19285344 prohibit 34010176 guessing 14270432 targeted openbsd enlarge minimal present release hundred invalid records require causing booting connect improve 5190752 consult replace 3388864 logging 1279840 signify virtual machine restart upgrade without central default relying gateway xbase75 outside unbound chooses against xfont75 usually hosting simpler because decided netmask details command pubkeys routers correct realize audited forever reading warning example control 4076463 1688576 pattern sectors 7932864 3891240 probing mistake attacks already mounted options process prompts caching closest seconds console answers 7883296 instead welcome 1279776 reduced account loading printed xserv75 special groups blocks screen offers faster should nosuid number layout assign length prefix rather change inodes follow cancel offset before verify please game75 finish fstype comp75 unused sha256 subnet create double either unless speeds unlike 115200 ircnow accept google during reboot common system unable return unique bypass normal saving needed status kernel werase cdboot except escape virtio likely guides typing mirror device 464016 708608 bootup random 317541 making cannot simply single really where avoid proxy safer shell 16384 abort leave state flash quad9 bsdrd would amd64 usage buyvm allow shown vmctl drive files local bring reset check twice newfs other needs 25844 79984 media disks which ustom 19200 38400 57600 setup 79352 nodev x11r6 rsd0k 19840 2046m lower there trick below rsd0a vt220 image https about often fdisk later whole chose fixed 20480 users fresh wrong short fonts quick faq14 ports panel email after vlan0 begin might title intel fsize first bsize notes man75 match 2bsd done home 4575 swap this 1314 3873 skip 1029 2449 none your 1690 have data 2448 sets once 5499 when exit been such must then long risk only esc7 list will 8080 that from most sake them html root team faq4 sd0i ipv4 98mb 9919 each sd0e last left mind does text ipv6 sshd than uses 2001 dhcp echo com0 vio0 make sure wish case 9600 638k intr rd0b dump same ctrl both kill wait cd0a rd0a seed back what help abcd want iso its any em0 org may url dns tgz yes nfs has 255 but db8 vmm run few web www foo usr src var 668 hd0 100 obj pc0 mem a20 tmp mbr gpt 879 624 alt vps cpg etc sd1 mnt 109 9mb 162 154 5mb 512 e0 kb 03 65 81 rw 0m 7m
+Dmesg.RecentChanges:1712456882:  : recentchanges dmesg usage 06t20 2024 jrmu 54z 04 15 by
+Softraid.RecentChanges:1712456882:  : recentchanges softraid install 07t00 2024 jrmu 51z 04 by
+Vmctl.Disk:1712444895: Openbsd.Newdisk : fd7ecb3de7e46e12 configuration hypervisor identified convention correctly interface scsibus2 actively detected username shutdown 41943040 scsibus1 creating openbsd compare console machine virtual 20480mb newdisk replace logging sectors switch0 running command example memory virtio lladdr locked device format create nosuid inside reload should ensure verify either vmctl power dmesg admin needs qcow2 login guest block title nodev local first mount being which disks bytes cdrom 2048m owner https sd0b sd0a grep doas file used targ home type sd0k next then back dump that your make root size been have swap also show stop same will with host into sd1 now old ffs vmm can ssh 20g see etc has off lun 512 org bb cc aa
+Openbsd.Outofmemory:1712437419: Swapctl.Usage Swap.Partition Shell.Limits Openbsd.Loginconf : insufficient outofmemory increasing scsi_xfer loginconf partition exhausted increase suddenly upgrade swapctl symptom options openbsd freezes message perhaps limits occurs filled attach server shell above error space usage three title user with more your pool disk been this have when size the see may png has vps and if
+Dmesg.Usage:1712434554:  : redirect openbsd dmesg usage
+Openbsd.Dmesg:1712434522:  : 49906188288 peripherals information 51486306304 supermicro megatrends bootblocks processors acpitimer0 0xfee00000 sometimes substates 524288000 acpimadt0 messages meltdown md_clear american although scsibus0 provides scsibus1 mainbus0 deadline xsaveopt 41943040 256000mb scsibus2 hardware 0000071a deraadt generic targets entries page1gb devices current sectors openbsd running updates storage 47594mb example 20480mb version 0xec830 3579545 compile support package pentium 49101mb kernel popcnt compat wakeup 100mhz ranges x2apic cflush tables sensor rdtscp pclmul dtes64 vendor mpath0 virtio amount occurs buffer status random system smbios memory number ssse3 mwait dmesg bytes pse36 patch acpi0 00ghz intel fixed about shown above clock disks cache 256kb https stibp saved title avail bios0 amd64 x9dri x9dr3 quick sleep 32kb cpu0 ssbd arat dsdt 15mb itsc l1df prad ssdt cx16 xtpr pdcm pcid sse4 spmi hpet facp slit srat fpdt long lahf perf ibrs ibpb copy real when that view arch good 2023 grep 1397 fill seed npe4 2018 mtrr erst from with type root here also einj core hest usbe dmar p0p9 2000 npe2 npe3 npe7 npe9 npea xeon addr npe1 mcfg pwve pex0 cmov bert npe8 npe5 eusb npe6 2620 sse2 bits fxsr apid ln4 min not max the rev inc ibe 156 you org lun man 512 sd1 way sd0 tue oct mdt usr var src may 64b aes avx nxe smt msr vme pae mca pge sep cx8 mce mmx tm2 cpl vmx smx pbe dca fpu s4 s5 of wd 09 37 l2 l3 05 as 2d
+Vps.Users-Draft:1712430363:  : monitoring innovative computing robotics embedded dealing startup center attach energy height tools users smart https title draft width logo 50px with vps and smt www our png 10
+Profiles.Yiming:1712379568:  : structure education timezone profiles getting problem english beijing summary student pardon please school yiming https china from good have high who not and utc any my if 8
+Resolv.RecentChanges:1712205525:  : recentchanges resolv 03t20 conf 2024 jrmu 08z 04 09 by
+Dd.RecentChanges:1712205525:  : recentchanges 03t20 2024 jrmu iso 21z dd 04 30 by
+Hostname.RecentChanges:1712205525:  : recentchanges hostname usage 03t23 2024 jrmu 15z 04 38 by
+Openbsd.Fstab-Draft:1712188907:  : fd7ecb3de7e46e12 partitions wxallowed openbsd nosuid nodev fstab x11r6 mount local title draft none home swap ffs usr etc var obj src cat tmp in rw to g k
+Openbsd.Singleuser:1712188280: Openbsd.Fstab : 6dd62d70bdd3bab6 immediately singleuser networking partitions necessary requested operating softraid0 automatic switching performed utilities described connected username shutdown stopping scsibus3 terminal scsibus4 pathname provides netstart example replace openbsd restart virtual machine repairs finally targets loading probing console quickly booting missing running damaged vscsi0 lostpw 115200 before begins export system return either inside logged faq10 drive shell mount first enter after login basic amd64 vt220 fstab files using https speed usual ttypa vmctl press write edit some only root type host such com0 want this mode sd0b dump have swap read sd0a with into need been disk text 638k html your exit here from 510m baud must once and vmm can set usr etc has any may hd0 pc0 256 mem a20 dev org www ssh how if we rw
+Hostname.Usage:1712187495:  : immediately hostname changes setting persist example replace server myname reboot actual again until title usage only next make this with echo the com etc but of to
+Openbsd.Hier:1712186593:  : multiprocessor installation applications fundamental filesystems executables simpletable maintenance utilities temporary libraries essential directory including alternate hierarchy superuser sortable programs explains overview software altroot openbsd scripts deleted cronjob devices useful window kernel backup single border layout reboot source folder https mount point class title built width x11r6 local spool brief third party sbin upon from mail home also here conf usr src and 100 log obj var the web org man for new mnt tmp etc is 7
+Openbsd.Hier-Draft:1712186211:  : multiprocessor applications installation executables fundamental simpletable filesystems maintenance libraries alternate directory utilities essential temporary including hierarchy superuser software sortable programs explains overview openbsd devices deleted cronjob altroot scripts useful kernel single reboot window backup border source layout folder point title x11r6 local third party built spool mount draft https brief width class also mail from here upon conf home sbin tmp the and obj log var new web for org man src usr etc mnt 100 is 7
+Nastycode.RecentChanges:1711971135:  : recentchanges nastycode hardware 31t21 2024 jrmu 23z 03 42 by
+Sysop.RecentChanges:1711971135:  : recentchanges hardware sysop 31t22 2024 jrmu 27z 03 05 by
+Router.RecentChanges:1711971135:  : recentchanges hardware router 31t23 2024 jrmu 50z 03 16 by
+Chess.Chess-Draft:1711935615: Xboard.Connect Eboard.Connect : simpletable associated interfaces registered connecting originally preferred important graphical modernize microsoft downloads computing freechess developed currently emulation variants codebase sortable internet security features winboard everyone terminal software provides possible username actively install suggest windows address running improve account openbsd because details example icshost license android richard created network server client telnet cygwin become eboard xboard player ircnow please mailto easier public border nubati bridge world https rpblc valid width login class linux using while title email stage later added other maxxe being draft main 5000 nash with html that goal like fork will your want bugs sent fics join wine www org mac ios 100 web try mid hgm fix can lot via gui man new by if 90
+Router.Hardware:1711927010:  : mknssdsr250gb 4093849600 megatrends 4242145280 configured 488397168 hardware mainbus0 american 00000a07 function syspatch 238475mb pciide1 pentium entries sectors channel version address 82801gb 0xfb4f0 openbsd generic compile 82583v 4045mb 080015 native vendor 3904mb router smbios bios0 intel 60ghz using e5300 amd64 drive lba48 avail ultra pcie ppb1 pci2 apic 0x01 0x00 sata 2023 pci0 ppb2 pci3 root arch mode date 2012 cpu0 real dual core pci1 2593 mem dev dec dma pio usr wd0 inc org rev em2 src mst em1 fri mhz em0 18 7f a3 6c 74 31 06 17 11 44
+Sysop.Hardware:1711922727:  : sysop_nitestorm approximately powersupply recommended controlled docdisplay negotiable essentials controller processors university installed enclosure accessory populated shipments doclocale c00812857 estimated wisconsin purchased physical licensed proliant hardware shipping moisture handling location helpdesk 2000usd freight appears another threads support several windows 1x146gb include modules present center bl460c drives public cables retail around switch arrays server blades stored seller ircnow 350lbs weight fiber cores price panel 128gb strip c7000 extra disks 160gb units afnet hpesc https intel docid en_us value 2x146 24gb data 240v bays only xeon type area will with hdds plus 2019 6697 gen8 2021 more from 1000 cost 16gb fan rpm 10k can two org 17k 12k for one 250 usa 6ft sas ram 15k may of 72
+Openbsd.Akkoma:1711341077:  : authorized_ssh_clients generated_config connectionerror troubleshooting administrative akkoma_server configuration installations emailaddress dbconnection httpd_server certificates dependencies distribution compilation _postgresql imagemagick configuring succesfully recommended environment permanently information request_uri remote_addr server_addr server_port additional akkomagang repository configured functional sufficient everything installing terminated repeatedly websockets initialize following ext_inet6 ajacoutot listening directory executing retrieved challenge openfiles temporary replacing forwarded interface uncomment paramprob installed http_host depending stacksize dedicated corrupted frontends describes database upstream protocol infinity required attempts setup_db properly enabling software possibly mix_prod severity username creating probably variable instance strictly starting exiftool finished features location internal loopback increase datasize behavior security 50331648 redirect consider disallow cap_mkdb fuctions multiple requests libmagic ifconfig default shminfo contrib example pkg_add message traffic getting seminfo version because timeout command options specify network disable sitting reverse reindex content encrypt project claudio pleroma openbsd started headers follows datadir respond keypair backlog nodelay echoreq running unreach session working _akkoma bundled suffice another mix_env maxproc useradd current migrate backend profile replace crontab editing creates setting relayd insert reboot vacuum ircnow export htdocs robots return domain forget change double lc_all output should enable window safely syslog family needed closed plerup during folder longer stable failed random policy toobig icmpv6 macros rights highly secret adjust buffer append values reason adding likely rebar3 before starts elixir higher single trying bottom having semmns shmmax initdb pgdata sysctl erlang latest daemon update kernel ffmpeg script reload assign enter local paths check login avoid cmake pfctl might limit quick which bunch state match class strip mkdir first order added rcctl shell gmake guide 65536 https block these apply scrub asked again extra rules after using timex could icmp6 trace crash agent press en_us clone three title under known seems while write lines proxy doing there exit this pass 8182 urpf from than your root home that tmux type also want deps psql then into most 4000 will with drop skip 2048 json when save once sets done ipv4 512m copy true some ipv6 didn hurt acme sack grep used pick flag have www6 well them recv pool help wiki next only over fedi 2017 fork 2018 take stop been git utf fix tmp txt hex via dev aux etc can phx php 127 its let 302 ftp api mvo exs bin ksh url gcc got tls ref new tcp won any due has fit 128 was gnu by p5 cd 15 wx v1 df ok 80 08 49 06 09 23 ln
+Relayd.Wss:1710972788: Relayd.Acceleration : instructions acceleration server_port server_addr remote_addr multiplayer connection websockets subdomain forwarded service2 protocol connects service1 software seperate request support keypair upgrade backlog running example should relayd header result before append config reload things assume cannot mostly match ports value would lines these order first close still doesn allow https since polls using rcctl games looks into this just they then like sack good apps some host your need from with time doas want set tls wss and com now but tcp put 128 why by
+Relayd.Wss-Draft:1710963755: Relayd.Acceleration : instructions acceleration remote_addr server_addr server_port multiplayer websockets connection subdomain forwarded service1 software service2 seperate connects protocol request backlog upgrade example running keypair support append config header relayd before reload cannot should things result mostly assume using value match rcctl close order https lines would these draft allow still ports first since polls games looks doesn this just your then host need some apps good like doas time want sack they into from with tls com put 128 but now and wss tcp why set by
+Ngircd.Link:1710408310: Ngircd.Install Ngircd.Ssl Dns.Overview Ddos.Intro Password.Management Hopm.Install : ircexamplecompassword ircnetworkorgpassword configuration automatically peerpassword service_name service_user unexpectedly recommended information servicemask service_pid mypassword sslconnect management terminated convention connection configured autostart addresses commented hostnames plaintext sensitive passwords installed cleartext overview normally together reliable filtered generate updating solution symbolic possible support libexec replace passive prevent project another restart changes control updated servers because cronjob crontab traffic pidfile suppose _ngircd secure hashed should stored groups allows direct useful formed strong having future public global rather enable inside values assume before script create notice title pgrep using intro these guide avoid rcctl local match admin files users block which 16697 chmod touch begin being model spoke nodes make sure hopm link ddos keep bind next with used doas leaf edit have hubs this will same null then need sent only real must your ipv4 ipv6 note less does that than like been want was and usr 198 way 100 123 yes dns own etc 192 dev var run one can set new are if we of 51 by
+Opensmtpd.RecentChanges:1710311985:  : recentchanges troubleshoot opensmtpd openrelay nastycode configure november resolved errors added 14t01 first notes about yonle 21t16 test 2021 jrmu 2023 2022 july 2024 two the 17z mkf jlj 58z how 10 by at 37 am 11 12 03 pm
+Pf.Bittorrent:1710299873:  : bittorrent torrents address defined block quick proto macro 6969 drop with 6881 7000 from port tcp udp ip pf an on
+Openbsd.Rcctl:1710008163:  : pflogd_timeout configurations pflogd_rtable functionality pflogd_logger pflogd_class sndiod_flags pflogd_flags disconnected information performance pflogd_user thankfully restarting following rebooting otherwise enabling services disables commands anything examples managing disabled executed support updated running stopped however getting without enables openbsd killing utility allowed daemons nothing install xenodom maximum enabled instead unless happen xenodm always reload useful starts change called failed matter action needed system manage signal custom making server places rcctl using which smtpd since force local doesn cases users shows thats again order files first their cause stops these might after check still kinds http apmd used doas mode most have when they this base part them next list ship will send such some tell from then page well both also root want org are set nsd you etc try can see two don let vmd why say won irc of 30 ok if be 8
+Atheme.RecentChanges:1708762631:  : recentchanges install written atheme 01t15 2024 rahl 17z by is
+Lemon.RecentChanges:1708749700:  : recentchanges november packages lemon july 2022 2021 todo mkf 10 by pm 06 at 52 30 01 48 07
+Anope.RecentChanges:1708749700:  : recentchanges february install anope 2023 mkf 06 at 09 46 am by
+PmWiki.FilePermissions:1708516647: PmWiki.PathVariables Cookbook.MimeTeX Cookbook.DirectoryAndFilePermissions : directoryandfilepermissions subdirectories pathvariables installations configuration administrator instructions public_html temporarily environment appropriate encountered superusers webservers capability ownerships distribute manipulate everything drwxrwxrwx drwxrwsrwx definitive configured referenced prompting therefore describes something eliminate different available alternate questions generally somewhere situation typically practical depending pubdirurl following according hierarchy pmichaud absolute cookbook anything manually writable identity creating function standard creation browsers avoiding normally readable whatever settings specific detailed scripts uploads account mimetex running however created already letting calling without execute summary briefly creates results usually example groupid depends applies ensures inherit instead correct people pmwiki holder parent having within change virtue belong nobody setgid needed suexec called remove recipe frobot modify should answer userid apache mkdirp simple action loaded cached solves manner matter images markup placed files wants world owned write means cause which newly those since below doesn still chmod needs issue first based 54272 match chown above pages again rules allow exact apply suphp exist about grant doing order often works httpd case just even 4096 then this same also okay upon that make used runs have disk when each like will them take uses thus care math look such from 2777 unix host 1024 only into save owns home else they lots sets don way not non box get can now hlt css its www feb why has isn jan cmd via two pwd may you see 755 bit who was by go 95 51 28 58 11 23 12 15 29
+Bouncer.Erc:1708370728:  : instructions my_password my_bouncer parameters connection irc_server extensible customize variables configure different depending software hostname preceded username keyboard writting powerful replace my_nick scratch control command process utility address modular prompts ircnow manual buffer client stands cursor return simple option emacs which point above notes 31337 below title press those https write port 6697 will just with your type line then html chat save also file edit same lisp copy this into meta erc for tls can run www gnu alt org znc ask all do by ip
+Cwm.Configure:1707597296:  : pointer_button2 pointer_button3 pointer_button1 programmable keybindings breadofgod convenient successful configure mousekeys terminals movements entirely xsession powerful familiar emulates keyboard strength control openbsd default pkg_add enables xmodmap ability keycode manager window opened follow xenodm system inside xkbset intend 54321 right first shift press might place codes x11r6 xterm start event sleep login https cwmrc these this file part make lots will spam down upon tmux base that need then left like doas meta with very for org are ssh usr you one xev new its and f10 big cms alt any f11 may now my 76 95 f9 75 be by cs vi j
+9.Drawterm:1707585350:  : pointer_button3 pointer_button2 pointer_button1 installation yourpassword impossible plan9front bsdforall mousekeys compiling username drawterm keyboard disables terminal recently buttons restart instead warning replace cloud9p package enables without xmodmap openbsd keycode compile however pkg_add debian xkbset actual server numpad libx11 added makes above which using usage first aware libxt clone codes linux event https might other press doas that this spam lots like have note used want sudo conf unix will also oses org mkf see and xev git dev apt can old of 68 69 f1 f2 67 f3 be if my cd
+Wsconsctl.Usage:1707547802:  : brightness wsconsctl display usage doas set the to 30
+Cwm.Configure-Draft:1707467955:  : programmable keybindings configure movements familiar entirely powerful strength emulates ability pointer openbsd control manager system window follow https right cwmrc shift mouse these draft with very that this meta part base down left cms org are and alt its big for one vi to up of j
+Cwm.RecentChanges:1707467747:  : recentchanges configure 09t08 2024 jrmu cwm 21z 34 by
+Irc.Easy:1707072729:  : representations administrative responsibility investigating disconnecting automatically individualize communication collaborative documentation entertainment troublemakers miscellaneous securefounder quintuplicate indefinitely organization restrictions applications occasionally registration introduction conversation unregistered unaffiliated accidentally disconnected conventional manipulating suggestions improvement expressions consequence disconnects description centralized proprietary interpreted alternative information conjunction recommended endorsement appropriate coterminous abbreviated communicate registering convenience corrections accountname experience triggering parameters sequential deliberate management tabulation accesstype washington themselves attributes legitimate everywhere advantages encouraged unrealircd connection comparison understood privileges characters altogether constantly completely personally considered privileged atmosphere exhaustive throughout requesting absolutely discretion simplicity consisting revisions mandatory chatzilla following discussed necessary versatile destroyed wondering including functions cultivate sensitive nicknames operators beginning incentive malicious requested identical unrelated existence reference inference different continues autovoice something numerical sometimes protocols addresses therefore autojoins main_page corrected divisions shareware important oikarinen resembles extremely anopewiki positions attention contained revealing hostserv identify commands password channels features memoserv remember provides nickserv assigned defenses followed measures purposes messages ordinary networks intended annoying contains spammers separate possible unvoiced chanserv freenode requires yourself excepted exempted security slightly trillian optional unawares manually included approval managing services supports approved rejected multiple removing software everyone checking duration whenever maximize anywhere actually helpserv original cloaking normally european operserv projects defaults strictly governed querying undernet regulars enquirer internet literary hexagram starting disclaim contents provided feedback anything creation includes assorted printing inventor accepted transmit looking helpful rfc2811 because private shorten country reading another leading posting divided grouped clients eagerly servers already usually enforce someone hexchat rfc2812 confirm pretend banning seventh symbols numbers receive choices shouldn between classes keeping prevent benefit various sources notices legwork sending therein offline further devoice summary execute obscure explain whether friends storage abusing biggest removed certain initial systems indices general greatly enhance focuses expires concise virtual kickban granted exactly attempt botserv rfc1459 believe bibanon serious funserv allowed license current changed payment against version windows instead chances visible chinese details process variety finding reasons brevity protect viewing joining seconds without mention invited android resolve opening talking kiwiirc devices foreign letting divulge quassel weechat covered offered mistype discord chanops clarity created firefox leaving anybody masked levels matter rights within target needed errors around policy jarkko common cloaks better author giving cannot nature people obtain stores whowas beauty pidgin punish mostly fourth single adding before powers unless ignore vhosts rejoin double expert appear prefix direct intent forget happen github typing doable atheme beyond domain trolls unlike effort kicked allows getkey always orange latter supply simply usable become sought letter having grades shared ground online highly mibbit repeat adiirc enable others public leaves adjust banned useful irc2go yellow silver ircnet troll1 enough troll2 troll3 troll4 liable anyone active begins either exists trivia basics action which still place flags would ghost third known first their super chops whose owner below while takes added dehop means prior based three timed games unban whois opped 10000 parts these users roles might scope rizon hands email hence after given trust fifth state topic types sixth forms hours modes wider chats block doesn carry sound haven linux irssi masks codes rules whole lists point 4chan 8chan above strip small color close clear efnet house split tools https pming order legal index alone those thank title goals being relay drawn death much more want will paid note text from they foss easy been also copy that days this pars used only each then many none what done 2021 half both well 2019 2020 docs tune past made mirc fine such gaps thus ietf last html blue life gold into wish fall hide must item good idea down ones head idle same mine case upon usps fail bans quit soon play deop were away meet else save joke tell kind tips bbbb step aims once www see may php vpn xop set its dot new msg log has few gui ads web etc say pms put iii box lot ios vop aop sop 83 74 29 18 my by 27 73 22 26 25 24 23 13 30 75 85 72 86 17 16 15 84 76 77 78 79 80 82 88 87 44 36 38 39 40 60 41 35 58 37 31 64 32 63 65 68 33 hs 67 34 66 61 62 53 43 42 54 51 48 49 50 46 47 52 57 55 56 70 69 71
+Hostnameif.Static-Draft:1707016641: Vmctl.Usage Openbsd.Ping Openbsd.Netcat Openbsd.Traceroute : configuration unpredictable abbreviation disconnected abbreviated immediately configuring connections networking attempting traceroute production hostnameif unfiltered addresses interface rebooting following something configure netstart ifconfig practice prepared commonly requires replaced provided properly followed mistakes services assigned specific example account aliased another creates warning bouncer similar default openbsd gateway forward packets specify restart letters problem serious servers without console running device static subnet should second adding unique rather netcat manner dozens change prefix access actual before virtio serial number inside length mygate delete router exact allow sense makes first share title lines usage vmctl ping6 using after masks inet6 added flush reset doesn where given match above shell draft cause which users stops https your that need 0db8 sets case 2001 387e ipv6 sure note file doas 143a 3511 0000 have will 9b1d ipv4 down this from must each test just vio0 time look real same 200e best than 400a f8b0 were 2607 dhcp when want more ddos org its 168 isp 192 255 can 80a if0 ssh any may one get fly and new but put 48 by of
+Almanack.TheloungeWebircClient:1706794752:  : theloungewebircclient prefetchmaxsearchsize waterboygospellyrics prefetchmaximagesize disablemediapreview rejectunauthorized prefetchstorage messagestorage webirc_access reverseproxy node_modules leavemessage webirc_error locknetwork letsencrypt certificate loadbalance alternative maxfilesize request_uri maxhistory connection transports fileupload installing subdomain localhost following 104857600 challenge nastycode http_host websocket solarized yourhost usehexip defaults packages location almanack splinter username protocol hostname password realname example forward www6tls private restart resolve polling baseurl support forever dhparam keypair openbsd getting useradd program pkg_add relayd sqlite switch change header return listen create manage ircnow server python nodejs wwwtls please public config enable theme https guest certs false 10000 setup going email httpd 10240 guide rcctl block names check chain table lines value match strip known make help acme keys this doas with sure 2048 that full will mpre info sign true 6697 then nick home join team need null text gets hope mode icmp 1338 9001 from edit well root woth yarn used have body run vps 127 com znc and 443 its crt pem gcc bin 302 but npm pnc nsd dns ssl log ip4 ip6 80 be by fv of 50
+Bouncer.Erc-Draft:1706600697:  : description bouncer eneral connec draft ways erc of to
+Openbsd.Panic:1705789088:  : automatically debugger dropping openbsd instead kernel reboot sysctl title panic after into echo conf ddb etc of 0
+Openssh.RecentChanges:1705389654:  : recentchanges openssh 16t07 totp 2024 jrmu 39z 01 17 by
+Unix101.Unix101:1704993738: PuTTY.Connect ConnectBot.Connect MacTerminal.Connect OpenSSH.Connect : experienced interactive macterminal interested connectbot sysadmins username designed offering password commands tutorial openssh contact unix105 already freeirc methods windows android unix101 virtual through private course server finish useful should ircnow putty these tools users basic teach shell apply linux check staff think after email line even with port they need know help team org for you can ask via who all one are out but if 22 we
+Atheme.Install:1704122657: Ngircd.Install : internationalization ngircdpeerpassword receive_password ngircdmypassword troubleshooting hidehostsuffix misconfigured configuration registeremail automatically theirpassword send_password installation reproducible configuring servicemask exec_prefix casemapping unnecessary adminemail loadmodule yourserver emaillimit serverinfo installing sslconnect proceeding automation restarting connection thoroughly localhost charybdis maxlogins emailtime directory uncomment otherwise commented libmowgli nicknames adminname recontime compiling loglevel services pbkdf2v2 networks sendmail releases download building internal maxusers settings protocol hostname normally platform chanserv channels nickserv initiate provides changing compiler downtime remember machines modules editing matches example running logfile instead support passive contrib finally results changes already openssl servers because wallops linking mdlimit rfc1459 replace address netname noreply argon2d numeric version default gettext pkg_add useradd variety atheme should latest github ircnow uplink create readme errors hidden please likely before crypto adding allows expect actual global libidn builds double issues update folder belong reload cflags tools block looks https heres using vhost leave cases cmake newer there first ahead title check gmake rcctl 16667 cross avoid group linux false ircds fails files posix large again touch below might only this some need with turn well same home into doas fine from lets real note runs that know most will more bind line each much such they wish does sure what once have done then root sbin unxz desc next else auth none data perl move code pcre and 192 127 168 yes gnu see 123 pid etc any org doc bsd are off src ksh usr 300 tld out mta ftp can may 00a gcc uid ip if o2 v7 qr db by xf 10 cp
+Rio.Customize:1703972002:  : plan9_fonts typeunicode lucidasans customize excellent riostart download kurinto iosevka profile replace glenda https check large size ftrv knxt mono text have also hget nice with some lib bit see usr for the out 20 24 32 cd 18 xz gz 2x 16 40
+Openbsd.Upgrade74:1703797535: Openbsd.Bsdrd Openbsd.Sysupgrade74 Openbsd.Dump Openbsd.Restore Vmctl.Usage Openbsd.Cu Openbsd.Buyvm Openbsd.Pkgadd OpenSSH.Connect Openbsd.Top Openbsd.Syspatch Openbsd.Fwupdate : 0xffffffff81001000 congratulations automatically configuration installation sysupgrade74 inconsistent successfully filesystems proprietary 001_xserver maintaining recommended immediately downloading particular bootloader utoinstall installing substitute ssh_config changelist ramdisk_cd 002_msplit developers simplicity university manipulate fontconfig thereafter unattended california optionally prepending networking everything _shutdown partition correctly firsttime fw_update installed upgrading copyright succeeded processes processor available operating interrupt directory installer switching signature libraries something megabytes reinstall completed 0x1956710 following lightblue lightgrey beginning lightpink overflow downtime programs graphics packages security updating disabled verified firmware location freetype external sysmerge 17159500 fwupdate reserved possible skipping mounting 0xa76798 syspatch existing password continue selected pressing terminal checking required starting tutorial xshare74 labelled entering hostname probably messages versions upgrades averages xfont74 generic missing pattern daemons pkg_add openbsd restore example xbase74 xserv74 replace closest servers signify hundred console minimal against decided bgcolor patches openssh usually outside connect padding prompts welcome answers regents assumes 3886664 1655808 3969732 booting warning default changed present arrived written probing seconds control timeout details careful updated running advised 1011174 3667728 1317840 1337557 1236992 4137992 because advance however reading except 444888 needed typing serial rights reboot proper 360384 define either 708608 ircnow repair during verify sha256 amount escape symbol before margin mostly easier return bootup memory pkgadd number happen sndiod 297417 115200 yellow normal notify should screen status werase booted issues mirror comp74 game74 binary choose https cache group allow amd64 2288m reset shell 1204m cores intel guide shown proxy leave flash using drive other later boots ports login point would bsdrd often local fonts 11008 14951 error users buyvm state clean force entry which table disks vt220 uname abort man74 order tty00 vmctl usage smtpd title going above black block alert 2046m final jrmu2 steps doas sets done dump sure make your 666m nice spin intr idle must real also 756m this 387m swap back been exit will from such note hd0a 1336 that have 1995 2023 none 8080 same like them info html faq4 idea view 1993 used with 1986 1989 sake 1991 even text cpu0 2144 cpu1 only 1982 then risk long days says sshd else left does find rd0b want kill root cert rd0a sd0a just fsck com0 hard 638k 1322 keep cron baud org and www can sat vmm did see etc nov may iso but tgz any mdt has get oct cd0 nfs way ssl few tue 128 fix alt cst pem elf pc0 a20 mnt 1em url pub ftp cdn usb 5em top 109 vnc new was tot act 94 18 0k 30 ok fp 07 kb
+Email.Lists:1703621761:  : advertising minutemin subscribe codeforce questions training projects bootcamp listname mailing library example ircnow borrow offers called coding books email title lists plan work sign send jobs from the org and to up 9
+Xboard.RecentChanges:1703552764:  : recentchanges connect xboard 26t01 2023 jrmu 55z 12 05 by
+Xboard.Connect:1703552755:  : connect icshost xboard rpblc net
+I2Pd.Install:1703052049:  : communications participants introduction https_proxy configured http_proxy installing purplei2p stacksize openfiles encrypted foxyproxy addresses localhost installed following depending listening operating invisible universal anonymous visiting infinity internet protocol packages releases android openbsd usermod maxproc website pkg_add firefox network browser suggest system github reveal daemon prints launch export start rcctl using which error _i2pd addon users sites login class title layer their guide other have over your 8182 with then 4444 like tell 512m from doas need will this case real many for how nix now too tag cur etc via can org are may app if 0
+9C.Exits:1702912237:  : afterwards understand elsewhere following terminate consider variable function followed process include example 1284312 1277638 running classic program another suppose objtype learned result return exited status binary random number getenv rather hello exits which world write print first going would arch case void main such char what plan does read echo than libc last unix name that out use how you see aka can has are try nil pid our let to of fn ve is by so 9c if
+Openbsd.Bitlbee:1702894017: Openbsd.Znc Relayd.Acceleration : how_to_connect_to_the_bitlbee_server_with_ssl allowaccountadd daemoninterface configuration matrix_no_e2e installation acceleration operpassword inacessiable accelerator cypherpunks myusername encryption developers installing mypassword disconnect daemonport rocketchat forkdaemon convenient undermined available localhost libpurple supported protocols generally messaging plaintext following connected intercept sometimes nickserv telegram register instance settings directly identify mentions optional compiled accounts mastodon machines hostname provided checkout packages packaged moreover security messages sysadmin my_buddy perfered multiple chatting checking 11234567 supports replace keypair namtsui anoncvs openbsd discord example pkg_add command version working another bouncer changes because chating plugins depends default require stunnel instead matrix3 matrix2 forward usually already clients flavors variety written suggest however besides runmode gateway source adding jabber github create public record people itself cvsweb ircnow course relayd acting reason sm00th irctls listen enable unlike define before using which users named https after there gives first gmake above start clone rcctl ships later write since bound store makes helps panel types exist built might chats login title 2ftls casue often avoid slack false fails query known sense buggy your plan want wiki this 6667 what into them from most ones does note look such ipv4 doas need 6697 will core code also info page than they 8171 same used that have fact load edit root when only high then save join next json glib xmpp cpu can are org ask olm otr off msg try znc see 127 www jid net faq bin cgi 6p1 had let two via by cd 3f
+9.Authsrv:1702890704:  : authsrv 9
+Bouncer.Icechat:1702890586:  : bouncer icechat
+Tmux.RecentChanges:1702890494:  : recentchanges instructions wikigroup shortcuts pagelist changing related cleanup mistera initial config august hotkey share 29t21 links other izzyb tools 29t03 added tmux 2021 with from 2023 for mkf 15z and may 54z by am 05 16 27 pm 12 04 32 56
+Ircnow.SSHFingerprints:1702838876: Ssh.Fingerprints : b8eg6kph0enoa80gzrsywdpbfittqkcqpa5zllytnso suo14qmmadftez9dzgybhfrnyp9crees5mrvvr6e0t8 tfgntqeynkisu0cphmezrlbkyvuylnnf9quakpijrau racc0elsrvgziz6lpkssjm15wqe9cfxg4x5a3nauiw0 0nthlt6mphsrone5e3flpc11v7k8hmalltkbqvyqlmg teetiunbcvvvbjlkfnygbixhgeugde9j4g776npf4f4 qcvqbfidaonla4my8cuipyacb7uwltu3acii22uakra 2jjkseg5jkaajbpmtrmpof1ltrm4ve5ec7ylk9r2qqq uby6gdxg5v5ih4hmlbxphf2glud2x829mupvr0w0zz4 liewh1okkm1yw3g4r096dpizln8q7gaskg5iqpayhv0 tcfbfmpbmi1pcoxk6o804onoibp1ttyimkvlu8oczlo zuey2wh7ony4powkdjibyd7jskaty2speeonk8v9zbw ojyr1dxjsbbsnopbfgk4ij0blzh0uhvdfnq9gro7ove 7hoecsk19dhgwktajo4w6zq6sdexcafhphskkkl0thi otvy6dm7ulr5x9jzi40328wowpa3arplkxnt65ipy1y t9rlcgwshrysvo7aks3cgzqu0dxtkbp1syzl0lrn1jy aylqje6ha3nmgrintnjnxibzhgdsuz8e7vn0ldyruu jzx9b2se4ywg4ggz7ra3xxfjoktbbpupa42d5ujfe vgpgna4x0itdsjwpoaet3atmlok3p5wiuw2aren1 mz0kuriqsfwecnnmk0wme8nzqjbimslwjo4jmqol jlnemqiqozxcgdn3gdsfis4kdcvifamy8imyzjt e76wvwwiu04s1q1c4bmklmzoqxzgu9ocjipje4 qpsl7ssqvsoarxnngcy5q4sfggfnabynzxzxq6 xxbmizlxi8kzel2souqdituy7c7b4dnzgfgi fnu7cx1gxdjexnnasnr5qw6b3nkwtyrbti ctvil0e5ptzfepqpvdlhb2mwrdpd43u mmmmkyjstnpsagvrr4mjsmtryqtmka zkfhl6nsicctw3ialn0rizvhcqwgwz ekjnt1jv3j8mkvfmo0l74jpcszqbj uatquna8fodjrwtvmmxhzuzctfe24 razh8bpyvql51zcjfetdj8nzpjdq ltfywjtipwidt7rcyehdhoa27bbi wdlnjmegxyc48v17w2jwgsbe72n ohv2fwpi2slhmx7utwgztphvcm m6sd5iyyj5m1g7zdcfvhbrzceq cq3bwexnzb0jvp2d81ap5g6w4 p7xioqivc9yzcjjtbbxhv0jik lhgu5f5ricf0zkpxjfn0d35q j2oamwh2cijoytmzmm8lrzk8 josyydyqrdi73orklzzhsq4 1agi3m2ylukchgmq3smx8ro irk4xb2ifdh8ytyau7kzhe yvkispem7vkus5qfosqaeu eoijonzghehehebuz2rh5 pcrs5dyrlypqie2dr1ny gxouboedsfjsd2vppgkz 5c56w2nemoqpuo2ylpf dlivmtx59tkwk2vkrl vhhkuqlvglxmthejw4 zyfgglplswjxqrciro ouasfdx7zs1z0a3gf xsypllxosrbz5oud4 6yomu8o4sd6hinqeg ipou7txy1ze7nwi2 sshfingerprints xa3bli6dg8gfjc gfvleh6ia9vsm pyizqb1xcspzy vczu9pdkxcaui 1naq6awekowzy xjjoxm0l7rhsy qpefpn49x41lh rl2kxocobj66 uksrbun2pslg planetofnix iobrvzxz89e 6yrmnjlqzxx fffvfdrvzzg 3n5gv2a4k0w oddprotocol 64cvn0vglcd xdijhgra3n m4uuoqemlv breadofgod inspirenet brzkpyqmho npwmt4hzq1 nastycode shelltalk f0lvco0jw inu8cdezw bsdforall syoualj8 wyvsesor eigwxhwf tzx3l4wu v6gs4o9j ed25519 hx5f8yn hcm5ce1 qkxov5n servers freeirc warning connect cboskt4 sha256 gj6all ircnow rgqbvi before verify unique david ecdsa gcmhh rpblc a0lir title every wqriq match 1024 3072 eu1m host root evpp 2048 7cd3 iqwc p3sa user from here need md5 org rsa 7pr com 1jk not 2ac d1 68 b9 78 13 f6 d9 8d 05 c8 c2 33 b5 46 0f 45 a7 44 7f 92 a1 95 2e b6 61 6f 75 c6 94 90 39 86 2b d0 01 36 ba 37 3d 99 9a 98 54 84 7d 34 60 00 1e 83 50 63 18 fc 12 a6 db 53 6c 5b 26 06 52 67 4e 8a bd 70 57 c3 31 3e 93 97 87 9f 88 21 23 f7 69 58 4a 71 f3 85 08 1f 79 16 91 62 1b
+Vmm.Sysupgrade:1701529195: Openbsd.Sysupgrade : sysupgrade gracefully machines announce suddenly shutting downtime running virtual openbsd disable trying avoids follow rcctl guide title vpses while ahead users this then make sure team loss data next doas stop your vmd vmm are all due of if
+Profiles.Tcache:1701312075:  : administration communication effortlessly professional connectivity capabilities spearheading implementing experiences trailblazer insatiable inspirenet enthusiast landscapes passionate technology optimizing accessible commitment innovation constantly individual leadership challenges connected fostering testament curiosity solutions protocols versatile perpetual developer intricate embraces managing seasoned learning progress internet involves follower grounded evolving services multiple horizons pursuits provides profiles governor steering seamless creating defined network driving delight seeking shaping thrives assumes digital journey whether explore hosting systems student online server beyond future always tcache coding member ircnow stands novel realm world takes wears users force eager proud bring about ahead just with open they that role love ease xmpp avid this stay ever hats not but new him who by
+Hunchentoot.RecentChanges:1701104020:  : recentchanges hunchentoot posterdati install 24t19 2023 41z 11 50 by
+Openbsd.Wraith:1700938157: Openbsd.Dns Openbsd.Backup Openbsd.Netcat : d2312f8fcd9de09574d7370e8de058d91322686c 6e8e5b2448356bb48f642dd18115aaaaca7b6dcb nuulsail2tydzzhwox9paz1l6sbovlvx thtqf8ifeee5ox0i configuration automatically documentation yourpackname instructions abcd3fgh1jk1 alphanumeric yourhubname networkname explanation information compromised controlling wraithpath administer binarypass recognized configured officially packconfig afterwards connection additional protection libcrypto dccprefix timestamp generated confusing connected character different supported reference somewhere something providing specific unhashed yournick optional accounts undernet continue username separate password creating replaced directly contains chanmode updating choosing security channels hostname matching enclosed software hostmask chaninfo cherry07 groupdel terminal requires oaijmnop stronger yourself settings powerful services reasons openbsd botpack updated fruit03 because command fruit02 several fruit01 portmax urandom pkg_add portmin hubnick address userdel homedir botnick useradd patched without libexec eggdrop install written dynamic warning nologin comment complex version however disable specify working default cookies chanset private libstdc include release records joining provide ircnet source should github delete create ircnow tested script stable backup secure fruit1 fruit2 leaves client chattr limits resolv fastop before stolen server ensure netcat botnet manage manual handle access autoop botcmd unable libssl values hashes salted ignore public better entire giving sample efnet press print enter saved above mkdir chown setup twice paste since https takes valid users keyed 12742 opped vhost waste three state there user2 manop flags whois flood sends mjoin voice shell wrote lines these owner salt2 64100 salt1 suxsc durt8 doesn 64000 nodes their front means forth which begin gmake store track build while first title such want safe ipv6 leaf each bots fill this more will than must same both much that head like look fold then echo repo code data bot2 quit have hubs bot5 bot4 bot3 1025 pick free goes sha1 deop mdop help kick keep ctcp type find last used pros cons easy once need dest done copy into them wiki html very read note file show doas null libm been true xvzf sbin chsh gets uses ctrl hung usr org ssh any dns can new run uid ksh scp yes awk tmp mop bad ops ntk may but tar dev 10a ftp hit won put gz za by 96 z0 45 v1 16 29 47 43 30 28 pc 46
+Openbsd.Host:1700866267:  : redirect openbsd usage host
+Hunchentoot.Install:1700855441:  : characteristics merchantability redistributions standardization configurations implementation organizational documentation experimenting consequential parenthetical distinguished professionals defparameter installation quickproject contributors informations applications transactions interruption incorporated sbcl_program modification introduction authenticity calculations cryptography possibility portability hunchentoot development correctness certificate environment parenscript interpreter conventions definitions compression directories procurement description innovations programming mathematics reasearches ecl_program consecutive simpletable interaction particular parameters warranties selfsigned privatekey quickstart conditions referenced disclaimer components permission structures difference absolutely styleguide negligence repository scientific defpackage completely quantities substitute navigating disclaimed semicolons containing accessible functional incidental especially themselves dispatcher programmed installing understand javascript downloaded university characters integrated barski2010 seibel2005 interested constantly vertically quicklisp directory following quickload including inserting attribute defmethod functions reproduce liability evaluated variables permitted installed collector copyright delimiter resources bsdforall ignorable localhost defsystem pineapple otherwise pathnames packaging specified discovers webserver exemplary configure materials knowledge available signature installer behaviour different qualified nicknames something allocator operation interface modifying important separator lisp_form lispguide connected constants paragraph temporary licensing correctly libraries esotheric developed continues buffering informing proactive operating ironclad software licenses electric projects indirect comments handling provided sections contract specific acceptor initform accessor 028b5ff7 automate portions defclass contents responds business returned separate features products retrieve terminal services floating bordeaux warranty compiler instance registry magnetic gigantic warnings stopping defaults unsigned language directly computer involved speaking question advanced calculus locality entering describe generate personal commands handlers skeleton programs template composed shutting happened contains assuming keywords foreword existent creation coercing security starting enclosed required pressing instruct inferior toplevel official libressl majority keyboard platform provides sortable revision superior everyday redirect province arising example proceed loading replace fitness related objects purpose written country library advised company entered request damages unicode instead writing openssl profits already message version whether however finally enabled another limited capable address clients outform pkg_add openbsd implied scripts appears credits defined notices threads copying created testina depends process without apropos neither endorse promote derived resides holders express options numbers perform manager signing release strings symbols choices pushnew include follows homedir systems happens issuing central reshape timeout protect cleanup verbose avocado working initarg running desktop machine sparc64 explain classes getting waiting regents similar declare started science punched distant element dialect garbage graphic history regular strange mailing achieve channel legally clauses initial funcall concept suggest execute methods dynamic console homelab support licence edition preface largely headers between clarity printed firefox browser common reflex gensym readme author binary needed helper antani launch arises people inside errors syntax output reload sbclrc angelo attach assert exists choose border prompt useful random deploy github listed stream layout future edited really window adding fridge unwind reader lambda remove expand gencgc loader endian little caused letter theory finish called fields strict notify stuffs liable fruits editor domain public mostly retain unique keyout newkey length before showed itself global serial should remark indent extend spaces coding occurs prefer banana orange refers stands usable things verify export always assume result remind secure marked better excels alonzo church incits s20018 google modern libera stated online append manual antik files goods group begin rules below event shall asked about emacs edicl using nodes while small https slime until taken which basic hints lines nohup apply tools first these forms image three means would align issue after month check index await setup shell above vhost quote glory hacks prior named progn defun there leave stdin mkdir phase catch input since those fully italy email blank value quite empty peach merge moved based point stell locks added least arena amd64 chars ideas arm64 could allow pages cycle again swank asdf2 among areas equal macro probe usage batch times asdf3 build cards boost books years fifty rossi still gmail piece width great next from that just when will setq user must this also mapc chat beta 2023 make more fact html four goes want date like root tree best 1994 menu ansi your doas text well unix loss made 2014 wide free ieee only such curl back have site tort data loop give bash 2015 find 9443 4242 plum pick bank core x509 left unit rome pair easy what same look held 4bsd case thus esac days lone 2048 into type byte task size past tape docs high feel setf they said fad may x86 why who irc sat bit fly www see nil txt dsl pem png crt can 226 ldb log csh faq don got ago few 365 rsa 003 alt 002 via non gpg two xml feb 004 16 bt fd ql 30 h1 dn js 25 mv cd
+Hunchentoot.Install-Draft:1700849749:  : merchantability standardization redistributions characteristics implementation configurations organizational professionals documentation consequential experimenting distinguished parenthetical cryptography informations defparameter installation quickproject contributors calculations applications interruption transactions authenticity introduction incorporated modification development correctness possibility hunchentoot environment parenscript certificate description programming procurement interpreter definitions mathematics consecutive reasearches portability innovations conventions directories compression simpletable interaction semicolons selfsigned containing components conditions disclaimer parameters quickstart navigating quantities privatekey defpackage particular vertically substitute javascript constantly referenced negligence seibel2005 barski2010 understand functional permission incidental warranties repository disclaimed absolutely especially styleguide dispatcher scientific structures integrated downloaded themselves accessible completely university installing difference programmed characters interested quicklisp defsystem directory following signature available ignorable installer webserver configure delimiter something attribute liability including otherwise libraries bsdforall materials evaluated copyright knowledge qualified buffering inserting pathnames permitted reproduce resources functions operation localhost installed different packaging defmethod quickload allocator nicknames constants continues informing exemplary specified interface modifying paragraph correctly behaviour developed temporary esotheric separator proactive collector licensing variables lispguide pineapple important operating discovers licenses acceptor starting redirect sections services computer responds involved specific speaking provided separate software warranty defclass entering indirect comments language portions business libressl shutting magnetic gigantic coercing skeleton initform products handling features security electric creation existent projects bordeaux handlers keywords template terminal contains composed accessor programs required commands enclosed ironclad locality province superior foreword 028b5ff7 returned question directly retrieve contract floating describe calculus automate happened unsigned platform majority instruct advanced inferior generate instance toplevel registry everyday defaults sortable revision personal warnings official stopping assuming provides keyboard contents compiler pressing dynamic proceed pkg_add homelab preface profits without neither happens written already classes promote element advised example address homedir derived library scripts verbose openbsd arising edition related timeout endorse copying objects entered achieve pushnew numbers symbols avocado strings whether another capable initarg declare regents credits options central however explain loading version openssl resides manager message replace signing release damages limited request implied purpose writing fitness follows choices appears clients unicode protect outform express enabled finally country apropos company systems holders channel defined similar waiting process depends cleanup funcall initial strange threads testina printed created notices dialect mailing between science legally instead methods running regular execute graphic sparc64 started distant include clauses punched headers getting working garbage largely history desktop reshape support perform issuing suggest machine licence console concept before helper banana strict showed itself adding common indent expand coding stream sbclrc liable orange loader assert gencgc unwind launch binary errors caused random domain mostly theory public antani retain author fruits lambda reload window inside serial little endian readme choose letter should remark occurs stands spaces called refers exists fields prompt listed layout future useful keyout remind always google edited attach export newkey marked github deploy needed length output finish remove reader gensym append s20018 incits assume secure modern notify excels people syntax arises reflex really fridge church alonzo extend editor stated stuffs result unique angelo usable things verify manual online libera prefer global border better which forms files cards emacs piece italy check antik index apply month first shell point email slime using https goods taken begin draft until rules there fully quote amd64 arm64 glory vhost await setup among basic boost macro asked those areas tools books since about ideas above hints these could shall based build after usage means moved prior issue event value hacks nodes blank defun quite pages empty stell leave edicl progn small again named rossi lines would added gmail merge locks arena while mkdir equal least probe allow stdin catch asdf2 chars asdf3 input still cycle times phase align years fifty three peach group width great swank batch doas docs root will mapc core this what unix that give bash loop free from loss feel bank data make user back 2023 more text next want must when ieee ansi menu pick just date like html 4bsd your tort such easy look tree setq lone plum 9443 4242 only chat goes high have past four made tape size 1994 beta curl x509 site type thus byte wide days 2048 into unit left setf fact 2014 rome held well task also best case same pair 2015 said they find 004 see crt png fly why nil 002 can two ago alt xml www 003 pem log may fad who got bit x86 non ldb csh rsa via 226 dsl irc gpg few feb sat don faq 365 fd bt h1 16 js ql dn 30 25 mv cd
+Openbsd.Ngircd-Draft:1700358202: Irc.Guide IP.Myaddress Ddos.Intro Chroot.Intro Netcat.Irc Hopm.Install Ngircd.Ssl Password.Management Dns.Vhost Ngircd.Link Syslogd.Configure Openbsd.Rcctl Anope.Install Atheme.Install Acopm.Install : abcdefghijklmnopqrstuvwxyz noticebeforeregistration allowremoteopers maxconnectionsip defaultusermodes troubleshooting requireauthping operchanpautoop cloakhostmodex opercanusemode implementation syslogfacility configuration documentation automatically alternatively maxnicklength cloakhostsalt service_name service_user instructions unexpectedly installation eavesdropper configuring pingtimeout maxlistsize infrigement recommended uncommented service_pid information permissions pongtimeout lightweight disconnect restarting admininfo2 impossible production connecting admininfo1 adminemail references automation maintained harassment absolutely unfiltered installing nullrouted motdphrase examplenet terminated understand management uncloaking encryption advantages minimalist compromise techniques different interfere operation myaddress configure otherwise sensitive passwords localhost reloading untouched unlimited generally addresses listening installed described invisible receiving essential including sparingly debugging necessary typically somewhere copyright serveruid suggested servergid chrootdir character firewalls platforms developer identical building gambling commands hostmask rejected violence template precedes connects download validate channels packages finished comments standard solution multiple software cracking familiar operator contains username logfiles straight properly probably motdfile function security secondly moderate messages enabling generate helpfile sysadmin maxjoins includes stalking features upgraded provided examples existing actively chatting services intended spammers compiles portable overview remember official syslogd ability because _ngircd servers network careful pkg_add scripts clients replace openbsd besides editing hosting libexec another however outside written cloaked symlink scratch instead correct listing privacy mistake pidfile consult warning usually periods appears heavily illegal process threats already expects slander directs ircnowd running linking enabled support without ignored monitor lookups crontab cronjob perform prevent extract friends filters working options differs contact created glines errors barton writes public global should entire modern please source policy easily normal secure nobody limits single become ensure random events stable handle tested atheme simple string causes issues bypass blocks reduce sample daemon planet inside netcat domain joined invite actual verify remove resolv insert unable unique ddosed needed custom every intro those using going vhost rcctl owner guide anope below power acopm https proxy share pkill needs chown draft mkdir users since until after pgrep chmod three order aware match leave check ports these staff speak terms index agree libel drugs avoid crash while being hello clean begin hangs which first world short title earth linux abuse above 16667 pages exact keeps setup helps would whois doas from real into ipv4 note make your have will that only 6668 code this 6669 7000 turn 2001 once must text 3000 ipv6 used runs want 6666 6665 then been logs 6664 xvzf porn next 6660 6661 6662 6663 sets wiki bsds when stop also each hopm data send such easy they fork docs lead best many show does long free var php usr but bin 127 new dns one 192 168 db8 was txt ssl has hup see 1p2 try don v26 few ftp org tgz via 120 yes day had may tls let ips get ix cp ln
+Openbsd.Install73:1700285537: Signify.Verify Openbsd.Buyvm Vmctl.Usage Openbsd.Bsdrd Vmm.Configure Dhclient.Configure IP.Myaddress Hostnameif.Static Dns.Overview Unbound.Configure Openbsd.Fdisk Openbsd.Disklabel Openbsd.Base : 1b7ff2bba74aebde congratulations configuration automatically partitioning installation inconsistent verification architecture successfully registration asynchronous specifically independence dynamically configuring nameservers information softraidfde maintaining recommended configured installing networking simplicity interfaces prepending developers utoinstall resolution unverified maintained fontconfig manipulate statically cloudflare eventually management hostnameif administer passphrase particular encryption substitute encouraged including loginname disklabel available carefully invisible described megabytes libraries directory subdomain allocated qualified addresses sometimes selecting myaddress allocates timezones disabling fragments important install73 fw_update relinking completed username security pressing 14270432 12900448 prohibit selected freetype password programs graphics packages autoconf location downtime provider possible physical dhclient 22746368 19285344 xshare73 labelled contains entering pathname continue internet download guessing terminal software 34010176 included properly cylinder disabled 0xa76798 settings overview remotely accident targeted provides openbsd netmask account consult reduced example special xbase73 printed improve release pattern without virtual unbound machine caching 7932864 booting sectors 1279776 enlarge default mounted forever warning correct details reading command attacks invalid pubkeys connect records causing central routers logging signify restart 7883296 5190752 3388864 1279840 console gateway hosting relying because simpler chooses already xfont73 usually answers outside loading control audited seconds prompts welcome minimal present hundred require upgrade 3886664 options 3969732 decided against xserv73 process instead realize mistake 1655808 closest replace probing system prefix 115200 single simply either werase should sha256 follow really length virtio rather google kernel verify speeds please ircnow offers mirror cancel unable accept guides before common bypass create change game73 during comp73 reboot unlike finish needed likely faster status 708608 444888 normal 297417 assign cannot layout groups blocks inodes saving random unique bootup unused device number unless screen except typing cdboot return escape double nosuid subnet fstype making offset abort amd64 would fdisk setup lower where bsdrd 19200 proxy 38400 which usage below other trick man73 leave quad9 57600 vmctl twice might 16384 newfs needs ustom image 79352 https local x11r6 users files 79984 nodev disks media drive flash rsd0a 24750 rsd0k 19840 20480 there first often later match about allow avoid buyvm safer bsize fsize whole fresh fonts intel faq14 ports chose wrong after panel check fixed state vt220 reset vlan0 notes shell email shown title bring short 2046m quick begin 638k mind sets vio0 does faq4 2001 html exit sd0i from this done team have each none list data ipv6 3873 want them skip wait text root that sd0e your such will ipv4 dhcp 4550 seed than esc7 uses then 2bsd 2448 abcd wish 2449 once 5499 home last 1690 98mb 9919 cd0a must 1314 make swap sure com0 1029 rd0a echo left 9600 same been both sshd when only kill risk long intr 8080 ctrl what help most sake back rd0b dump case tgz few nfs its run any url may 109 yes iso vmm foo etc org has www but dns 255 web db8 mbr 100 gpt alt vps 162 624 9mb 512 em0 154 5mb mem pc0 hd0 mnt var usr src a20 879 668 tmp sd1 obj cpg kb e0 03 81 rw 7m 0m
+Openbsd.Install74:1700284011: Signify.Verify Openbsd.Buyvm Vmctl.Usage Openbsd.Bsdrd Vmm.Configure Dhclient.Configure IP.Myaddress Hostnameif.Static Dns.Overview Unbound.Configure Openbsd.Fdisk Openbsd.Disklabel Openbsd.Base : 1b7ff2bba74aebde congratulations configuration automatically partitioning installation inconsistent verification architecture successfully registration asynchronous specifically independence dynamically configuring nameservers information softraidfde maintaining recommended configured installing networking simplicity interfaces prepending developers utoinstall resolution unverified maintained fontconfig manipulate statically cloudflare eventually management hostnameif administer passphrase particular encryption substitute encouraged including loginname disklabel available carefully invisible described megabytes libraries directory subdomain allocated qualified addresses sometimes selecting myaddress allocates timezones disabling fragments important install74 fw_update relinking completed username security pressing 14270432 12900448 prohibit selected freetype password programs graphics packages autoconf location downtime provider possible physical dhclient 22746368 19285344 xshare74 labelled contains entering pathname continue internet download guessing terminal software 34010176 included properly cylinder disabled 0xa76798 settings overview remotely accident targeted provides openbsd netmask account consult reduced example special xbase74 printed improve release pattern without virtual unbound machine caching 7932864 booting sectors 1279776 enlarge default mounted forever warning correct details reading command attacks invalid pubkeys connect records causing central routers logging signify restart 7883296 5190752 3388864 1279840 console gateway hosting relying because simpler chooses already xfont74 usually answers outside loading control audited seconds prompts welcome minimal present hundred require upgrade 3886664 options 3969732 decided against xserv74 process instead realize mistake 1655808 closest replace probing system prefix 115200 single simply either werase should sha256 follow really length virtio rather google kernel verify speeds please ircnow offers mirror cancel unable accept guides before common bypass create change game74 during comp74 reboot unlike finish needed likely faster status 708608 444888 normal 297417 assign cannot layout groups blocks inodes saving random unique bootup unused device number unless screen except typing cdboot return escape double nosuid subnet fstype making offset abort amd64 would fdisk setup lower where bsdrd 19200 proxy 38400 which usage below other trick man74 leave quad9 57600 vmctl twice might 16384 newfs needs ustom image 79352 https local x11r6 users files 79984 nodev disks media drive flash rsd0a 24750 rsd0k 19840 20480 there first often later match about allow avoid buyvm safer bsize fsize whole fresh fonts intel faq14 ports chose wrong after panel check fixed state vt220 reset vlan0 notes shell email shown title bring short 2046m quick begin 638k mind sets vio0 does faq4 2001 html exit sd0i from this done team have each none list data ipv6 3873 want them skip wait text root that sd0e your such will ipv4 dhcp 4550 seed than esc7 uses then 2bsd 2448 abcd wish 2449 once 5499 home last 1690 98mb 9919 cd0a must 1314 make swap sure com0 1029 rd0a echo left 9600 same been both sshd when only kill risk long intr 8080 ctrl what help most sake back rd0b dump case tgz few nfs its run any url may 109 yes iso vmm foo etc org has www but dns 255 web db8 mbr 100 gpt alt vps 162 624 9mb 512 em0 154 5mb mem pc0 hd0 mnt var usr src a20 879 668 tmp sd1 obj cpg kb e0 03 81 rw 7m 0m
+Openbsd.Install74-Draft:1700282795: Signify.Verify Openbsd.Buyvm Vmctl.Usage Openbsd.Bsdrd Vmm.Configure Dhclient.Configure IP.Myaddress Hostnameif.Static Dns.Overview Unbound.Configure Openbsd.Fdisk Openbsd.Disklabel Openbsd.Base : 1b7ff2bba74aebde congratulations configuration automatically partitioning asynchronous installation verification architecture independence inconsistent successfully registration specifically information nameservers maintaining configuring softraidfde recommended dynamically fontconfig installing manipulate administer simplicity interfaces hostnameif utoinstall management networking maintained eventually configured prepending cloudflare unverified statically resolution developers encryption particular encouraged substitute passphrase selecting subdomain loginname available carefully qualified directory myaddress important disklabel including described invisible fragments timezones addresses fw_update allocates disabling relinking libraries megabytes sometimes completed allocated install74 packages password location cylinder selected freetype provides internet download programs autoconf dhclient graphics provider properly pressing pathname security disabled software entering included overview labelled possible accident xshare74 downtime terminal continue xshare71 contains physical remotely firmware targeted 14270432 0xa76798 guessing prohibit username 12900448 34010176 22746368 settings 19285344 openbsd pubkeys connect example default unbound invalid xbase71 xserv71 records causing pattern because signify virtual machine probing warning attacks enlarge without restart loading minimal 1279840 central outside gateway usually realize xbase74 release against hosting decided relying xfont74 booting netmask 7883296 simpler 5190752 routers require logging hundred present replace audited upgrade updated consult improve 3388864 appears prompts instead special reduced mistake reading details control command console process options caching forever chooses 3886664 1655808 3969732 answers closest sectors printed account mounted 1279776 welcome xfont71 already xserv74 correct 7932864 seconds nosuid should fstype change prefix length layout offset rather number groups likely either screen inodes blocks unused game74 comp74 before verify create unless please subnet double system sha256 accept offers follow finish unlike during faster ircnow speeds reboot google 115200 unable common cancel escape assign return mirror typing except bypass device virtio comp71 game71 single unique kernel cannot guides 708608 status werase 297417 444888 cdboot random bootup saving making normal needed really simply 19200 needs 22339 38400 amd64 draft after email media which newfs 57600 16384 2046m wrong lower setup match other check ustom there local nodev title would bring flash reset twice disks files 79984 79352 rsd0a bsdrd panel 19840 rsd0k below trick later fonts buyvm https allow fresh fdisk about ports vmctl chose quick whole usage faq14 begin first x11r6 safer avoid fetch might drive fsize notes bsize 20480 added timed shell vlan0 state abort proxy users fixed leave where short vt220 man74 quad9 man71 shown often image done then faq4 sets skip none 2bsd swap 1314 once from have 2448 esc7 2449 list this 1029 exit team that 8080 only risk long most kept must when been sake your data 3873 1690 root sd0i ipv4 98mb 9919 text each left sd0e will such make home 2022 html 5499 mind them last does 4498 want rd0a cd0a dump seed rd0b vio0 intr kill sshd com0 9600 638k case wait echo 2001 than ipv6 uses dhcp wish abcd both ctrl same back sure what help may www mbr org 255 has dns any tgz iso cpg alt yes 624 db8 vmm run foo gpt web its few but nfs 5mb usr 668 154 512 9mb var mnt src a20 mem pc0 edt obj hd0 sun apr em0 sd1 879 vps 100 url tmp 109 162 81 kb 03 e0 30 rw 7m 0m
+Openbsd.Sysupgrade74:1700093728: Openbsd.Dump Openbsd.Restore Openrsync.Usage Openbsd.Cu Vmctl.Usage Openbsd.Buyvm Openbsd.Top Openbsd.Syspatch : congratulations automatically configuration successfully installation sysupgrade74 information proactively processorup substitute performing particular associated installing completed signature powerdown processes operating succeeded reproduce rebooting reporting partition relinking switching completes openrsync fw_update syspatch enclosed username fetching sysmerge location firmware detected download shutdown messages packages progress averages verified openbsd restore console syncing patches running pkg_add probing loading xserv74 address generic version reports reading earlier problem welcome include utility example sendbug please number device making system before access secure proper amount sha256 recent should memory vmmci0 base74 begins serial exists enough kernel unique ensure cannot create latest 1023m https using disks 1775m cache vmctl 2288m login drive usage files check error nodes uname after 20117 amd64 cores known buyvm 3070m title guide first 43495 above quick says view need 1336 that host well type code your sets find with bugs been 2023 dump able done last back doas will make unix like most beta none cpu0 have this then want note some html cpu1 idle days nice spin intr 993m real free 189m 392m swap 638k once from 2144 com0 cd0 100 faq man nfs fix org www and any try hd1 hd0 217 ftp 216 a20 137 pub tot pc0 tgz ram see top tue nov oct mdt wed ssh has 330 vnc may 67 66 53 of 15 08 52 41 61 19 48 kb
+Openbsd.Sysupgrade74-Draft:1700093507: Openbsd.Dump Openbsd.Restore Openrsync.Usage Openbsd.Cu Vmctl.Usage Openbsd.Buyvm Openbsd.Top Openbsd.Syspatch : congratulations configuration automatically installation sysupgrade74 successfully information proactively processorup performing substitute particular associated installing partition 41freeirc rebooting succeeded operating reproduce processes powerdown switching relinking fw_update completed openrsync completes signature reporting progress firmware enclosed location detected averages download fetching username sysmerge shutdown verified messages syspatch packages openbsd restore console loading address generic welcome patches syncing running sendbug probing include version example earlier problem utility pkg_add reading reports xserv74 sha256 begins base74 serial vmmci0 making device cannot system create please latest ensure enough exists unique proper amount number memory should before access recent kernel secure files buyvm usage https disks vmctl login error using after 1775m drive 20117 nodes known check uname 2288m amd64 3070m cores 1023m cache title draft guide first above 43495 quick with dump most bugs beta your code says like that need well doas type make unix will done this sets able last 2023 been 1336 back host html find want note 189m 392m swap 993m then real idle cpu0 have some days intr nice spin cpu1 view com0 none 638k from once 2144 cd0 fix 100 man tgz faq org nfs and any www hd1 tot 217 hd0 216 ftp a20 137 see 443 pc0 pub ram top try nov tue oct wed ssh has mdt vnc 330 may 67 66 53 of 61 kb 48 52 08 19 15
+Olympics.Games:1699209576:  : olympic_rings_without_rims understanding sportmanship competitions brightest challenge worldwide wikimedia wikipedia internet cultures olympics chess960 variants together xiangqi friends promote commons upload ircnow across mental brings peace unite 320px games there human shogi https thumb best will from like both good svg png org of 5c
+Team.Security:1699123538: Doas.Configure Openbsd.Vipw Openbsd.Setuid : precautions permissions inactivity especially corruption authorized configured unexpected teammates passwords processes cronjobs properly security inactive accounts binaries example present receive prevent openbsd console authlog unusual disable search should setuid remove months passwd master serial change accept panels secure logins access shared check zgrep users daily email lists title basic after leaks reset their every wheel group helps needs from this each have with doas vipw root auxw tabs take make sure only file your that for any and etc var don web new to if of gz 3 6 9 0
+Linux.Reading:1698810433:  : dbs_a_def_rwt_bibl_vppi_i1 pd_rhf_dp_s_all_spx_wp_26 olp_aod_redir_impl1 tiltedwindmillpress interconnections internetworking communications implementation interpretation cory_doctorow_ administrators revolutionary democratizing krishnamurthi 9780143122791 9780136006633 9780132392273 9780130661029 professional transactions introduction organization applications contribution bibliography homesteading interprocess invisibility environment illustrated programming controlling distributed engineering filesystems foundations 1953953162 0136006639 accidental 1882114986 0132017997 mediactive 0201563177 0738206709 nonfiction principles 0201549799 0738206707 013937681x 0316037729 0316037723 1882114981 0131103627 1732265178 1449389554 1449389550 0139498763 1573980135 0132392275 0201634953 commentary 0201633469 0596001087 0596001088 0201633467 0139376818 innovation 0131103628 0139498761 1573980137 electrical 0201634952 1732265119 1732265110 1732265172 adventures liberating 0130661023 0201549794 peerconomy 0130810816 technology 0143122797 0066620732 0470287152 conscience 0201633542 0470287156 structured 0979034237 0262062186 0262062183 1695978553 1695978552 097903423x 0130810819 weinberger 0201634488 020163354x 0132017992 0887309892 literature 0201657880 techniques 0262510871 0201634481 1953953166 020161586x 0201615869 0201657883 0131429017 0887309895 0321486811 0321486813 0131429019 0262510875 tanenbaum hardcover september publisher computing cathedral paperback knowledge kernighan protocols lightning operating switching manifesto scholarly craphound deception paradigms published noosphere goldsmith felleisen compilers freesouls language learning pd_sim_2 mitchell february writings november practice prentice security foreword computer advanced journals printing literary machines castells business computng controls torvalds programs networks pd_sbs_2 evhippel switches kaufmann matthias complete exchange lawrence stallman gillmore software laurence literate mitpress painters selected mt_other zittrain jonathan services _content download annabook waldrop reprint edition addison brother society shriram factory gertner matthew findler penguin january english diamond element robbins billion culture history silicon michael wozniak unbound pearson raymond economy william richard october kembrew teaches musings hackers bentley hamming maurice jeffrey dealers product hiltzik mitnick ritchie benkler wizards origins default reading heather 20775th mastery openbsd seifert edwards routers stevens 5900491 bridges 0098268 9304042 maarten 2633296 berners weaving daemon andrew design modern alfred author series reilly yochai monica amazon august wesley ullman democ1 dnssec domain lessig donald essays second volume joshua wanted future fourth errors stripe graham sr_1_5 codev2 jeremy wealth pearls access bazaar victor wright dollar yupnet valley malone wayner kidder source galaxy dennis buford prints arnold memoir morgan manuel harper relayd hafner heroes nelson famous owning robert books https taoup april wiley brian keong human first simon remix david xerox ideas peter linus salus ghost lucas pages james kevin march knuth wires world guide score flatt bruce dream sethi doing xhtml basic tools moody suber lions steen linux shell httpd where tracy katie rebel index sites safe isbn 2018 4bsd 2003 unix snmp data most 2019 gary 1999 2001 nntp 1995 2020 ravi 1174 2006 htdp eric 1996 catb 1988 2012 bret 2021 july 1983 2002 hall glyn pike with levy john 1977 node from june 2008 just bell korn jack labs late dawn stay 2000 2009 erik asin parc text 2013 reed stop 1992 1998 2010 paul 1990 1986 bach 1994 sicp www web – edu esr dan pdf may mwl 2nd tim big who p2p tls lee how 1st ssh von lua new joi ito 3rd 4th you fun awk aho gnu 241 6th ref tcp 328 580 576 400 gay lam bay by gp wu
+Openbsd.PFStable:1698433636: Openbsd.Netadmin Openbsd.Buyvm Openbsd.Vmmuser Openbsd.Tcpdump Openbsd.SYNFlood Openbsd.Ilines Openbsd.Ntpd Openbsd.Nsd Openbsd.Sshbackdoor Openbsd.Iked Openbsd.Pf Openbsd.Ddos : troubleshooting configuration communication loginterface optimization deliberately requirements explanation intelligent sshbackdoor whitelisted immediately flushstrict unreachable information connections destination syncookies unfiltered icmp_types commentary bruteforce afterwards describing submission disconnect particular substitute optionally accepting filtering authentic localhost paramprob something commented interfere criminals internet standard loopback adaptive badhosts properly reserved incoming problems flushudp external exceeded includes overload synflood approved complete proposed optimize pfstable outgoing services firewall netadmin blocking diagnose provide openbsd persist address attacks without traffic servers against defines tcpdump exceeds another ruleset packets section bouncer profile enemies monitor reports strange entries reading seconds sending warrior spoofed process further present through vmmuser routing causing applied because rfc1812 echoreq missing working matches applies warning keyword rfc1122 default mangled invalid request passing routers prevent version example unique wraith system paster subnet single icmpv6 tagged gopher public domain issues ilines sender headed secret global source isakmp sample failed states random limits ircnow follow tested defend normal access hidden except tables please rfc792 refuse should chosen create folder notice editor header layers macros quick nodes break proto users scrub unip4 track https ipsec might 16667 16697 every allow apply known buyvm mkdir extif start weeks timex sorts pfctl wrong occur these added inet6 leave icmp6 which smtps shell imaps 10000 pop3s roadw guide 12742 entry 29173 basic there makes ident 13140 31337 pflog aside hours title based proxy days ipv4 ipv6 from mail ddos more iked ntpd doas your home that have both enc0 case also been will when vpns sure this 0020 1440 urpf 7000 9999 6669 7777 6997 6660 need 6400 2605 05cc 069d 0010 faa1 0030 0bb8 1290 note 00fe come last 071b keep f8de skip fc15 05bf vio0 2001 00b4 0434 stop than else hard like view them next left must same code ip6 new are org www any 198 see 113 yet 168 but 192 203 mss etc max lo0 can 169 224 var 254 172 209 non 141 119 251 229 137 rdr 228 src 184 130 183 240 500 bnc has esp pkt one vps nsd db8 faq dns web bug why two get 39 38 48 by 89 80 df up 53
+Ircnow.Roadmap:1698030134:  : roadmap2024 redirect ircnow
+DNS.DKIM:1697742688: PGP.Intro : migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqcmsef9dm8dx1ltmlmd56d628jbnaqus8aecdyyzvbvq4rhetzzv eeu2odwqqgyqgvv0xuk5qjsnsgf5ukkscrxmthspptoaqjt25fxnd3ptvh2zonagkzkntk 8iznifrhjff4dngvx61t9xknkcjrjdc6npo0l4mvtky66saftbccjlm6jihbud5j4uou5i migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqddmzrmjrqxleuyyiymg4sua2sy mzp1ro7kidtks8ttki6z6etrw9e9ddoxzsxnuxmume60cjbu08goyhpg3 gvjebqfjovwtqhvvv3fhh0uqbw0m9untpuaagorfgki 2u1zeqyo7k03kcjbdrvw8ihjtdenggl3p7am1v8wdg gfwdg7qkdn6kr4v75mflw624vy35daxbvnltjtgrg o5o0xmhblyspbfgmw7sw2awlwu95oyhk5tezpze s8ihdcexsr5fr8yk4ivlky8jo5o0xmhblys ss5u39zlqs7ts1m8izo2tpba70t9204na8 ew72o1diyvthkycgpsys8nmeqidaqab unjqq96dt308f2rvxewa6p8hxsjd fldir2u1zeqyo7k03kcjbdrvw8 eot6n78iznifrhjff4dngvx61 u6wn5xxli9hmovxluwidaqab mwr5mghpp9dint1hriwud uylzxfem1ufoty56jbi rkukyru5msqvp01ii canonicalization pb7pql4g86lczsf iwree02clqkwg5c zmafjtef2rlooq 9zpb2ajgoso4 introduction discardable simpletable datatracker sqri4exnbg signatures identified _domainkey domainkeys nhsjgam5qe guarantees following opensmtpd _dkimsign integrity algorithm otherwise receiving determine necessary indicates security selector tampered receiver returned designed sortable removing together pretends historic phishing command transit headers running private subject openssl joining produce prevent provide perform example records message letters testing display rfc5617 version signing ensures spoofed clients sending status should editor border marked result lookup detect sha256 change forged server checks filter public needed printf fields create sender taking claims access allows really during genrsa pubout these https lines final which _adsp first chown mkdir chmod prove notes 86400 below above based email title dmarc width setup class inbox looks valid comes does that sent spam used here like with from help will then work body been doas 1024 also your this both pass what many view text next date ietf more hash into name 2013 last etc 770 txt dns awk may see was www 100 pgp are tag tip doc its rwx spf bh jv by we
+DNS.Mail:1697742597: Nsd.Configure Dns.Overview Dns.FQDN DNS.SOA DNS.SPF DNS.DMARC DNS.DKIM DNS.Dnswl : tb8yiwenh01hz5xh1gjwg1v8oirnerf3482b8xrzykhjqudjcalnz9ggz9cnzahic3tsantdshdgk3c0oqjeilriw0eiakv2 migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqcmsef9dm8dx1ltmlmd56d628jbnaqus8aecdyyzvbvq4rhetzzv eeu2odwqqgyqgvv0xuk5qjsnsgf5ukkscrxmthspptoaqjt25fxnd3ptvh2zonagkzkntk kcohbemvxeotqtqzttdhxm6bkeluo0xbbhlrsq8c3q92oqztwflk 8amiibcgkcaqeaybhtr90v64hqtfw1sutfpg5byxf lmflyzipitm4egw3kadlzslycjutlkhcg5b u6wn5xxli9hmovxluwidaqab ibjdyqpndormr7r4itij6o sxutnmzigjmql81av47dg bsc2rzzszv2gzmrrr pb7pql4g86lczsf 2f4ak7xtamayful zmafjtef2rlooq x1jwlpungjgjt configuration instructions functioning discardable cdepmqw0xn8 datatracker _domainkey containing diagnosing understand postmaster s17qidaqab yyyymmddnn 2021050302 whitelists authority _dkimsign configure qualified determine following necessary together normally exchange interval returned requires overview removing continue appended concepts historic problems properly creating multiple minimum produce example joining running updated replace records command seconds another offline defines servers perform queries serving deliver private expires openssl reports provide refresh rfc5617 uun3kqc assumes already testing public simple needed lowest choose sample create taking allows really mailto useful filter marked genrsa dmarc1 adding pubout _dmarc editor others status number should origin result handle actual serial printf before charge takes dnswl means value short these using guide there begin first sends title basic retry which every chmod https 3vhfy mkdir _adsp chown after fully 86400 final lines start admin next that doas have free will this text into fqdn look like then find aaaa with goes 3600 1024 none more 2013 your ietf last most note want zone spf1 come from what only file 2602 fccf when name 1800 sure make imap smtp says just asks time etc 163 awk 143 day cat rwx 770 3rd soa was nsd are doc set org ttl txt ns1 www let csp any dig but pct rua ruf two can ns2 pop mx 38
+OpenBSD.LDAPd-Draft:1697739207:  : teacupsalwaysuseinsecurepasswordsaparently zwo7eey6kov96efzy7mj3odwld52qjoamy ldap_data_interchange_format teacup8biscuit2 orginaizational organizational objectclasses distinguished abbreviations distinquished configuration inetorgperson userpassword professional functionally suplementing interpreting introduction conversation technically information description connections lightweight accountname explamation recommended credentials ldif_fields dologin_pub attributes structural identified thunderirc subscribed additional b3vqcowkfa ldapsearch namespace discussed basically changeing bsdforall plaintext bascially remainder auxiliary violation structure component directory complying reference incorrect articales uncomment givenname wikipedia identical sensitive something microsoft statement resources annoyied database solution dcobject contains instance manually remedied possible shooting versions previous delivery promises appendix themself openldap probably homepage included focusing refering software dumpster protocol redacted remember abstract writeing entering returned required rfc2252 objects prosody records specify regular running simpler control another exactly ldapadd trouble pratice limited command between problem example central surname working earlier improve picking denotes desktop windows peoples admin20 openbsd default special atleast admin26 because encrypt defined magical replace editing editor domain schema itself useing maddie really rootpw thuser ircnow rootdn matter errors ignore common called listen 201910 thease server should whitch filled daemon limits access system string enable aswell asumes merely 9f8kqv chnage random simply pseudo gather useful things stands logins answer future naming either loging forgot peices groups unique little adding though wanted enough sooner local index didnt sorry draft ldapd check start typos rcctl entry guide units leafs proud multi being could front treat heres tells paste first means https value below pairs point learn items think press those setup fully above there weird found helps smtpd often would binds thats rules store meany usage teams doesn types extra table this make test much sure host time last have left with must only your into hook good thay most then same lang html what hows spam dude like each from part also case todo find best lazy will more none read high hash boot look long know used just fire ipv6 over copy alot kind uses mail when core dns itu key 501 imo can isn cat etc see may out get mvp ehh few nis own www asp guy oid doc had pdf by pg 65 64 2b 09 2x
+Pmwiki.Replace:1697735959:  : progressive_enhancement index_to_be_removed create_markdown pmwiki2markdown daringfireball startcodeblock markdownoutput markdown_text markdownfiles functionality corresponding unreasonable administrate endcodeblock requirements replacements contributors information folder_name indiceslist preferences complexity censorship principles versioning javascript contribute featureful traversing translator maintained developers preferably preferred read_file potential countries regularly telemetry something switching reversing enumerate wikipedia community available file_name difficult multiline teammates protocols languages databases wikilinks proposed possible articles concerns actively revision separate consider solution projects optional filename cookbook multiple familiar checking browsers makedirs relevant removing converts iterator metadata problems clients reverse heading allowed provide limited ikiwiki present whether element outside instead display content written perform created produce control ignores similar extract because openbsd already network ability utility example depends handled support avoided popular netsurf privacy should itself gruber markup exists gopher russia import parser length strict system telnet change values return avoids append rather stored longer follow access proper google sorted simple mothra enough entire needed obtain always least offer using teach title takes could these which users https email known write pages along lower break print basic plain split dillo nosql makes strip shell flags none will that have with elif keys from must else like lynx only join path core than more argv this perl korn keep mdwn what lisp uses less upon many lack indx true iran very well john sub new web not w3m php can has org got our cvs www git are def ban by 0a 1
+Police.Intro:1696741525:  : completelyrandomcloudexample genericregistrarexample ctcp_userinfo_reply ctcp_version_reply autorenewperiod orgabusehandle orgtechhandle orgabusephone orgabuseemail orgtechemail organization orgnochandle registration identifiable conversation orgtechphone orgabusename orgabuseref screenshots orgtechname information orgnocphone orgnocemail d1234567890 additional javascript operations postalcode registered orgtechref registrant orgnocname afterwards disruption creativity lno1234567 understand las1234567 passionate particular connecting disposable expiration personally collecting infiltrate inaccuracy interested background everything associated important translate nicknames providers real_name addresses committed realistic something authority education effective recommend therefore user_name sometimes criminals suspended ln1234567 complaint netsplits orgnocref stateprov attention confusion reporting feedback software evidence websites bouncers whatever accounts database document anything reported reseller research unsigned noscript normally province registry question username customer purposes printcmd chatting channels networks creation business allowing spamming preserve possible physical torsocks stealing realname language phishing noerror servers besides support section contact looking clients daemons domains grammar illegal joining written further disable hosting logging someone nowhere orgname careful umatrix country pkg_add however control command because browser suppose friends setting options biggest autolog perhaps regdate updated comment contain attacks reasons welcome clearly dialect respond english hobbies finally offline willing reports suggest tickets proving malware realize unable number hacker unless ircnow header answer around inside crimes google entity emails safety danger videos taking guilty gather opcode double dnssec hosted reveal figure global turned status botnet expiry closes police notify strike enable admins stolen before within filing useful little spying causes moment source verify follow social formal joined things should credit engine subtle change https visit doesn shell whois needs right being 15t05 shady found first rcctl query takes irssi until never icann 06t00 flags their tells using orgid comes while 39025 thief still linod intro weeks ahead about might helps wrong spell avoid order slang proof basic vhost 07t13 trust share start rules filed build speak learn lying twice break fraud enjoy calls doing check based users lno21 hosts spent hours think ircds these media birth 86400 brain clues mask down that from find last your free this like once live went made took save bots else over have they logs show them when more many rcvd size 2020 msec 4943 arpa want used sure make team send most must arin rdap 2019 2008 city then 8900 word just case 6039 owns know sent much feel home ddos card iana 2021 2018 page stop shut hubs lots talk fill tmux runs doas mirc type hide wicf tool pick msg dig 192 168 may thu but don got ptr 127 vps won law via why fit old bad fun get etc ns1 epp has 58z ns2 www cld url ltd 12z 295 him 300 36z few was 04 41 61 by 14 p2 53 22 57 80 55 qr 24 28
+PmWiki.PageTextVariables:1696735023: PmWiki.Name PmWiki.FullName Cookbook.InternationalPTVs PmWiki.PageTextVariables-Talk PmWiki.TextFormattingRules PmWiki.PageDirectives PmWiki.OtherVariables PmWiki.PageVariables PmWiki.PageListTemplates PmWiki.IncludeOtherPages PmWiki.PageLists Site.PageListTemplates Site.LocalTemplates PmWiki.Functions PmWiki.ConditionalMarkup : defaultemptypagetextvars defaultunsetpagetextvars textformattingrules internationalptvs pagetextvariables includeotherpages usageincludedpage specialreferences pagelisttemplates conditionalmarkup specificvariable definitionlists nametoyearmonth usageotherpage pagedirectives localtemplates othervariables byaudienceend administrator automatically usagesamepage singlelineend pagevariables conditionals partialmatch experimental new_patterns transylvania installation groupheader cellpadding groupfooter permissions mockingbird information alternative effectively replacement calculated regardless documented expression selections characters specifying namespaced pagetolink limitation developers containing explicitly khandallah underscore withincode markupend available pagelists undefined delimited following evaluated processed functions displayed delimiter inclusion strtotime yyyymonth requested automated defining asterisk pagename mountain accented fullname cookbook examples remember matching standard assigned ordering contents followed monthnum surround multiple accessed version simpler matches assigns varname command strings opposed caching returns printed resolve sidebar through caption summary written formats another ruapehu without declare headers footers writing follows testing address comment becomes creates defines country created regular crisses visitor natural letters current meaning pmwiki values before braces quotes output around config hidden cannot custom recipe having spaces suburb always digits linkme normal option dollar source cached render needed pcache border arrays taupo class horiz above wikis ifend never their pmhlt equal those using found false colon forms fmtpv point ftime curly three paris there store doesn addis ababa shown being means basic roman finds works first cases latin ascii apply below else from more want also even lake read user city that slow such will seen talk like this thus site what psft them some then made have when pull only html sort dash data main 1313 must lane php you but any don one won 121 non has yet etc of 10 07 4 6 8
+PmWiki.Version:1696735023: PmWiki.PageVariables SiteAdmin.Status PmWiki.SiteAnalyzer Cookbook.ModuleGuidelines Cookbook.RecipeCheck Cookbook.Cookbook : moduleguidelines basicvariables administrator pagevariables releasenotes siteanalyzer installation defaultgroup titlesummary recipecheck determining defaultname declaration recipeinfo recommends versionnum recipename displaying obtaining siteadmin sitegroup markupend changelog cookbook relative versions upgrades contains prefered pagelist scripts located current recipes example running pmwiki status couple should number first dates pmhlt yyyy file that also 2017 path this used see and the php fmt for you are can of if dd 06 02
+Site.AuthForm:1696735023:  : enableauthuser invalidlogin requesting recognized displayed autofocus auth_form authform messages username required password summary enabled authpw pmwiki submit authid input ifend value site text when not ok
+Terms.Privacy:1696735023:  : identifiable information investigate maliciously anonymously permanently personally exceptions addresses interview described libellous metadata services channels response reserves networks archived required material violated supports allowing continue messages privacy members bouncer however contact welcome prevent private another mailing account request consent without publish storage illegal reports parties cookies special proxies replies connect joined delete ircnow should public mailto access proven policy emails combat number stored users abuse files above vpses their those which terms needs about phone rules staff after often third agent right agree using chats uses have sell does most that real name your will some also such scan this make used ctcp open spam log org and who are may own via any by as ip
+Bots.Bots:1696735023: Category.Bots !Bots : translations complements restrictive blacktools administer moderation scriptable management firewalls interface blackjack borrowing profanity languages networks pricebot multiple features everyone software connects progress lastseen together security scrabble increase channels category through servers bouncer support request filters hangman working passage weather clients display scripts quoting reports snippet adding create upload public better around easier domain longer posted relays switch ircnow reader charge quotes bypass easily trivia group games music using shell feeds other title feels stats chess bible greet poker these helps still ready order makes verse study since users over used code well http bots spam that open your this curl file holy chat lets each with then free same real time from live have they ircs like them hold auto room nick misc word news not yet org for uno and web can own rss per 100 20
+Grape.Minetest:1696735023:  : minetest_join_02 minetest_join_01 minetest_login distribution instruction interesting application registered characters executable connecting convenient afterwards installing additional screenshot available questions subfolder dragonfly operating downloads wonderful consider official password username baytuch website archive channel players further address support welcome numbers letters contain playing joining openbsd freebsd android windows server please option center ircnow static device fields unpack system grape least latin linux macos users shown 30000 start there other first https click files your will with that need this good fill must game long time want chat find team into next have can for are gnu org any png its run bin www if 8
+Debate.Outreachkids:1696735023:  : characteristic outreachkids discriminate unconscious detrimental orientation stereotype compassion experience microsofts oppression softwares minecraft education embracing community together villages neighbor slashdot uniquely comments training activism genocide society justice special doubles against extreme slavery empathy hnicity 1426210 through biases lesson gender sexual people negati behave larger debate trying social their other story based guide diver makes power notes being https bring cause scale teach while push vely that used when jrmu them even suck 2020 some code hour lead will both news help with your game sity this year and can two net all for now org 03 22 52 45 13 11 44 37 17 05
+Openbsd.Team:1696735023: Ircnow.Dogfood Team.Announce Openbsd.Police Openbsd.Ilines : announcements configuration permanently disconnects orientation investigate advertised additional coordinate connection discussion 2020123100 timestamp teammates configure following operator customer username services adminlog frequent accounts yourself redirect trainees channels downtime networks present support example bouncer webpage actions related moddata editing forward website openbsd members changes dogfood provide welcome request joining making server entire should online before backup offers serial number assign please leader ngircd client remain report emails police ircnow issues broken notice create glined ilines either notify daily check after tasks there links guide abuse title users every taken track cause right opers smtp that must meet bugs will them away each home from same with need doas copy save file keep read look day any all are znc see him his fix and can new may set cp
+Hardware.Psp:1696735023:  : entertainment connectivity architecture simpletable association playstation producing developed continued bluetooth december embedded released portable hardware sortable handheld modules storage battery version company console custom 166mhz memory 366mhz socket street gaming border stick r4000 model class until first specs e1000 infra width bits 3000 1200 64mb mips dram 1800 ieee sony irda data 32mb 2000 2014 that 2004 iii mah red 802 psp 11b gpu two cpu of by is go
+Openbsd.ZNCModules:1696735023:  : clearbufferonmsg functionality investigating clientbuffer cybershadow immediately information additional zncmodules specified directory configure available logsearch download fail2ban unbanned makefile generate attempts category complete supports features minutes restore archive blocked timeout because backlog allowed command openbsd example install suppose options failed python source output admins number access relayd master please daemon active enable adding github unload worth https login these tried found broke their issue panel would extra which after hosts count users other chown party unzip gmake mkdir title help uses jrmu home this your list more doas want bans like wiki some here tips code team web 127 ftp got can tcl has one etc 3rd cpp are don 37 of 20 cd mv no 8
+Hosting.Providers:1696735023:  : colocationamerica restrictions jurisdiction hosthongkong hkcolocation researching sunnyvision cryptocoins filesharing alternative censorship especially simcentric afterwards delegation acceptable guidelines reputation operating endoffice unhelpful questions filtering providers religious important residence dedicated singapore australia microsoft corporate political serverrun offensive community transfers anything software payments customer criteria torrents serverhk required untested continue leaseweb includes purchase friendly shutting supports services servers options already country centers located certain silicon another openbsd freedom privacy respect content systems insists respond replied hosting speech policy valley should subnet allows ignore before strong define easily notify amazon africa google ircnow useful legal email these ifend https often avoid large south needs money false reply trial title where court offer reach vpses their order first check which abuse upon ipv6 have your does rdns team they also data asia that size such cash game fast ddos give time vpns what user will find when this been aren them send bank good long few and usa ask law can org how get day ovh by 3
+Ircnow.Ally:1696735023: Openbsd.Ilines Ircnow.Networks : requirements harassment criminals advertise recommend supported permanent bouncers properly together channels scamming phishing benefits evidence activity networks respond carding openbsd provide reports labeled filters allowed illegal content contact shells ilines combat either needed select ircnow allies advice reduce obtain relays users adult share title admin needs email abuse bring many nsfw with spam stop logs must ddos here join ally list will site your help over link deal and can org how for not set of if
+Ngircd.Oper:1696735023:  : volunteering commands ngircd github master thanks https modes title guide oper blob help for txt doc the to us
+Password.RecentChanges:1696735023:  : recentchanges management formatting password february schemes hashes izzyb fixes 17t20 2023 42z by pm 44 07 46 03 04 27 am
+Pgp.RecentChanges:1696735023:  : implementation recentchanges vulnerable superior openpgp various baytuch august create issues export upload 13t14 added 2022 less uses jan6 2023 keys org pub 27z by pm 21 01 to 54 03
+Pgp.Upload:1696735023:  : recommended simpletable mailvelope keyservers hockeypuck services sortable openpgp nicknym surfnet upload ubuntu github design border https width class karbo leap docs nyms your labs 100 mit sks org url edu ua pp io nl
+Webnews.Install:1696735023:  : redirect openbsd webnews install status 301
+Acme-client.RecentChanges:1696735023:  : recentchanges configure autorenew february client better revert local daily sure acme 2022 july 2023 jrmu not mkf etc is as 26 by am 50 11 at if 10 06 pm 03
+Relayd.RecentChanges:1696735023:  : recentchanges acceleration tlsmulti relayd 31t14 30t15 jrmu 2023 20z 54z 03 by 26 16
+Minutemin.Minutemin:1696735023: Vps.Vps Openbsd.Openbsd Ircnow.Goals Freedom.Freedom Shell.Shell Ircnow.Howtoask Openbsd.Training Openbsd.Ongoing Ircnow.Roadmap Third.Third Ircnow.Finances : administration documentation immediately themselves optionally experience commitment references improving following tutorials questions interview homestead sysadmins minutemin marketing training applying finances internet salaries howtoask recruits familiar progress websites projects customer software redirect openbsd willing require joining friends roadmap account promote respond request support freedom improve minimum chatter someday ongoing network threats include servers system resume become ircnow cannot afford number reward finish invite before worked duties defend please rfloat report notice coding attach third email weeks after goals title shell basic phone hours party width their staff seems 80pct track legal learn being while smart would users ready write like time team this help your must real oper unix with code hang good name they have take full new add and org png pay vps got out who but by if cv 5 6
+DNS.RecentChanges:1696735023:  : recentchanges specified ipv6rdns ipv4rdns february november address clarify august jacobk dnswl needs 06t20 izzyb dmarc added 10t05 2021 2023 note hawk jrmu mail dkim june link what spf 27z 25z 56z fix 01 by 04 03 11 am to pm 12 52 31 08 22 55
+CodeForce.Bootcamp:1696735023: Openbsd.CPAN Unix101.Unix101 : simpletable description codeforce bootcamp sortable unlocks prereqs unix101 openbsd lesson border title class topic width bonus perl cpan korn 100
+Vhost.RecentChanges:1696735023:  : recentchanges december freedns ircfree ircnow domain vhost march xfnw 2021 2022 wiz com not 13 16 12 by pm at am 03 36 is
+Iked.Linux:1696735023:  : distributions certificate disconnect available libcharon configure username identity hostname password download install example replace plugins server debian simple actual client asked press enter extra linux using ipsec most file must with path sudo type when your from ctrl iked very crt the get com and vpn cmd apt for are run to
+Unrealircd.RecentChanges:1696735023:  : recentchanges unrealircd install january 2023 mkf at 07 24 pm by
+Mkf.RecentChanges:1696735023:  : recentchanges february wikiv1 2023 mkf 06 at 31 pm by
+Gomuks.RecentChanges:1696735023:  : recentchanges install january gomuks 2023 mkf at 07 08 pm by
+Paster.Install:1696735023:  : redirect openbsd install paster status 301
+TigerVNC.Install:1696735023:  : redirect tigervnc openbsd install status 301
+Mlmmj.Install:1696735023:  : redirect openbsd install status mlmmj 301
+Eggdrop.DuckHunt:1696735023:  : modifications fonctionnera correctement beginning suprieure putloglev duck_hunt duckhunt original eggdrops version comment scripts details regsub lindex return erreur 00304 https votre will page line some 1620 html with s228 the que run out for sur les tcl all est to fr la of 45
+Squirrelmail.RecentChanges:1696735023:  : recentchanges squirrelmail webmail install connect usually server 10t00 your 2023 org 25z pos to 03 33 by it
+Eggdrop184.RecentChanges:1696735023:  : recentchanges eggdrop184 install 25t04 izzyb 2023 13z 03 by
+Sylpheed.RecentChanges:1696735023:  : recentchanges initfree sylpheed connect 20t06 2023 36z 04 21 by
+AncientWisdom.Bio:1696735023:  : ancientsjwgrbsmxoofnxjd6ciewecbuhmi7wcp45srgkd5rq32345ad bsdnetoezbtsbrzlnrgxn7iv6qokouuyr4dkd7f2xt6fmmacvi2kjjad 𝒶𝓅𝓅𝓇𝑒𝒸𝒾𝒶𝓉𝑒 𝖗𝖊𝖌𝖚𝖑𝖆𝖙𝖎𝖔𝖓 𝓁𝓊𝓍𝓊𝓇𝒾𝑜𝓊𝓈 𝓀𝓃𝑜𝓌𝓁𝑒𝒹𝑔𝑒 𝖘𝖊𝖓𝖙𝖊𝖓𝖈𝖊𝖘 𝖉𝖊𝖑𝖎𝖌𝖍𝖙𝖊𝖉 𝓅𝓁𝑒𝓃𝓉𝒾𝒻𝓊𝓁 𝓦𝓪𝓻𝓫𝓾𝓻𝓽𝓸𝓷 𝒦𝓃𝑜𝓌𝓁𝑒𝒹𝑔𝑒 𝖕𝖗𝖊𝖈𝖊𝖕𝖙𝖘 𝓗𝓪𝓷𝓰𝓸𝓾𝓽𝓼 𝖎𝖘𝖔𝖑𝖆𝖙𝖊𝖉 𝐿𝒾𝓀𝑒𝓌𝒾𝓈𝑒 𝓉𝒽𝒶𝓃𝓀𝒻𝓊𝓁 𝓋𝒶𝓇𝒾𝑜𝓊𝓈 𝒞𝑒𝓇𝓉𝒶𝒾𝓃 𝓦𝓮𝓫𝓒𝓱𝓪𝓽 𝒸𝑒𝓇𝓉𝒶𝒾𝓃 𝒸𝑜𝓃𝓈𝓊𝓂𝑒 𝓂𝒶𝓉𝓉𝑒𝓇𝓈 𝓦𝓮𝓫𝓼𝓲𝓽𝓮 𝒷𝒾𝓈𝒸𝓊𝒾𝓉 𝓐𝓷𝓬𝓲𝓮𝓷𝓽 𝓦𝓲𝓵𝓵𝓲𝓪𝓶 𝕬𝖓𝖈𝖎𝖊𝖓𝖙 𝖒𝖆𝖓𝖓𝖊𝖗𝖘 𝒸𝒽𝑜𝑜𝓈𝑒 𝓦𝓲𝓼𝓭𝓸𝓶 𝓺𝓾𝓸𝓽𝓮𝓭 𝓌𝒶𝓈𝓉𝑒𝒹 𝖈𝖔𝖓𝖛𝖊𝖞 𝒶𝓁𝒷𝑒𝒾𝓉 𝑜𝓉𝒽𝑒𝓇𝓈 𝓊𝓈𝑒𝒻𝓊𝓁 𝖂𝖎𝖘𝖉𝖔𝖒 𝒫𝑒𝑜𝓅𝓁𝑒 𝓐𝓾𝓰𝓾𝓼𝓽 𝓒𝓪𝓫𝓲𝓷 𝓌𝒽𝒾𝓁𝑒 𝒻𝑜𝑜𝒹𝓈 𝓨𝓸𝓾𝓻𝓼 𝓣𝓻𝓾𝓵𝔂 𝓅𝒾𝑒𝒸𝑒 𝓸𝔀𝓷𝓮𝓭 𝔀𝓱𝓮𝓻𝓮 𝓔𝓜𝓪𝓲𝓵 𝓦𝓱𝓸𝓜𝓮 𝓦𝓱𝓮𝓻𝓮 𝕾𝖍𝖔𝖗𝖙 𝓁𝑒𝒶𝓇𝓃 𝓈𝒾𝓏𝑒𝓈 𝖜𝖍𝖎𝖈𝖍 𝒿𝓊𝓈𝓉 𝓌𝒽𝒶𝓉 𝓁𝒾𝓀𝑒 livesystemstatus 𝓸𝓷𝓬𝓮 𝔀𝓲𝓼𝓮 𝓹𝓸𝓸𝓻 𝔀𝓲𝓵𝓵 𝓈𝑜𝓂𝑒 𝓶𝓾𝓬𝓱 𝓯𝓻𝓸𝓶 𝒮𝑜𝓂𝑒 𝓀𝑒𝓅𝓉 𝖑𝖎𝖋𝖊 𝓓𝓮𝓼𝓴 𝑔𝑒𝓉𝓈 𝓕𝓻𝓸𝓶 𝑒𝓋𝑒𝓃 𝒲𝒽𝒶𝓉 𝒹𝒶𝓎𝓈 𝓂𝑒𝒶𝓁 𝓉𝒾𝓃𝓎 𝓉𝒽𝑒𝓎 𝓉𝒽𝑒𝓃 𝓦𝓱𝓪𝓽 𝖜𝖊𝖗𝖊 𝖒𝖔𝖉𝖊 ancientwisdom channelstatus 𝓷𝓸𝓽 𝒻𝑜𝓇 𝒷𝑒𝑔 𝒽𝒶𝒹 𝓃𝑜𝓉 𝒷𝓊𝓉 𝒸𝒶𝓃 𝒽𝑜𝓌 𝓱𝓸𝔀 𝓑𝓲𝓸 ancientcabin 𝒶𝓃𝒹 𝓶𝓪𝓷 𝓣𝓱𝓮 𝑜𝓃𝑒 𝖙𝖍𝖊 𝔀𝓱𝓸 δπcɸʃπt 𝖎𝖙𝖘 𝖋𝖔𝖗 fingerprints 𝖆𝖓𝖉 𝒾𝓉𝓈 𝓘𝓡𝓒 oddprotocol transparent uptimerobot ircstatsgrp generations cellspacing liveupdate background monitoring xy3wjtlq6v themselves throughout torproject mysterious bsdforall knowledge creatures unlimited creations continues different commenced associate providing stopping nofollow 𝖎𝖓 𝑜𝒻 𝓐𝓜 download 𝖔𝖋 acquired 𝓸𝓯 tableend clearnet wɸsdɵm 𝖙𝖔 𝓉𝑜 offtopic likewise universe contact div2end current browser evolves openbsd version gateway another webchat bgcolor provide div5end eggdrop network justify council podcast decades div1end getting install ff7f00 ircnow border _blank cellnr target 000000 attach divend mirror upload matter around portal should mailto people anyone pmwiki passed gained others better wealth stuffs ff3300 access rfloat https onion duels sites shell wheel admin users title class audio think click group width 300px means image apply those there today style align right inter nbsp team root help 2021 note have they ways many over from come what days eyes 21px size font flow text word our 174 org rel and mp3 god may png bio url via www pgp ssh 100 46 su 05 v3 by
+Prosody.RecentChanges:1696735023:  : recentchanges prosody install january 2023 mkf at 06 42 pm by
+Vnc.Vnc:1696735023: MacScreenSharing.Connect : macscreensharing simpletable emulation sortable download windows license android realvnc connect bridge viewer cygwin border https title width linux class with wine name ✓ web 100 irc com www ios
+Gotweb.RecentChanges:1696735023:  : recentchanges install january gotweb 2023 mkf at 07 pm by
+Openhttpd.CGI:1696735023:  : accordingly communicate configuring connection accessible references scriptname executable openhttpd interface directory 104857600 challenge yoursite username language location slowcgi already example scripts include content replace writing openbsd request fastcgi website compile printed between gateway browser consult htdocs enable server status simple domain return listen common blocks should ircnow screen create hello https chmod tasks pages still index using start world stdio haven rcctl about known strip this that body like acme will look port root edit well make used must sure note with puts doas html text type void home need want wiki bin are org and php tls the see man run var www but 200 max any add etc for by go if cd mv 80
+Openssl.Encryptfile:1696735023:  : encryptfile decryptfile recoverable compatible identical function username continue openssl version example profile warning changes without folder source bottom cancel abort usage enter echo read cvzf this xvzf type data ctrl aes cat cbc tar ssh 256 not the may tgz and add be 1
+Bots.Basicbot:1696735023: Category.Bots !Bots Category.Perl !Perl Bots.BasicbotWiki : congratulations authentication authenticated unfortunately documentation basicbotwiki storable2dbi dependencies programming installing catagories connecting executable pluggabot alt_nicks pluggable site_perl installed directory bassicbot addressed optimized mentioned something following available localhost lightblue addresses lightgrey starting username mymodule password metacpan building channels output10 commands conflict incoming firewall terminal anything security warnings factoids creating overview bigpresh connects hostname nslookup concepts darkgrey category overflow relevant packages probably complete response libdata modules infobot without another notices handles changes created foreach trigger bottest started limited easiest pluggin bgcolor padding running already traffic loading request details version upgrade lookups perform various account reasons useradd perldoc example network message private respond suggest produce finding though loader margin expect tracks ircnow define basics height strict memory google needed server config beyond should demand asking before recall simple assume system chanop return coffee allows yellow likely unload loaded thanks useful better class store block man3p while above reply print https movie lines izzyb black right mybot perl5 users title hello doesn white issue write karma parts chmod could point julia usage admin links coded names quite where based mkdir first quick final would going break might query vars very join this note also stop bots ctrl 6667 port wont 10em want your adds left more body will make save main auto lets well went deep list just seen from take help hard only man1 book that pbot much snip page good last doas tell sure used home next into post wait self told when who try dns own pod sub can new isn org how too vim was are bin usr fly get yet may msg lot cli cgi rej way app 5em has 1em its but pm if by qq qw wq 30 gz 01
+Duplicity.Usage:1696735023:  : duplicity username download example encrypt decrypt folder upload usage path sftp com and to
+Vmm.SlackwareIso:1696735023:  : slackwareiso signature integrity verifying installer download against import image guide https linux title ftp com the dvd gpg www vmm asc key pub md5 of 15 0
+Unix101.Vi:1696735023: Unix101.Unix101 Vi.Intro : introduction tutorial unix101 please title visit see
+Debate.Ircnowd:1696735023:  : inexperienced intuitively unrealircd administer needlessly motivation accidental permission confusing chanmodes delayjoin permitted different requires possible inspircd noinvite recently struggle elitists channels innocent services problems settings bouncers platform proxies express connect ircnowd happens because average complex example someone message chanops allowed kicking unusual hundred banning network manuals reading without social almost normal highly delays person higher speaks banned people exempt nokick ulines debate opers daily basis flags users their force until being title solve iline lined were only able spam they gave ways that want here days just also chat used then not ago our own but can few and are ips why too don of by z
+Freedom.Universal:1696735023:  : roman_spqr_banner competitors supporting disability background regardless protocols providing including universal committed wikipedia software economic serving running freedom obscure ircnow access should attach laurel matter nation users every title https rleft 300px form fair file from with open png org all old how may svg any we be
+Openbsd.Wesnothd:1696735023:  : whatcouldpossiblygowrong connections_allowed versions_accepted configuration installation redirecting afterwards opertions following generally arguments connected arugments interest wesnothd required limiting password strategy somebody without however default players options maximum clients kicking another between instead openbsd besides pkg_add fantasy related follows deamons change itself should passwd server global number enable remove please manual source middle second doing looks proxy these takes might start users which based relay setup guide admin going value flags rcctl 15000 12345 same game sets doas host port such work this used will like page your main turn more acts ones want also line and tag org for but are don any etc see key to of if 16 8
+Irc201.RecentChanges:1696735023:  : recentchanges suzerain february irc201 2022 27 at 04 21 am by
+Vi.Intro:1696735023:  : learning_the_vi_editor introduction occurrence wikibooks beginning character backwards arguments searching insertion switches filename starting previous movement examples sentence forwards combined resource position discards interact commands present changes deletes pasting editing cutting execute opening because without systems seventh current initial default faster moving cursor number escape allows buffer normal before second fourth copies saving moves paste opens press times title first after while thing hello third right words three https files blank saves exits enter modes modal used line from same will till like goes send next just text type cuts main does that home copy ways keys come most uses unix left good down user free can txt you etc but any org new has one two row are of up 3b fl dd 2w dw by yy yw wq cw 0
+Lilywhitebot.Install:1696735023:  : lilywhitebot redirect openbsd install status 301
+Ddos.RecentChanges:1696735023:  : recentchanges intro march ddos 2022 jrmu 24 at 04 pm by
+Doxing.RecentChanges:1696735023:  : recentchanges defense doxing march 2022 jrmu 05 at 08 54 pm by
+ISCABBS.ISCABBS:1696735023: ISCABBS.DownloadingAndInstalling : downloadingandinstalling iscabbs
+Debiankaios.RecentChanges:1696735023:  : recentchanges debiankaios april 2022 bio 01 at 05 10 pm by
+Openbsd.Upgrade70:1696735023:  : upgrade68 upgrade70 redirect openbsd to
+Vmm.Linux:1696735023:  : yvkispem7vkus5qfosqaeu connectivity installation fingerprint convenience brzkpyqmho networking afterwards interfaces statically background reinstall configure systemctl operating different hostname assigned shutdown outlined username loopback password console restart follows coconut address gateway running primary unpause openbsd default replace service account execute machine crontab netmask ensure escape serial enp0s2 alpine reboot create ircnow please forget inside debian access losing source mygate sha256 iface vmctl qcow2 there extra while usual right first linux below based found ecdsa given a0lir guest true this once ping away runs tmux well your vio0 done sbin note with inet stop type will auto from that then case make but ssh new usr 162 and log vps 20g any can vmm tyc key put 255 etc xxx dig set how up 87 ip i5 38 rm by
+Signify.Verify:1696735023:  : verification cryptography signature install71 verifies properly verified tampered download provides checksum message openbsd signify corrupt utility against checked verify public sha256 either failed signed easily other wrong https using files amd64 been with hand this will want mean that make sure list your base have lets org ftp key has may see iso etc man ok x
+Route.RecentChanges:1696735023:  : recentchanges february route usage 2023 mkf 06 at 38 pm by
+Team.Testing:1696735023: Openbsd.FilePermissions Openbsd.Shell Openbsd.Setuid : filepermissions maintenance simpletable malicious sortable accounts requires training software testing minimum servers consult openbsd ability network greater because freedom however contain setuid border giving guide class shell their users width will have more harm also team need own run 100 you to
+Buyvm.RecentChanges:1696735023:  : recentchanges buyvm april ipv6 2022 jrmu 24 at 06 10 am by
+Botnow.Install:1696735023: Category.Bots !Bots : requirements installation information hostnameif repository liberachat parameters configure ip6subnet openhttpd ip6prefix opensmtpd sendmail bouncers software download external undernet category detailed networks services cloning modules connect removed openbsd routing address summary provide liberty botnow ircnow gotweb system notice update static length chroot sqlite action please shells ircnet dalnet readme https index other added rizon efnet refer title clone 2001 wiki oftc file ipv6 list more make from used bots path help hash here git can you org dns tgz www bnc and db8 php znc nsd cgi new bin 64 by 48
+Codeforce.Training:1696735023: Perl101.Perl101 Password.Management Openssl.Encryptfile Cvs.Intro Cvs.Commit Cvs.Anoncvs Cvs.Cvsweb Got.Usage Got.Repo Got.Server Got.Mirror Gotweb.Install Openbsd.Books Unix.Reading : description simpletable encryptfile management minutemin scripting passwords codeforce bootcamp sortable training unlocks openssl prereqs control reading openbsd version anoncvs install provide perl101 commit cvsweb create lesson gotweb access mirror viewer secure server border books bonus about learn usage intro topic title repos files shell class width path more unix with only set 100 up
+Openbsd.Upgrade71:1696735023:  : upgrade68 upgrade71 redirect openbsd
+Pledge.Intro:1696735023:  : openbsd pledge learn about https intro more man org
+Unveil.Intro:1696735023:  : openbsd unveil learn about https intro more man org
+Iked.Linuxstrongswan:1696735023:  : linuxstrongswan distributions eap_identity leftsourceip rightsubnet keyexchange certificate available rightauth download leftauth username leftcert example install server1 rightid client config pubkey cacert debian ipsec using route ikev2 auto iked conn most from sudo edit file run crt are the org you apt get add for etc vpn 0
+Ircnow.Newdeal:1696735023:  : accessibility disabilities connections underserved accessible bandwidth wikimedia wikipedia possible internet hardware services platform children newdeal without commons browser digital support variety making widest fixing ircnow groups issues people divide upload races works years blind https cross thumb title 762px focus older need deaf help like that sure end the low jpg org web 67 to 10 of
+Netizen.Ellisisland:1696735023:  : ellisisland experience experiment government oppressed community encourage liberties blessings heritage internet language clueless freedoms yearning programs grateful western special nations invites liberty forward looking netizen network support compute newbies openly around ircnow spread attach source gained title world every earth truly users where would basic tired torch enjoy goal make this your join give poor self with rich like rest the its end all png non of by
+Orange.CertsReissue:1696735023:  : automatically certs_reissue certsreissue intermediate certificates challengedir alternative letsencrypt isrgrootx1 repository previously downloaded describes creation solution generate settings document example expired folders private section libexec crontab let’s isrg_x1 client domain relayd script create orange adding reload record names chmod https mkdir store local wheel about rcctl chown with acme this case exit wget task doas sign will from null date tree 2025 2035 use net ssl etc pem crt jun dev the usr sep key 400 gmt org www 700 var bin r3 sh 10 38 04 15 16 11 of fv we
+Heading.RecentChanges:1696735023:  : recentchanges subheading september zleap 2022 07 at 23 pm by
+LegalAmpSafety.Subheading:1696735023:  : legalampsafety considerations information departments electronics subheading governing chemicals important materials reference equipment countries enforcing executive depending suppliers probably disposal overview ordering properly handling hazards adhered charged consult kingdom provide united future health easily marked binder sheets risks found https items other these gives store their cards state index ideal along there which rules those where data must this also that well msds most will have with when laws your case each help can may hse www use are etc way usa own too uk be if of
+LegalAmpSafety.RecentChanges:1696735023:  : legalampsafety recentchanges subheading september zleap 2022 13 at 05 15 pm by
+Dehydrated.Configure:1696735023:  : contact_email challengetype certificates dependencies installation alpncertdir implemented domains_txt dehydrated everything repository relatively accountdir uncomment wellknown following directory lukas2511 listening exception installed configure examples handling lockfile actually register finishes signing encrypt request zerossl utility let’s keysize replace basedir support address running openssl related github system should accept client simple script almost mktemp adding server value m0644 being using added found start clone other after clear terms until setup m0755 entry https their mkdir httpd local grep same your acme from line doas said home like sans team curl wait done have with that sbin uses need only docs then hook side bash out can for per etc usr var are www any cd 80 of so
+Dehydrated.RecentChanges:1696735023:  : recentchanges dehydrated configure september akoizumi 2022 add 11 52 pm by
+Acmesh.Configure:1696735023:  : implementing installation certificates everything configure including arguments protocol official domains running options support command webroot setting script needed pretty acmesh github simple client email local setup issue shell https clone work more cron line doas sans just with then team home unix does pure much add usr for its job cd so no
+Acmesh.RecentChanges:1696735023:  : recentchanges configure september currently akoizumi acmesh added 2022 wip 03 pm 06 at 11 by
+LegalAndSafety.LegalAmpSafety:1696735023:  : legalandsafety legalampsafety content here
+LegalAndSafety.LegalAndSafety:1696735023:  : legalandsafety considerations information electronics departments chemicals equipment reference important governing suppliers enforcing depending countries executive shelllabs materials probably ordering properly disposal handling overview consult adhered provide charged hazards kingdom united health ircnow easily binder future sheets marked index found intro https other their cards items state risks along ideal store gives these there where rules those which your data when well will also this most must msds have with wiki laws help each that case use php can are org etc way hse own usa www too may be uk of if
+About.AboutUs:1696735023:  : contributions laboratories corporations independent experiences experiments discoveries undertaking generation brainstorm boundaries important shelllabs community including thinkers exchange develop science passion working aboutus amateur citizen people others pushed ircnow these learn based which intro major their great index ideas https help wiki home made been have past next lead also many each from php org own and can who not are for new of we by
+Rspamd.Configure:1696735023: Opensmtpd.Configure : configuration installation check_fcrdns check_rdns following configure opensmtpd authcheck mentioned dkimsign example pkg_add restart default however rspamd filter passwd leave after setup there rcctl cases line just your proc done exec with doas fine part also most use for pki com can is to
+Rspamd.RecentChanges:1696735023:  : recentchanges configure january rspamd 2023 mkf 03 at 04 55 pm by
+He.IPv6Certification:1696735023: Minutemin.Bootcamp : ipv6certification requirements proficient minutemin hurricane friendly services backbone bootcamp internet electric setting similar offers subset ircnow setup https title free sage time same both idea good that the may are you has to do be so
+Eggdrop.VHost:1696735023:  : vhosttcl eggdrop ircnow https index wiki see org php
+Eggdrop.BotZNC:1696735023:  : autoapproved following acomodate complete settings eggdrop scripts working network adduser request source rehash server zionel github botznc stepts clone https admin this file that edit load have your free chan with cmds help good luck conf are tcl now can the for cd if
+Debian.Install:1696735023:  : prerequisites configuration installation instructions understand configured understood following debianiso functions contents program already aspects various details article assumes reading ircnow notice before system should these guide quick files start index their https area this wiki only that have will into good you vnm org php vmm of
+Akkoma.Install:1696735023:  : redirect openbsd install akkoma
+Pleroma.Install:1696735023:  : redirect openbsd pleroma install status 301
+I2pd.Tunnels:1696735023:  : redirect tunnels i2pd
+Yonle.Bio:1696735023:  : redirect profiles yonle bio
+Yonle.RecentChanges:1696735023:  : recentchanges december yonle 2022 bio 13 at 05 18 pm by
+Splinter0616Outlook.Com:1696735023:  : splinter0616outlook com
+Dovecot.SharedFolders:1696735023:  : sharedfolders dovecot
+Splinter0616Outlook.RecentChanges:1696735023:  : splinter0616outlook recentchanges december 2022 com 25 at 37 am by
+Openbsd.Quota:1696735023:  : configuration allocating groupquota userquota options reached edquota openbsd amount quotas allows either change space until fstab doesn grace limit types disk hard into more them time then with soft per set are and etc add two wip
+NodeJS.Install:1696735023:  : redirect openbsd install nodejs status 301
+Bitlbee.Install:1696735023:  : redirect openbsd bitlbee install status 301
+Fics.RecentChanges:1696735023:  : recentchanges install 08t01 fics 2023 jrmu 11z 04 47 by
+Openbsd.Mosh:1696735023:  : troubleshooting installing additional firewalled usability computer features terminal username yourhost internet connect improve openbsd pkg_add similar command client server remote mobile scroll screen allow 60000 61000 users could range title meant mosh sure with over tmux from make that just used port tool like not udp can for the ssh run how is
+Hardware.RecentChanges:1696735023:  : recentchanges information importing hardware ethernet thanks 28t08 16t18 cinap 26t04 found 2023 this mkf 50z 37z ps2 psp new 15z by 03 44 01
+Stagit.RecentChanges:1696735023:  : recentchanges february install fossdev stagit 2023 26 at 05 24 pm by
+Openbsd.Cheatsheet:1696735023:  : dependencies uninstalling servicename pkg_delete sysupgrade restarting cheatsheet interface installed fw_update firmwares different otherhost receiving disabling searching groupname managing password stopping changing packages updating deleting enabling services username syspatch groupdel checking pkg_info autoconf ifconfig internet execute pkg_add certain usermod example without pkgname adduser openbsd oldname userdel newname disable getting network patches connect enable during making passwd output adding forget system mirror https rcctl files first users title shell class staff login down read also this doas want dhcp wipe list boot path args free re0 not you yes say any com non by of ml q
+Openbsd.Upgrade72:1696735023:  : upgrade68 upgrade72 redirect openbsd
+Bots.Botnow:1696735023:  : redirect botnow bots
+Eggdrop.Eggdrop:1696735023: Category.Bots !Bots : pagelist category related eggdrop group bots to
+Category.Eggdrop:1696735023:  : category eggdrop
+Category.Bots:1696735023:  : category bots
+WikiTips.GroupsTagsCategories:1696735023: WikiTips.GroupsTagsCategories PmWiki.PathVariables WikiTips.WikiGroups Category.Bots !Bots Category.Perl !Perl Category.Lua !Lua Category.Javascript !Javascript : groupstagscategories usingtagscategories categorisation documentation pathvariables organisation programming information definitions description wikigroups javascript convention directory generated following documents language wikitips progress provides addition produces category pagelist multiple accessed template special example purpose specify summary default naming define pmwiki markup broken around accept placed stored levels pages https there known first which farmd mytag doesn block their below this work like link perl have file then what bots with each want seem note hide auto into code more also them you may use can lua are two and irc one www of by
+Category.Javascript:1696735023:  : javascript category
+Category.Perl:1696735023:  : category perl
+Category.Lua:1696735023:  : category lua
+Hardware.Ethernet:1696735023:  : ethernet software hardware metadata between manages packets sending serial chksum middle normal things based clock other speed used gmii most mdio 1000 that like card line time dsp not and mac dma neg phy for etc is sw 0s 1s 45 rj it
+Tmux.Tmux:1696735023:  : additionally multiplexer connection tmuxinator management persistent operating happening subsystem microsoft terminal pagelist sessions software continue similar machine wrapper another windows install systems remote github allows called screen single inside assist create guide loose while watch doing group exist share https using learn byobu linux tools there users means help they what also both unix even this open that with will like your for and wsl www gnu org bsd run com can see be if
+Category.MetaAuthorAuthor:1696735023:  : metaauthorauthor category
+Category.MetaTitleTitle:1696735023:  : metatitletitle category
+Category.MetaKeywordsTag:1696735023:  : metakeywordstag category
+Ikiwiki.RecentChanges:1696735023:  : recentchanges ikiwiki install 07t22 2023 jrmu 44z 06 48 by
+Certbot.Nginx:1696735023:  : letsencrypt requirement appropriate server_name virtualhost installing domainname generating configure following automatic recommend selecting separated depending installed whenever generate writting expiring activate certbot domains options replace numbers python3 running crontab machine listen htdocs commas spaces plugin insert either saving finish cancel ubuntu debian change would names https which title block leave input blank shown enter nginx daily check until again press could asked debug edit your keep wait till make save will want need sudo only with done root have like var and ssl log for apt www etc key 30 by 80 we 1
+Psotnic.RecentChanges:1696735023:  : recentchanges psotnic install devune 22t16 2023 20z 05 03 by
+Openbsd.Xenodm:1696735023:  : configuration minimalistic configurable customizable installation motherboard reinstalled corporation connecting generation controller integrated sysupgrade connected secondary 1680x1050 processor initially interface upgraded xenocara firewall asterisk standard graphics provides xsetup_0 instruct computer directly original restart openbsd perform machine working created article manager session greeter asustek primary execute startup suffice follows leaving monitor display without xrandr choose xenodm modify output intent attach tested system fitted socket soddim reboot router server family really showed launch enable should errors until rcctl based intel files video which after could fully ports cisco 887va modem login ready hdmi user core 1150 ddr3 xorg from home nice some even this time when case part fork easy doas q87t ago was edp 4th lan lcd via can xdm x11 etc add inc two you way rev cpu ghz ram i3 06 be gb of 2
+Certbot.RecentChanges:1696735023:  : recentchanges certbot nginx 04t13 yonle 2023 54z 07 58 by
+Minutemin.Bootcamp-Draft:1696735023: Openbsd.Intro Doas.Configure Civics.Intro Syspatch.Syspatch Openbsd.Pkg Minutemin.Questions Freedom.Selfadmin Ngircd.Install Openbsd.Loginconf Ngircd.Loginconf Ngircd.Oper Netcat.Irc Netcat.Usage Openbsd.Rcctl Freedom.Fork Chroot.Intro Openhttpd.Configure Netcat.Http Telnet.Http Acme-client.Configure Openhttpd.Tls Openssl.Http Openbsd.Php Pmwiki.Install Openhttpd.Hosting Openbsd.Httpopenproxy Openhttpd.Perl Freedom.Firstamendment Ngircd.Ssl Ngircd.Link Hopm.Install Hopm.Telnet Anope.Install Atheme.Install Freedom.Software Znc.Chroot Relayd.Acceleration Znc.Relayd Relayd.TLSMulti Letsencrypt.Expired Freedom.Religion Tcpip.Overview IPv4.Overview IPv6.Overview IP.Myaddress Openbsd.Ping Openbsd.Dig Minutemin.Ifconfig Hostnameif.Static Route.Usage Freedom.Openforeveryone Pf.Guide Openbsd.Ddos Openbsd.Tcpdump Openbsd.SSDP Openbsd.ACKFlood Openbsd.RSTFlood Openbsd.UDPFlood Openbsd.Amplification Openbsd.PFStable Openbsd.PFTesting Openbsd.Pf Dns.Overview Unbound.Configure Dig.Usage Host.Usage Netizen.Become Netizen.Rights Dns.Records Dns.Registrars Dns.FQDN Nsd.Configure Dns.Zonefile Nsd.Zone Nsd.Masterslave DNS.RDNS DNS.Ipv4rDNS DNS.Ipv6rDNS Freedom.Unix Dns.Vhost Oidentd.Install Oidentd.ZNC Ambassador.Ilines Freedom.Federation Opensmtpd.Configure DNS.Mail DNS.SPF DNS.DKIM DNS.DMARC Netcat.SMTP Opensmtpd.Test Opensmtpd.Openrelay Dovecot.Install Openssl.Imap Squirrelmail.Install Mlmmj.Install Servers.Rights Minutemin.Code Openbsd.Botnow Bouncer.ZNC ZNC.Admin ZNC.Support Minutemin.Duty Cvs.Intro Cvs.Commit Cvs.Anoncvs Cvs.Cvsweb Got.Usage Got.Repo Got.Server Got.Mirror Gotweb.Install Minutemin.Server Openbsd.Dump Openrsync.Usage Openbsd.Fdisk Openbsd.Disklabel Openbsd.Newdisk Openbsd.Growfs Vmctl.Usage Vmm.Install Openbsd.Vmmlinux Openbsd.Install71 Openbsd.Upgrade71 Openbsd.Sysupgrade71 Hosting.Providers Openbsd.Bsdrd OpenBSD.ResetPassword Dhcpd.Configure Openbsd.Buyvm Vmm.Linux Freedom.Independence Ircnow.Constitution Freedom.Union Freedom.Privacy Freedom.Homestead Freedom.Madeonirc Freedom.Startupdream Freedom.Dueprocess Freedom.Checks Freedom.Rulebylaw Openbsd.Sftp Openbsd.Ports Ntpd.Configure Police.Intro Police.Fingerprints Team.Security Password.Management Openssl.Encryptfile Gnupg.Create Gpg.Verify Signify.Verify Openbsd.FilePermissions Iked.Configure Vpn.Vpn Tor.Torsocks Tor.Irc Tor.Hidden Openbsd.Sshd OpenSSH.Connect OpenSSH.Keygen Openbsd.Sshkeys Openbsd.Sshbackdoor Openbsd.Books Unix.Reading Ircnow.Dogfood Team.Welcome Team.Testing Ircnow.Networks Ircnow.Roadmap Team.Announce : responsibilities filepermissions openforeveryone firstamendment fingerprinting investigation automatically httpopenproxy amplification announcements miscellaneous resetpassword troubleshoot squirrelmail fingerprints startupdream independence constitution sysupgrade71 applications certificates acceleration introduction description declaration recommended sshbackdoor masterslave letsencrypt encryptfile simpletable dueprocess hostnameif understand nameserver management networking dogfooding registrars blacklists techniques installing federation connection ambassador minutemin partition openhttpd disklabel configure criminals openrsync religious opensmtpd passwords install71 signature pftesting providers webserver hostmasks openrelay myaddress madeonirc loginconf homestead jumpstart questions rulebylaw procedure anonymous selfadmin overview networks security udpflood ackflood firewall bootcamp torsocks rstflood securely software downtime services insecure syspatch ifconfig religion ipv4rdns vmmlinux ipv6rdns generate zonefile multiple webpanel commands sortable tlsmulti pfstable increase phishing packages webpages stopping bouncers chrooted balances spammers netizen records roadmap reading prereqs openbsd freedom control support virtual channel further hosting version privacy unbound caching servers backups welcome anoncvs oidentd openssl prevent abusers sending dovecot request signify proxies clients reverse openssh newdisk sshkeys domains webmail mailing machine expired removed traffic classes liberty monitor chroots tcpdump against attacks defense packets updates execute closing private lesson civics checks growfs telnet rights cvsweb netcat botnow gotweb recite shells mirror access police choose create ngircd repair border ircnow system verify keygen hidden united commit limits pmwiki basics custom atheme origin vhosts relayd static filter lookup sample defend become letter report folder detect inside ilines higher speech topic ports learn leaks claim guide usage vmctl fdisk books mlmmj gnupg dhcpd email bsdrd tcpip draft anope cloak union ipsec route buyvm files rcctl avoid dmarc title press clone setup local types using honor about repos ethic paths width block imap with unix your link fqdn dkim iked what vpns perl from team plan hopm ssdp oper fork acme doas ddos sshd code bill only duty sftp hard ntpd good tree spf znc 100 php pkg how gpg ban dig nsd vps fix pgp git
+C.Cprimer:1696735023:  : contribution mainrechner hackepedia fantastic mirrored cprimer philipp attach thanks https peter find also can org pdf the for his you de v2 to j
+Hw.X230:1696735023:  : documentation motherboards repairablity upgradablity consumption differences generations resolutions nitrocaster retrofitted performance originally unverified connectors controller processors compatible introduced thinklight meaningful batteries mentioned revisions keyboards thinkpads different including backlight available bluetooth indicator expensive following otherwise graphical powerful possible firmware displays variants replaced varients upgraded slightly compared includes replaces supports earliest graphics features describe internal shipped renesas charger nothing largely between appears totally classic however version removed differs regular capable battery usually various chassis achieve bulkier praised exactly pentium celeron vanilla symbols removes series people rarely likely vulkan better packed modded lenovo single native higher custom easier models rather harder market unlike images vendor inside hd4000 hd3000 offers opengl faster bridge famous amount laptop quirks random should tablet either easily weaker common mostly screen issues suffer slower square based might newer color stock which named these there older minor cable known worse speed seems three temps notes while doesn sandy share makes sound avoid proto touch intel names often basic flash bunch x230t store games works x230s first x230i boots beast same lock have uses they into this dark with only gray swap tiny made mini rest palm lack x220 chip bios some that much caps were also egpu 16gb from than call more x235 used x330 lvds what 51nb ones find x225 mods cpus easy want very x240 both type but box out two fix 3rd you can etc bug led way usb row ivy set try non aka web any mic 01 hw by 12 10 i5 i7 i3 8t 4c dp 50 13
+Hw.RecentChanges:1696735023:  : recentchanges 15t12 x230 2023 43z mkf hw 08 46 by
+Openbsd.Hopm-NowWithInit:1696735023:  : does_hopm_release_exist irc_hopm_autorestart professionally localstatedir daemon_flags blockinfile logrotation replacement nowwithinit daemon_user become_user openbsd_pkg contributer remote_src dependency writeable newsyslog unarchive currently configure reloading something aparently prequsits importent template secondly subtitle download packages readable yourself cleaning almanack register probably password seperate unknown located service modules version getting install include ansible execute crashes get_url without account nologin crontab comment program homedir startup because content section notify scared relase delete _will_ builds should minute exists github things theres hybrid bindir source ensure prefix insert ircnow create quoted _need_ latest rc_cmd warned future unless reason intact quotes better sanity absent going named shell until fancy maybe https owner wheel pkill takes while debug smart roots rcctl group guide weird gmake check first chdir touch could chose might sorry list item path copy soon usr1 want long this just dest scan sbin mode when loop code true must devs like ircd tags gtar vars refs that keep jrmu wiki good well full have give page note task lazy bugs blob subr work etc ksh 644 for add put how job don ehh run pid 755 100 old and org 464 has see ok j2 tm by my gz 3
+Unbound.DNSSEC:1696732333:  : compatibility verification connectivity datatracker maintaining resolution forwarding aggressive validation extensions functional signature commented configure otherwise following somewhere attempts dnscheck contains sections security building operates internet _unbound contents securely backward controld settings resolver possible tutorial required whenever mitigate practice restart address ideally enabled another failure details lookups present anchors openbsd handled invalid rfc9364 machine helpful assumes rfc3833 however support attacks because working queries current initial deleted badsig dnssec domain failed reload notice server absent crypto should reduce output option verify onward ensure github points create system tools https chain trust fails quad9 files known bogus entry break stuff while rcctl block iana test a880 html doas 2620 host with your 2606 this ietf each that from mail 256e root 2604 have auto zone must been nsec ipv6 b001 also 1a40 aaaa safe name free more uses best used keys org man can 112 149 may doc has var get etc new yes 142 179 www see 400 db of 10 76 go by d0 mx
+Tor.Hidden-Draft:1696377804:  : hiddenserviceport hiddenservicedir configuration installation permissions runasdaemon hostname undernet required address pkg_add editor enable simply rcctl ports onion going links owned start using where files since draft exist torrc path want make with just more this doas user then will sure time _tor same any can you has and get for cat etc 127 now 700 set who be 99 by of
+Dns.TroubleshootingDNS:1696314188:  : troubleshootingdns
+Ngircd.Loginconf:1695393606: Openbsd.Loginconf Openbsd.Vipw Grep.Usage Team.Announce : prerequisites configuration connections temporarily descriptors accomodate configured restarting disconnect beginning loginconf processes lockedmem unlimited openfiles stacksize necessary correctly resources otherwise increased recreate coredump services hundreds displays infinity checking 33554432 database announce searches _ngircd openbsd maxproc nologin account warning advance seconds network confirm usermod default changes changed special nofiles current restore signal master kbytes passwd delete edited exists logout server memory effect editor before begins should limits called ulimit blocks 985092 daemon spaces append result parsed 329478 expect usage 32768 https users cause class press apply error using field shell rcctl order title guide extra with 8192 that will page ctrl doas they need been have your 512m next 1310 chsh 4096 tabs what this time sbin line vipw man5 make sure team grep text name read must take also note and can now org may new are etc cut has get won var 703 5th cpu ksh znc if we db
+WikiTips.RecentChanges:1694578392:  : groupstagscategories wikiformatting recentchanges wikigroups cookbooks wikitips markdown intermap sources markup izzyb other links using 22t04 19t04 22t05 added 22t06 notes 22t16 04t21 2023 data 30z 20z 45z 14z 04z 21z 01z by on to 41 11 12 27
+Openbsd.Hopm-NowWithInit-Draft:1694455984:  : professionally localstatedir daemon_flags nowwithinit daemon_user replacement configure reloading aparently something yourself almanack secondly subtitle cleaning execute located content homedir program without install openbsd include section prefix _will_ intact ircnow ensure theres warned bindir create unless insert github hybrid builds things better rc_cmd _hopm weird write could until first might debug chose sorry https draft going named fancy guide maybe have blob this ircd jrmu subr mode root read that file kill must want work page give wiki full keep know well end add and can new etc org old ksh var ehh see don how but put usr 100 not com per run has up to ok my
+9.9pideas:1693767523: 9.FNS : simultaneously documentation cinap_lenrek architecture distributed directories responsible development dynamically everything mouseclick filesystem generation developers redundancy postscript automatic snapshots universal generated terminals different hierarchy publisher troffdown hyperlink binaries markdown torrents handling internet software compiler articles research possible archives archival anywhere hardware offline spanish backups chinese waiting imagine perhaps suspect 9pideas english content written journal ideally machine because applied wayback network felloff stores giving really reader papers server remote easily single should execfs layout engine mostly custom ircnow browse enable remove source french making could speed dumps views paths would these 9fork books users cross since three pages takes daily texts world gives among avoid fault make boot http from cwfs then zero with dumb like this over blog also lisp dies what some pmfs that need been have just grid does 0829 base free html pull 2023 poor nice both fns web can lua via let p9p lab not man may new usr drm tgz old see cgi had its by go
+9.9gridchan:1693721785:  : 9gridchan plan9port gridchat username possible replace command pkg_add install cloud9p openbsd connect either libixp github while works guest ifend 9fans false https hubfs write file tail with does note echo just doas done date read your unix from 9fs tcp 900 → cat sed org run srv now io so is to hh 1s
+9.Acmemail:1693591518:  : acmemail execute plumber capital window attach plan9 send upas then see tag png to fs on 1
+9.Account:1693588191:  : account what here do i 9
+9.Date:1693575965:  : timezone timesync yourzone effect reboot change local takes clock pool date upon adm aux the ntp org to cp 9
+9.Shell:1693162353:  : changeuser personally important password username connects sposoner programs address console newuser inferno account mailbox assign allows unless return secret create better enable shell these keyfs group email makes local fill easy some auth need them same exit plan rest ctrl cron upas adds cwfs asks your this have cmd and srv for don but pop to 9 q
+9.Why9:1692983716: Ircnow.Explorer : wayland_on_openbsd openbsdfoundation unfortunately independently distributions contributions specifically alternatives particularly applications organization touchscreens contributors transparency corporations significant effectively development environment distributed immediately understand javascript minimalist connecting components integrated encouraged philosophy principles popularize interested contribute developers controlled influences democratic preserving windowing interests ecosystem sanctions corporate political conflicts cathedral trackpads community improving difficult retaining potential microsoft developed operating hostility disparate computing statement signatory stallmans extension interface technical dangerous federated including provides petition existing maintain included together networks concerns tailored becoming software complete writings explorer projects language internet xenocara secondly phoronix presents outreach isolated moreover replaces equality unlikely obsolete teletype hardware toolkits preserve upstream majority friendly learning tolerate terminal powerful receives because elegant towards richard smaller freedom success boycott logical systems program russian reasons heavily efforts besides funding diverse sources succeed systemd harmful adopted usually complex general achieve written example average newbies simpler treated support novices install distros welcome insular inter9 suffer accept ircnow bazaar inside itself kernel method ensure donors google affect python offers unable return follow chosen github letter design called editor helped propel parent merely needed modify easier models highly impact redhat https linux which first users needs ready build lower these curve allow stmac every today rapid makes level still avoid their ideas goals emacs while heavy title about would board vowed total match large been have made both that html plan code from does most will news unix used such many rust catb good meta this guis with mice base task fits 2022 into much also than acme text why9 blog easy risk 100x size best they upon fork may not ibm lua top www run own rio far due tui has gnu esr fsf few rms add by 61
+9.9gridchan-Draft:1692940665:  : plan9port 9gridchan gridchat username cloud9p openbsd replace command install pkg_add connect github either libixp while guest 9fans https ifend write works false draft from read unix date just doas echo done your with org run tcp 900 9fs sed → srv now cat hh io 1s to
+9.Splinternet:1692844290:  : accountability untrustworthy contractually fundamentally rubberstamped discriminate corporations applications increasingly insufficient identifiable splinternet authorities blacklisted effectively participate implemented distributed centralized certificate residential termination bleepstatic alternative impossible protection government controlled addressing themselves networking foundation complexity everywhere boundaries increases standards protocols expensive licensing obstacles community malicious operating addresses political parallels geolocate resembles important forbidden firewalls suffering pinciples difficult properly finishes becoming topology chilling designed formerly infected learning released proposal national browsers uniquely software reviving succeeds commerce official regulate machines however provide library drafted upfront capital seizure dynamic grounds systems servers average hosting trusted assumes default against history version attacks creates arpanet serious silicon achieve becomes privacy edition closing support effects example between freedom speech entire offers closed domain employ broken google equals future russia longer public bodies begins during likely inter9 agents proven should almost source caught single seized images second notice strict valley faces curve users roots stack world right first there birth taken takes being linux minix 1980s sixth their sites https names often email title peers today these order major begun along costs would china open unix make used 1970 risk isps dead 1976 live rdns this high born code with away they 1990 2000 2024 1975 race have 1985 that more 1993 many 1969 news when puts from zero home self easy foss ipv6 ipv4 dual quic ddos drm has too web its non one wei own bbn tcp now may gnu w3c nsf old try bsd can set ips irc aim get was jpg www by
+9.PKI:1692820066: 9.FNS : infrastructure certificates engineering importantly centralized directories authorities signatures complaints authority subdomain therefore difficult necessary hierarchy actually familiar connects document seamless imported designed directly required cloud9p freeirc example imports control suppose request becomes entries abusive clients instead blindly reading replace because servers forking inter9 single revoke relies ircnow before verify public choose result local trust signs chain users would power abuse deter gives title which force joins this with from root more must when over uses have path each then task only know jrmu they such list pki new fns key are one don 200 not can and its end of
+9.IP:1692749534:  : modifications encapsulating encapsulated coordinating splinternets applications indirection predictable communicate unnecessary controlling alternative translation fundamental documented assumption controlled autonomous censorship networking collisions government complexity convoluted multimedia authority ownership firewalls switching addresses advantage bandwidth community optimized basically resorting developed virtually translate software suitable approach multiple location parallel existing involves networks identity scenario benefits assigned national messages familiar censored separate obscured globally because latency central overlay prevent evading methods nations routing problem foreign example between ability packets becomes gateway without traffic reverse likely design easily around reused unlike should highly proper inside slight single agency entire longer unique system powers static world there would icann which space relay extra layer order ipsec since given begin other focus words hosts nodes major users makes allow heavy leave under their truly claim taken place route this will they also ipv6 from home need does each join fccf that form have hold true them ipv4 made only free 2602 more well such vpns best lack end tor not one top dns by 32 up 1 9
+9.Rcpu:1692638514:  : watermelon authdom cloud9p connect newuser ircnow create local rcpu echo lib old sys org the 185 213 ndb 244 104 ip to wm 78 61 45
+Ircnow.SSHFingerprints-Draft:1692415520: Ssh.Fingerprints : tfgntqeynkisu0cphmezrlbkyvuylnnf9quakpijrau 7hoecsk19dhgwktajo4w6zq6sdexcafhphskkkl0thi uby6gdxg5v5ih4hmlbxphf2glud2x829mupvr0w0zz4 liewh1okkm1yw3g4r096dpizln8q7gaskg5iqpayhv0 ojyr1dxjsbbsnopbfgk4ij0blzh0uhvdfnq9gro7ove racc0elsrvgziz6lpkssjm15wqe9cfxg4x5a3nauiw0 qcvqbfidaonla4my8cuipyacb7uwltu3acii22uakra 2jjkseg5jkaajbpmtrmpof1ltrm4ve5ec7ylk9r2qqq b8eg6kph0enoa80gzrsywdpbfittqkcqpa5zllytnso tcfbfmpbmi1pcoxk6o804onoibp1ttyimkvlu8oczlo otvy6dm7ulr5x9jzi40328wowpa3arplkxnt65ipy1y teetiunbcvvvbjlkfnygbixhgeugde9j4g776npf4f4 0nthlt6mphsrone5e3flpc11v7k8hmalltkbqvyqlmg suo14qmmadftez9dzgybhfrnyp9crees5mrvvr6e0t8 aylqje6ha3nmgrintnjnxibzhgdsuz8e7vn0ldyruu jzx9b2se4ywg4ggz7ra3xxfjoktbbpupa42d5ujfe vgpgna4x0itdsjwpoaet3atmlok3p5wiuw2aren1 mz0kuriqsfwecnnmk0wme8nzqjbimslwjo4jmqol e76wvwwiu04s1q1c4bmklmzoqxzgu9ocjipje4 qpsl7ssqvsoarxnngcy5q4sfggfnabynzxzxq6 xxbmizlxi8kzel2souqdituy7c7b4dnzgfgi fnu7cx1gxdjexnnasnr5qw6b3nkwtyrbti ctvil0e5ptzfepqpvdlhb2mwrdpd43u zkfhl6nsicctw3ialn0rizvhcqwgwz mmmmkyjstnpsagvrr4mjsmtryqtmka uatquna8fodjrwtvmmxhzuzctfe24 ekjnt1jv3j8mkvfmo0l74jpcszqbj ltfywjtipwidt7rcyehdhoa27bbi razh8bpyvql51zcjfetdj8nzpjdq wdlnjmegxyc48v17w2jwgsbe72n ohv2fwpi2slhmx7utwgztphvcm m6sd5iyyj5m1g7zdcfvhbrzceq cq3bwexnzb0jvp2d81ap5g6w4 p7xioqivc9yzcjjtbbxhv0jik j2oamwh2cijoytmzmm8lrzk8 lhgu5f5ricf0zkpxjfn0d35q josyydyqrdi73orklzzhsq4 1agi3m2ylukchgmq3smx8ro irk4xb2ifdh8ytyau7kzhe yvkispem7vkus5qfosqaeu eoijonzghehehebuz2rh5 pcrs5dyrlypqie2dr1ny gxouboedsfjsd2vppgkz 5c56w2nemoqpuo2ylpf vhhkuqlvglxmthejw4 dlivmtx59tkwk2vkrl zyfgglplswjxqrciro 6yomu8o4sd6hinqeg xsypllxosrbz5oud4 ouasfdx7zs1z0a3gf ipou7txy1ze7nwi2 sshfingerprints xa3bli6dg8gfjc pyizqb1xcspzy xjjoxm0l7rhsy vczu9pdkxcaui 1naq6awekowzy gfvleh6ia9vsm rl2kxocobj66 uksrbun2pslg planetofnix 3n5gv2a4k0w 6yrmnjlqzxx 64cvn0vglcd iobrvzxz89e oddprotocol xdijhgra3n brzkpyqmho npwmt4hzq1 inspirenet m4uuoqemlv shelltalk nastycode bsdforall f0lvco0jw inu8cdezw eigwxhwf v6gs4o9j syoualj8 wyvsesor tzx3l4wu warning hcm5ce1 ed25519 connect freeirc servers qkxov5n hx5f8yn cboskt4 sha256 ircnow verify unique gj6all before ecdsa a0lir title draft wqriq every match 1024 3072 host root eu1m p3sa 7cd3 evpp need from user iqwc here rsa 7pr md5 org com not 2ac 01 45 39 d0 00 13 a7 b6 44 46 8a d7 69 86 2b 90 fa 7a 98 94 d1 6f 54 78 b9 f6 37 d9 08 3d c3 18 4a 68 20 61 9a 41 87 3c 85 c6 63 0f 8d b5 12 a6 f7 23 58 db c8 2e 50 bd 70 26 a1 31 6c 57 36 75 do ea 9f 53 33 4e 05 06 5b 52 67 c2 84 ba fc 7f 21 79 16 88 7d 3e 60 62 93 34 1e 97 1b 91 95 f3 ff 1f 71 99 92
+9C.RecentChanges:1692140558:  : recentchanges intro 15t22 2023 20z mkf 9c 08 57 by
+9C.Intro:1692140240:  : introduction programming hello_world architect dependent functions numerical compiler includes included returned suggests congrats standard programs noticed largely however already machine instead depends written example dialect consult objtype regular uintptr rather called define differ strlen loader likely string errors manual printf should errstr header values first basic stuff ifend table other bunch which false means there needs write later amd64 title based files apart often plain types into what each body know also this does libc will with main plan than void used when take that your page mine echo todo have same they most well many some rune hand data such name done ansi 386 yes old may for see are non has let out aka get add arm etc by 9c 6c 5c 8c 2c 8l be
+9.Reading:1691980666:  : 1088462006isbn 099924910xisbn 0128122757isbn 9781088462003 9780999249109 independently 9780128122754 architecture organization strawberry patterson published interface hennessy software kaufmann computer assembly language waterman hardware edition reading anthony series andrew canyon morgan design reader david atlas 2017 risc open john 2019 reis the dos by 13
+Shelllabs.Reading-Draft:1691424025:  : patrick_collison_s_book_shelf characterization musicmindmeaning interpretation transformation correspondence thermodynamics and elisabeth mathematically mathematician autobiography superorganism peloponnesian philosophical individualism confederation civilizations 9780521277037 understanding communication radioactivity computational personalities consequences constitution micrographia pennsylvania attenborough biographical independence transposable schrödinger fundamentals observations differential experimental civilisation permaculture disobedience montesquieu electricity meditations anniversary tocqueville masterpiece cybernetics machiavelli revolutions perceptrons buckminster greenberger continental plantations reflections mathematics description declaration variational strangeness engineering electronics thereabouts experiments gettysburg experience schumacher meriwether relativity concerning 1590560402 prosperous copernicus discipline philosophy schumpeter principles heisenberg mismeasure washington huntington government mandelbrot federalist mcclintock everything thucydides discourses capitalism democritus copernican scientific psychology provincial innovation crevecoeur connection functional refinement feyerabend hofstadter biomimicry selections holldobler employment archimedes cathedrals analytical protestant disbanding frédéric researches 0070108986 marinovich continents integrated collective civilizing christiaan societies essential varieties mayflower scientist computing suetonius sociology chemistry rivalries governors mirabilis histories eddington hardcover friedrich religious structure education galbraith bronowski documents discovery universal expanding herodotus democracy thorstein novanglus economics molecular political influence frederick loadstone aristotle cornelius beautiful shoemaker radiotron gustafson mechanics institute inaugural nonlinear montaigne dialogues lightning lavoisier computers whitehead socialism hiroshima roosevelt jefferson wohlleben classical communist manifesto knowledge wonderful treatises descartes leviathan collected goodreads paperback proposals alexander promoting americans designers engelbart ourselves shelllabs bertrand chapters inspired virginia voltaire circular johannes niccolò franklin lederman thoughts aurellem secondat elements frontier vesalius cousteau benjamin literacy infinite machines foucault boosting sketches journals affluent aurelius vannevar gorillas friedman geometry hemenway mattered december movement conquest handbook theodore rothbard humboldt birkhoff patriots circuits saunders baptiste analysis castillo approach immanuel aaronson nicolaus heavenly richness clinical physical magnetic legendre mollison critique harmonic plutarch xenophon masanobu smolenck horowitz lovelock farewell huizinga einstein interest elegance relating november lectures contract infinity mycelium rousseau military hoffmann opinions business universe carnegie congress republic articles classics founding sessions sciences marshall writings edition lincoln reading hiltzik wegener address charles michael network abraham francis desoler stephen chapman bastiat pillars william antoine eiseley greeley mistook dealers schultz laurent huygens bernard feynman galilei general galileo fourier faraday lanczos species sussman postman animals morison letters amusing orality richard malthus dawkins against douglas decline stamets leisure running apology maynard nebulae selfish jacques medawar history british nkrumah georges stewart robbins herbert courant account shannon balance mandela fractal thoreau captain eternal physics russell hamming ecology barrett spheres gilbert systems society tacitus volumes norbert process polanyi algebra garrett origins century maclane ptolemy alberts biology pauling fathers jackson kenneth andreas economy harmony accents enquiry sharing lantern freedom liberty charter citizen updated mumford english western nations audubon fukuoka slavery serfdom inquiry hershey wounded special barbara penrose roberts feeling pilgrim caesars ricardo compact outlook natural friends erasmus quantum emperor stanley planck engels malone rights limits veblen ascent united cities carson states rachel spring hidden watson walter edward gibbon julian seneca jacobs papers milton around anyone europe ronald modern fisher joseph method fabric fuller alfred author silent useful nature theory fossey stuart voyage essays jevons alexis atomic benoit newton nelson optics werner escher cosmic golden hubble 144828 spirit claude ludwig murray cuvier edmund france pieces menger garvey arthur double marcus thomas orwell common dudley advice coffey booker euclid enrico growth keynes autumn empire middle wilson insect beauty kepler janine motion marvin michel prison editor pascal harvey hobbes punish beagle blaise school eyquem people oliver reason minsky worlds livius cosmos prince quarks masses beings darwin wiener revolt ortega cooper gasset action garden popper asimov martin future howard elting storrs divine julius horace flying gallic walden wealth analog steady carver bernal gandhi causes annals survey samuel strunk reform herman praise benyus oceans turner eugene farmer making manual bodies heart brown since other henry david times guide sagan lives adams order https scope north human silva mises might death lewis media where error helix great scott hardy steps hayek clark kwame notes draft money among plato james peace díaz meyer sense clear later youth tales teach paine would style sacks burke locke dewey folly trade taxes press study first baron xerox roman birth books weber spain clash gould seven ethic smith panda realm ideas edwin thumb fermi annus roger titus young bruce score chief elias three gamow brief truth straw erwin stoic small niels trees logic braid isaac godel scale curie hooke marie think loren linus rené roald bacon doing drake blood 1665 gaia html half jean john riis mill todd road body hume life from 1983 dian 1543 bury knee with bill parc isbn marx karl dawn leon hill dale bush toby unum home odum 30th last kuhn down wars rome livy want 1897 chen fall 1985 2004 heat more muir daly grey chua ones 1776 belt 1979 1986 same plea wind kant pure gary bohr laws 1944 wife 1845 neil what 1859 show 1947 21st deep arts ages 1971 true army bach 1973 cell rene jane bang club easy greg joao carl 1814 made that www who sun 3rd max tzu see jay sir six qed big – 2nd abc yan rca 4th dna crc jr 23 qm
+Netcat.Irc:1691372238:  : troubleshooting functionality registration verification successfully specifically connections certificate connecting configured challenged completing networking 1597224404 1597224116 determine displayed establish something presented encrypted following correctly connected beginning succeeded extremely entering commands identify yourself provides hostname s_client channels networks properly mitigate continue nickserv sysadmin password messages valuable followed diagnose spambots received normally quitting newnick openssl example privmsg replies respond newuser however seconds attempt address details because parting joining writing warning showing sending netcat server should ircnow method record entire either appear prompt coming before signon errors typing cookie ignore format world vhost hello whois check above which means modes using reply shows other title types below often blank 12345 token drone knife swiss gline shown still 2001 this 0db8 f117 6697 3a85 2f18 11eb case list were 2562 used 9812 b8fa from f8fb with will pong like done step 6667 when that nice rdns aaaa test ipv6 code root then motd ctrl just army look need tool help same time idle once ipv4 bind was 317 318 org see not can are 379 but any mom 311 312 378 396 day has 86 up by b4
+Linux.Reading-Draft:1691347665:  : dbs_a_def_rwt_bibl_vppi_i1 pd_rhf_dp_s_all_spx_wp_26 olp_aod_redir_impl1 implementation cory_doctorow_ communications interpretation democratizing krishnamurthi 9780143122791 revolutionary introduction organization professional interprocess transactions invisibility bibliography contribution illustrated engineering environment programming controlling foundations innovation 1695978552 1732265172 0596001088 0201633469 1695978553 1732265178 0262062183 0201634952 0201633467 0201634953 0596001087 0131103628 0738206709 accidental 0201563177 0321486813 0887309895 0131429017 0887309892 0130810819 mediactive 0130810816 0131429019 0143122797 principles 0139498763 0139498761 0316037723 0738206707 1449389550 0066620732 0316037729 1882114986 1732265110 1882114981 1449389554 0201657880 commentary 0201657883 peerconomy 0201633542 020163354x weinberger 0132017997 0132017992 adventures electrical 0139376818 0262062186 0201549794 1953953166 0262510871 0262510875 0201549799 0979034237 structured 0201615869 conscience 1732265119 020161586x 0321486811 0131103627 097903423x techniques 013937681x 1573980135 literature liberating 1573980137 1953953162 publisher september craphound hardcover kernighan knowledge paperback computing tanenbaum protocols operating lightning manifesto freesouls deception compilers cathedral felleisen scholarly download internet foreword lawrence selected practice february pd_sim_2 business torvalds computer learning mitchell prentice jonathan language writings november zittrain networks annabook stallman matthias software laurence evhippel computng pd_sbs_2 printing services exchange security mt_other programs journals mitpress gillmore advanced painters _content hiltzik hamming edition default wizards pearson maurice teaches richard mitnick billion silicon element penguin dealers october wozniak michael william ritchie brother robbins hackers raymond machine diamond gertner musings jeffrey addison reprint factory january culture product history society origins waldrop english kembrew 20775th findler shriram economy bentley 9304042 matthew benkler unbound stevens 5900491 0098268 2633296 reading hafner wesley author wayner wright design second alfred owning heroes source ullman august domain famous essays access volume robert amazon bazaar democ1 lessig sr_1_5 joshua dennis pearls prints system reilly series daemon memoir yupnet stripe future kidder arnold dollar wanted valley jeremy codev2 fourth harper wealth yochai graham victor monica malone simon files world linux score sites pages index kevin https tools sethi march human april peter salus ideas draft lions brian suber xerox books first doing flatt shell tracy dream linus david remix where bruce taoup ghost rebel wires xhtml moody basic katie 2006 isbn most 2001 1988 2018 htdp ravi july 2002 1999 2021 2012 from paul june 2010 with unix pike 1983 hall stop john open 2013 asin bret labs bell korn 2020 just 1994 parc 1995 nntp 1174 gary erik text 1996 4bsd 1992 1998 1990 node 1977 data 2019 catb eric safe bach 2003 2008 reed 1986 sicp late stay glyn 2000 levy dawn and may art – web www pdf new von how edu 2nd 1st you joi ito esr big dan fun aho awk gnu 6th 241 ref tcp 580 328 576 400 bay gay lam by gp
+Netcat.Irc-Draft:1691291485:  : troubleshooting identification functionality registration verification specifically successfully connections certificate 1597224116 connecting configured challenged networking completing 1597224404 establish determine connected beginning something displayed presented following encrypted succeeded extremely correctly nickserv identify properly s_client followed received messages valuable continue entering diagnose commands hostname provides password channels yourself sysadmin networks newnick address example openssl newuser exactly warning attempt because respond replies writing parting details joining sending quiting privmsg seconds showing ircnow signon server errors netcat appear should either entire method record prompt ignore coming before typing format whois means modes which using world above hello check vhost shows reply title draft below 12345 blank knife swiss gline drone token shown still other often aaaa from rdns need case when done that this pong like 6697 with 2f18 ever 2562 2001 0db8 9812 b8fa f117 11eb will 3a85 nice time list were idle step once type 6667 f8fb ipv6 code root same then ctrl motd just army look tool help test bind ipv4 any not mom org can 317 was 379 318 312 but see are 311 378 396 day has 86 by up b4
+Openbsd.Sysupgrade71:1690488583: Openbsd.Dump Openbsd.Restore Openrsync.Usage Openbsd.Cu VPS.Intro Openbsd.Buyvm Openbsd.Top Openbsd.Syspatch : congratulations automatically configuration sysupgrade71 installation successfully information proactively processorup substitute installing performing associated particular operating reporting succeeded 41freeirc processes signature reproduce rebooting php74_fpm switching powerdown completes relinking openrsync completed fw_update partition connected firmware sysmerge enclosed stopping username fetching location shutdown syspatch download verified detected messages averages progress packages restore openbsd running pkg_add patches syncing dovecot updated console loading probing xserv71 address include generic example sendbug version reports problem utility reading daemons welcome serial device making number system amount should vmmci0 memory access sha256 proper exists kernel 115200 secure before please recent base71 cannot begins enough unique ensure latest create login ttyp9 amd64 disks tty00 speed using cores buyvm intro usage after error files https 2288m cache 1775m 1023m check drive uname known added nodes 20117 3070m vmctl title 43495 guide first above quick your with unix like most bugs beta code dump says that need well doas html back make will done sets been this able last 2022 from type some host 189m 392m swap 993m note want then real idle find have none cpu0 nice spin cpu1 days kept view once 2144 com0 638k tgz hd0 hd1 fix a20 100 org 137 443 pub ram and faq ftp see 217 216 pc0 any man may vps tot www 330 172 apr mdt vnc jun sun try has ssh cd0 nfs of 67 55 kb 09 46 57 48 61 66 53 19
+Profiles.Yonle:1689606537: Openbsd.Honk Openbsd.Icecast Openbsd.Akkoma Openbsd.Pleroma Openbsd.I2Pd I2Pd.Tunnels Openbsd.Cheatsheet : 347a2370900d19b4e4756221594e8bda706ae5c785de09e59e4605f91a03f49c npub1x3azxuysp5vmfer4vgs4jn5tmfcx4ew8sh0qnev7gczljxsr7jwqa3g4el reconstructed broadcasting repositories succesfully conflicting programmer cheatsheet conference yonlecoder especially lecturify currently wikipedia indonesia scrolling fediverse hardwares available teammates presario instance homework internet internal upgraded somewhat timezone profiles archives stations archiver mastodon pleroma tunnels openbsd useless working section created details icecast founded storage through editing network website channel usually already running contact brother nothing akkoma buzzer guests things server pretty stuffs github hosted webirc driver rented really ircnow having compaq laptop mailto family online termux taught relayd remote sshing ffmpeg https email radio nostr issue wrote could vpses twice fixed gamja title daily times moved tasks house lives using young v3000 which phone small admin sleep lazy than have know i2pd like also page much more tell most that xmpp this with honk life from view self shop were logo and was www can nip may gmt hex did tab for dns org ssl our own mpd uvb my 76 gb 13 07 32
+Eggdrop193.RecentChanges:1688923511:  : recentchanges eggdrop193 september install 2022 jrmu 07 at 04 48 pm by
+Vmm.DebianIso:1688587116:  : 5f6aed67b159d7ccc1a90df33cc8a314aa278728a6f50707ebf10c02e46664e383ca5fa19163b0a1c6a4cb77a39587881584b00b45f512b4a470f1138eaa1801 df9b9c49eaa9298432589d76da87e80d6294be9b partition_offset installation fingerprint sha512sums indication perfectly signature debianiso keyserver isofloppy checksums copyright installed automated certified libraries interface isolinux priority mkhybrid libcom32 critical vesamenu 115200n8 generate username download vnconfig vmlinuz cdimage console provide switch0 pkg_add xorriso trusted warning default changes unknown signing include belongs netinst support mkisofs current notrunc openbsd attempt version libutil already primary giocher umount should expert initrd kernel append normal cd9660 create others serial search ircnow follow lladdr update locked modify verify memory joliet ubuntu inodes qcow2 words label https adtxt taken ifend ideas false rqtxt cdrom below ttys0 quiet cache table tried count 1024m amd64 aaron owner diffs title lists mkdir there steps gnupg these using vnd0c match guide 2021 that path with true grep from home 1997 jrmu boot disk 2880 this must grub into 2018 conv good made recv emul zero size info then doas work else make stop root gpg new bin vmm sat did 220 old aug don dev 000 two cfg rsa are org vga cdt and you ftp vda for spi etc c32 we bb mv cp gz 05 09 41 36 04 56 ee
+Pf.Vpn:1688450380:  : loginterface optimization flushstrict submission syncookies flushudp overload badhosts needfrag adaptive profile packets persist spoofed ruleset warrior domain global tagged source ilines failed isakmp random paster wraith states 29173 proto roadw match quick imaps 31337 13140 extif allow block ipsec https pop3s smtps 16697 16667 scrub nodes track table 2fe80 start conn rate pass urpf from port 1440 skip 6660 6669 6997 vio0 7000 9999 type keep icmp 1000 ipv6 code auth inet iked 7777 fce1 enc0 src tcp ip6 ip4 out max 200 168 non 192 vpn ssh bnc irc pkt rdr esp etc nat lo0 127 end mtu ntp mss 64 id 50 25 53
+Shelllabs.Manifesto:1688323162:  : decentralized reductionism engineering strengthens materialism communities appropriate alternative overthrown wilderness technology industrial artificial revolution challenged autonomous biological equivalent biomimicry education economies knowledge scratched automaton organisms manifesto economics shelllabs graceful progress pioneers humanity internet reliance theories ideology galilean solution supplies holistic vitalism surface society science designs decline revenge systems natural elegant corrupt destroy better domain humans rather broken robots exists pursue barely wealth future brave world every greed there occur local built what more must city lack ones same than real and new not due far for has old of
+Vpn.VpnIos:1688246506:  : authentication configuration description finished username passcode settings verified download password general profile install details browser working connect ircnow attach legacy corner status should bottom toggle return remote server vpnios button safari iphone title close ipsec again enter local allow using users https first right your home when done iked will from left such fill open here icon cert old org for png web crt bar tap add see top and app 10 03 13 08 01 02 05 be 09 07 id 04 06
+PmWiki.ChangeLog:1687491630: Cookbook.RecentChanges PmWiki.MailingLists PmWiki.PagelistVariables PmWiki.OtherVariables PITS.01486 PmWiki.UploadVariables PITS.01297 PmWiki.LayoutVariables PITS.01485 Cookbook.EditHelp PmWiki.EditVariables PmWiki.BasicVariables PITS.01484 PmWiki.SecurityVariables PITS.01208 PITS.01483 PITS.01480 PmWiki.PageVariables PITS.01478 PITS.01477 Cookbook.PmSyntax Cookbook.CustomSyntax PITS.01418 PITS.00447 PITS.01475 PITS.00908 PITS.01095 PITS.01472 PITS.01461 PITS.01465 PITS.01454 PmWiki.Skins-Talk Skins.SkinChange Cookbook.ToggleNext PmWiki.Links PmWiki.Forms PmWiki.TableOfContents Cookbook.SectionEdit PITS.01448 Cookbook.RecipeCheck PITS.01145 PmWiki.BlockMarkup Cookbook.DeObMail Cookbook.FixURL Cookbook.NotSavedWarning Cookbook.AutoTOC Cookbook.DeltaBytesRecentChanges Cookbook.RowspanInSimpleTables Cookbook.LocalCSS PmWiki.LinkVariables Cookbook.PreviewChanges PmWiki.MarkupExpressions PmWiki.DebugVariables PmWiki.Notify PITS.01425 PITS.01422 PITS.01300 SiteAdmin.AuthList PITS.01408 PITS.01404 Skins.2016 PITS.01406 PITS.01407 PITS.01400 PmWiki.PathVariables Cookbook.HtmlUrls-Talk PITS.01401 PITS.01390 PITS.01392 PITS.00638 PITS.01388 PITS.00951 Site.UploadQuickReference PITS.00197 PITS.00435 PITS.01378 PITS.01379 PITS.01140 PITS.01373 PmWiki.TextFormattingRules-Talk PITS.01087 PITS.00835 PITS.01110 PITS.01367 PITS.01032 PITS.00489 PITS.00497 PmWiki.Functions PITS.01363 PITS.01360 PITS.01359 Site.EditQuickReference PITS.01350 PmWiki.WikiStyles PITS.00860 PITS.01337 PITS.01112 PmWiki.PageListTemplates PITS.01345 PITS.01346 PmWiki.LinkSchemes PITS.01278 PmWiki.PageDirectives PITS.01319 PITS.01007 PITS.01259 PITS.01308 PITS.01304 PITS.00978 PITS.01292 PITS.01285 PITS.01282 PITS.01275 PITS.01271 PITS.01266 PmWiki.I18nVariables PITS.01262 PITS.01260 PITS.01263 PITS.01253 PITS.01255 PITS.01242 PITS.01213 PITS.01212 PITS.01188 PITS.01180 PITS.01201 PITS.01217 PITS.01198 PITS.01190 PITS.01192 PITS.01199 PITS.01191 PITS.01132 PITS.01202 PITS.01197 PITS.01184 PITS.01164 PITS.01121 PITS.01127 PITS.01152 PITS.00657 PITS.01157 PITS.00571 PITS.01106 PITS.00796 PITS.00535 PITS.01098 PITS.00266 PITS.00779 PITS.01155 PITS.01156 PITS.01149 PITS.01150 PITS.01141 PmWiki.CustomMarkup PITS.01125 PITS.00703 PITS.00088 PITS.00976 PITS.01146 PITS.00813 PITS.01126 PITS.01131 PITS.01071 PITS.00802 PITS.01102 PITS.00238 PITS.01114 PITS.01062 PITS.01103 PITS.01104 PITS.00915 PITS.01099 PITS.00396 PITS.01037 PITS.00836 PITS.00998 PITS.01073 PITS.00980 Cookbook.UTF-8 PmWiki.ReleaseNotes PITS.00407 PITS.00919 PITS.01081 PITS.01066 PITS.00984 PmWiki.ChangeLogArchive : enableauthpostregeneratesid simpletabledefaultclassname enableundefinedtemplatevars enableuploadauthorrequired enablelinkplustitlespaced enablenotifysubjectencode fpltemplatemarkupfunction diffprepareinlinefunction enableblocklistimmediate enablepostauthorrequired grouphomepagetitlespaced defaultunsetpagetextvars enablesimpletablerowspan markupdirectivefunctions enabletableautovaligntop skintemplateincludelevel defaultemptypagetextvars makepagenamesplitpattern deltabytesrecentchanges multifactorauthfunction enablelistincludedpages enablepagetitlepriority pagelistsortcmpfunction markupwordwrapfunction makeuploadnamepatterns enablexlpagescriptload enablerelativepagevars pageindextermsfunction enablenotsavedwarning rowspaninsimpletables session_regenerate_id enabledraftatomicdiff enableuploadgroupauth pageindexfoldfunction preg_replace_callback enablebasenameconfig pccfoverridefunction uploadquickreference enablerangematchutf8 wikistyletoclassname failedloginsfunction fpltemplatefunctions enablepreviewchanges enablecookiehttponly uploadverifyfunction enableuploadversions callbackfntemplates enablerecentuploads textformattingrules pagename_unfiltered enableincludedpages draftactionspattern enableinputdataattr mb_convert_encoding enableguieditfixurl denyhtaccesscontent enableredirectquiet groupprintheaderfmt enableeditautotext enablecookiesecure searchboxinputtype editquickreference defaultpagecharset enablerevuseragent ldap_opt_referrals togglenextselector enableautoskinlist grouphomepagename markupexpressions setcookiefunction obfuscatelinkimap tablecellalignfmt pagelisttemplates securityvariables pagelistvariables enablepagevarauth pagelistvarfoldfn pagetextvariables authldapreferrals fplexpanditemvars markupmarkuplevel linktitlefunction fpltemplateformat enablercdiffbytes authuserfunctions postrecentchanges enableoldcharset diffrenderinline retrieveauthpage worddifffunction farmpubdirprefix diffhtmlfunction diffrendersource enablediffinline multidimensional numberedheadings sysmergepassthru buildmarkuprules enablelocaltimes defaultpasswords htmlspecialchars pagecachefilefmt enableimscaching recentuploadsfmt recentchangesfmt enablemarkupdiag handlepostupload saveattrpatterns disableskinparts allrecentchanges currentlocaltime changelogarchive pm_session_start incompatibility create_function uploadblacklist obsoletemarkups maxpagetextvars caseinsensitive e_changesummary debug_backtrace strfoldfunction groupattributes vulnerabilities error_reporting includetemplate tableofcontents enablehighlight layoutvariables uploadvariables enablestopwatch pagelistfilters enablerosescape filesizecompact difftimecompact pageexistscache sitepreferences authentications authuserpagefmt handledownload guieditbuttons pm_json_encode debugvariables cookiesamesite enablereadonly pagedirectives pseudovariable saveattributes searchpatterns session_status formattablerow formnovalidate othervariables enablepmsyntax matchpagenames basicvariables pagetraildepth autochecktoken customizations siteadmingroup pagesourcetext enablepathinfo enableftimenew actiontitlefmt wikipagecssfmt enablesortable localcssdirurl handledifflist documentation imaplocalpath diffuseragent installations vulnerability i18nvariables pagevariables double_encode authenticated replaceonsave allowpassword configuration htmlstylesfmt insensitively international htmlheaderfmt normalization disablemarkup enablepmutils handleattrfmt printauthform markuprestore pathvariables uploadsetvars fidelioespoir uninitialized editvariables stringfolding linkvariables uploadpermset abortfunction uploadpermadd inconsistency markupwraptag isfarmarchive pagelistcache servefileexts pageindexfile replacements fmtpagetitle notifcations conditionals inputdefault custommarkup handlebrowse grouppattern markuptohtml highlighting preformatted optimization pm_servefile mailfunction autocomplete experimental configurable pageskinlist mailinglists customsyntax linkdownload diffkeepdays localization customizable robotpattern placeholders manipulation releasenotes e_deprecated handleupload inconsistent pageactions includetext htmltagattr localttimes downloadurl httpheaders apostrophes utf8_decode diffkeepnum applewebkit malfunction effectively tentatively highlighted attribution tracemarkup setproperty backgrounds permissions cmppageattr enablewspre christopher __construct sectionedit linkschemes pagelogourl recursively recipecheck redirecturl translation preprintfmt blockmarkup enabledimap rospatterns subheadings declaration disposition alternative incorrectly pmsetcookie replicating blacklisted breadcrumbs information authuserpat fmtpagename attachments intercepted superfluous xprerelease submissions imaplinkfmt identifiers deprecation associative redirection programming previewdiff backslashes development overwritten utf8_encode transparent sessionauth parentheses hermanowicz processing responsive occasional extensions difference protective pmwikiauth subversion inclusions considered translated wikistyles stripmagic standalone repetition containing definition wikitrails postconfig characters introduced pseudovars strcasecmp classnames lukystreik handleauth kellermann individual whitespace blocklists unintended evaluation dependency attachlist transition developers versionnum authorpage discovered additional linkupload extentions explicitly urlapprove condexists unapproved matchnames samedomain remembered simplified compatible cohabitate skinchange recipeinfo addlinkcss othergroup detailsend previewing grouphomes parameters discussion timestamps frameworks grassineau inputattrs globtopcre incomplete workaround outputting insertions javascript authuserid resolution concerning 1000000000 scrollable respecting imgcaption protection unrestrict guibuttons embeddable signature landscape protected ambiguity wikiwords dominique pipermail usergroup makenames languages switching revisions eachcount sakovskiy restoring potential asterisks histories accesskey detection arguments scrolling selection pagestore rendering lowercase currently clearboth requiring different negatives wikipedia passwdvar downloads shortcuts temporary filenames embedding tofsjonas interface autofocus uppercase migrating stdmarkup minnumber safe_mode requested multiline available suggested scripturl forgotten configure injection replacing auth_form directory disabling siegfried including appearing callbacks encodings contained redundant readtrail confusing wikititle bengtsson inclcount keeptoken recognize excluding printdiff diffmonth locations preceding processor keepblock invisible stdconfig insmarkup customize localized wildcards yesterday subtitles dannybpng technical automatic multibyte alignment pm_recode arrowdown negations implement transcode printskin selectors important filtering category moinmoin reported manifest refcount fixation e_author progress disabled strftime comments optimize indented absolute multiple warnings margiani trailing cookbook properly crashing requires meatball intermap chongqed possible uploaded modified entities prefixes datasets brackets linkpage fixperms simplify searches upgrades recodefn editform elements messages htmlurls tabindex optional edithelp authlist accepted diffyear checking handling markup_e reverted timezone diffweek released indirect embedded defaults collapse adjacent refactor features semantic sections wikitext shiftkey provided directly contains anchor_1 earendel allowing previous ordering examples checkbox reversed protocol makelink existing deleting bugtrack defining removing external together launched critical repeated sidebars riebisch _request printing internal markupid changing wikiedit textarea returned upresult benjamin pmtocdiv percents portrait attached deobmail uploader previews cosmetic captions creation wikibody datalist browsers overflow epiphany parallel reloaded readable scalable unselect websites disallow prevents condauth clicking unneeded filepath pmtoggle official fontsize recently pmichaud duration november norender activity inputbox notices explode without options regular wording allowed escaped between deleted logging scripts created loading returns partial seibert autotoc accepts history applied ruleset editors already windows exclude styling recover rewrite various michael editing phpdiff prefill certain complex encoded pmtoken entries matches markers charrey patrick tooltip removed bühler gabriel padding simpler produce posting specify removal generic italics address pmxmail indexed footers _cookie fuchsia classes outdent arrowup brijesh kothari natural mistake shouldn earlier related passing instead imgonly ctrlkey handles recipes realign anchors invalid imagine strings variant pmnonce treated updated justify article pmcrypt because blocked onclick dropped utility endings changed cleanup missing results display cloning sorting setting writing nightly similar pointer somehow keyword diffday spacing numbers removes appears members jürgen globals causing engelke anymore gragert snippet expired ordinal picture toggles desktop browsed calling updates linkalt rename center github parsed v22101 vardoc dollar before arrays public v22100 single randyb sample fields krishn dragon v22106 engine breaks height zurell longer 064887 offset v22102 v22119 caused braces thread creole commit v22103 chuckg v22120 regexp broken policy robots v22105 v22104 yandex glover blocks inside mobile v22114 severe substr v22110 v22115 v22116 greyed groups v22109 object likely safari v22113 v22111 border 064936 colors v22112 target dfaure locale values allows counts easier family george murray headnr suffix unused bowers nodiff vspace nested unsafe v22107 second holger binary v22108 johnny v22118 v22117 labels pml10n hashes upname called egidio romano v22132 rather drange v22131 redraw v22130 v22129 entity forced ignore export admins posted _site_ v22127 series better helper fourth v22128 modify spaces v22145 dashes addons quotes having v22143 ccaron v22139 martin gregor future params v22142 rankin framed v22141 oliver v22140 logout v22135 caputo issues others v22144 readme v22134 usable v22133 v22138 pulled applin mkdirp v22137 quoted points v22136 states extend submit deltas mclose achmiz robert agents inputs except larger tested google weiner eemeli pmform v22122 orange v22126 latest bullet hidden typing v22124 v22125 cursor behave v22123 either caches 01102 00984 01199 00860 01073 01363 flush there https which calls v2299 01367 00980 logic klari 01406 v2256 v2250 v2319 01191 v2240 01037 v2248 whole 00836 above 00978 v2249 01112 v2259 v2243 01208 named 01319 00998 brown v2220 00802 v2218 01350 simon avoid 01071 01337 based 00396 01259 v2247 01212 halts 01081 01304 third 01300 v2254 v2251 since 00489 01360 00919 v2253 01104 00497 v2245 01198 00407 01359 01180 cells v2217 v2242 entry klonk v2252 01217 01103 query 00915 sizes 01099 v2255 01192 fixed 01308 prefs skins v2241 today 01278 v2219 about 01404 v2246 v2298 v2257 01408 01190 v2258 01188 01201 v2244 01032 where v2314 01007 01062 01114 01066 v2320 00238 01242 could image v2228 01388 01197 v2288 01262 pmhlt 01485 01266 notoc 01260 01110 01202 v2316 01263 v2234 v2287 radio 00951 minor mopen forms aside 01297 v2274 01253 01121 v2289 after 00638 01282 01392 01255 01390 v2273 01184 v2275 v2317 01271 01164 v2227 01275 html5 00835 v2283 lines added their 01373 01140 01379 v2282 email hansb xmlns speed v2279 v2281 v2232 types 01132 v2233 01087 v2229 v2285 v2286 v2276 reset v2277 01213 01378 v2278 v2284 v2230 00435 00197 01127 v2272 01131 00703 01285 01400 popen v2263 users video v2237 01407 01125 01149 01156 v2297 v2265 v2236 v2318 01150 01141 01345 owner iconv 01346 v2264 v2222 01126 v2261 v2239 800px v2260 limit 01292 00813 00088 v2221 v2262 00976 wrong 01146 v2238 v2280 v2270 v2293 01106 v2225 00796 01401 v2269 00571 01484 v2224 v2294 00535 v2292 00657 01152 v2290 v2291 v2271 v2226 01157 false 01098 01486 v2296 v2223 v2267 v2266 until 01155 width v2268 v2235 v2295 00266 00779 v2315 texts 01478 peter newly loops curly 01461 01477 items godau 01422 v2311 01425 01483 finar first upurl often doesn emoji 01472 tests human 01480 paths wolff davis 01095 01454 diffs twice clips 01465 colin cross 01448 00908 01145 01418 maxim v2310 newer fails armin while 00447 daveg 01475 v2312 hanno pipes meant 09t08 e_all boeck rcnew v2215 plain steve means codec v2216 audio johan glued v2313 edits fifth delay hover would fmtv 2015 tags when show pits 1day 2014 2011 epub webm from hide said 2020 core apng undo cody webp that 2022 flac 1min ptvs typo v233 mute tabs 2009 beta step 2019 60vh into june prcb v220 phsc trim talk v234 8601 v235 copy this hard than didn 2013 2012 ulby full 2021 ppra ppre uuml navy docs 4370 9888 many 2023 php8 role will such made psft keys v230 also xlsx pptx docx join been jack root igor none dots cuno exit 8859 jean 1252 true well _get sent betz opus 2018 moni 2010 bold 2017 lost self php5 cast 2016 50em done skip v239 less kept feed 2699 rrep last kirk xssp menu null salt half were them pprc lime teal aqua bugs v236 svgz sdva v238 swap v237 ogv see odg mp4 txt pqa rdf was iso due xcf 034 mkv drt api jue svn pct via cwe 384 can 00z rtl ltr 4th abc may 3gp m4v ios cox jpg pdf 3rd vtt www way lax src csp pss zip 7z jl 3f
+PmWiki.MarkupExpressions:1687404037: Cookbook.LocalTimes PmWiki.WikiStyles PmWiki.BasicVariables PmWiki.PageListTemplates PmWiki.PageLists PmWiki.ConditionalMarkup Cookbook.MarkupExpressionSamples Cookbook.MarkupExprPlus : markupexpressionsamples conditionalmarkup pagetextvariables pagelisttemplates markupexprplus basicvariables specifications international installations pagevariables titlesummary understands determining wikistyles formatting referenced characters 1176304315 altrowsend 1231116927 timestamps unexpected localtimes operations containing processing pagelists pagecount uppercase markupend different arguments inclusive alternate separated available yesterday remainder strtotime parameter displayed undefined unchanged timezones supported described formatted according html_node lowercase wikiwords substring processed performed multibyte tomorrow advanced datetime whatever optional asspaced cookbook examples 20070411 pagename language silently extracts portions relative thursday weekdays audience function produces versions properly strftime addition removing software fullname rand_max returned position truncate together division converts measured ftimefmt override bgcolor tolower toupper returns ordinal ucfirst locales numbers ucwords ignored enabled comment entries default pmwikis slashes seconds current without phrases english writing strings formats hyphens visitor between nesting integer remains maximum minimum include printed initial setting running authors generic variety newwin prefix europe strlen manual recipe length should monday either nested braces suffix labels months always allows builds common spaces modulo commas create adding insert listed obtain custom styled within random server called likely pseudo pmhlt dates which zebra table break class later using horiz group every since https input based where given after order quote today three weeks value newer world fr_fr hello notes found codes older mdash works those there weird paris names curly 30t01 inner site when 8601 each last also next into want will used 1970 zero else utf8 unix dots uses omit part this from more need must only thus that long some none item such left both line 2022 yyyy many bg1 try see f88 you can bg0 may two 8f8 bg2 via ff8 net php www iso 34z but 1st now tar org gnu utc ago jan 10 33 03 hh tz 99
+PmWiki.WebFeeds:1686993801: PmWiki.WikiTrails Site.AllRecentChanges Cookbook.Backlinks PmWiki.WikiGroup PmWiki.Categories PmWiki.PageLists Cookbook.RssFeedDisplay PmWiki.LocalCustomizations Cookbook.FeedLinks PmWiki.PagelistVariables Cookbook.PageFeed Cookbook.CustomRecentChanges PmWiki.LayoutVariables PITS.01161 : list_of_feed_aggregators enablepagelistprotect adddescriptionsummary lastmodifiedsummary customrecentchanges localcustomizations pagelistvariables allrecentchanges recentchangesfmt retrieveauthpage web_syndication rssenclosurefmt layoutvariables rssfeeddisplay authentication forbiddengroup specifications markupexcerpt alternatively automatically changesummary htmlheaderfmt configuration applications include_once intermediate configurable notification established information appropriate currenttime itemisotime effectively corresponds newsreaders lastsummary technically wikitrails podcasting monitoring individual addsummary categories authorlink capability preventing considered repeatedly 28standard similarity convenient generation characters equivalent myfeedpage performing recognized foundation enclosures extensions syndicated expression wikititle configure appearing following confusing protocols interface mechanism histories protected subscribe pagelists generated describes condition backlinks dedicated scripturl newsgroup existence including wikigroup connected cleartext alternate feedlinks available wikipedia basically different discovery supplying otherwise potential therefore functions qualifier indicates replicate sitegroup generates traveling although computer cookbook normally addition _request designed browsers downside category webfeeds clicking recently audience directly software metadata password searches pitfall1 possible recorded portions homepage simplest response episode4 existing commonly callable elements reserved pagefeed digested visitors pagename notified interest checking web_feed multiple creating included separate nutshell question internet fullname between pageurl example scripts options feedfmt authors setting updated default placing instead section specify control ordered already provide content checked despite changed mailing combine exclude harvard formats address certain updates quickly pagevar sidebar mozilla firefox plugins clients channel declare enabled action pmwiki obtain easily second unique attach rights create limits wouldn rather simply adding linked lastly things highly access newwin groups number really picked notice single choice edited locked ensure within anyone sorted allows around output orange insert desire begins either substr height return images forget choose people apache called others dublin secret authpw always across server remote https built reply array which where doesn often entry index 01161 being pages named lines first above these third notes edits farmd value since given every added blogs files items count fmtpv terms green piece whole their email atom_ width start false skins might could doing based still twice user body mean pits that want thus this like used from same guid 2007 well also href type them such zero your they know will sdva into logo some icon just each need case show aren work didn have wrap what most made than ones many look core more when been see php run but etc hlt can 120 end may big tag gif day let has rel rdf xml via mp3 edu wma law ogg faq feb top won yes by pn 29 13 10 60
+Openbsd.Orangepi3lts:1686528366:  : orangepi3lts according picture connect openbsd adapter attach ground black debug power white type uart into red jpg usb ttl rx
+Openbsd.Xenodm-Draft:1686501016:  : configuration configurable installation customizable minimalistic motherboard corporation reinstalled generation connecting integrated sysupgrade controller initially 1680x1050 secondary processor connected interface standard xenocara provides instruct graphics computer asterisk original upgraded firewall xsetup_0 directly openbsd restart article working perform session follows greeter manager machine created asustek suffice execute without primary display monitor startup leaving output intent xenodm choose attach modify xrandr system reboot server router soddim socket fitted family tested really launch enable should showed errors until video intel based rcctl files which after could fully ports 887va modem login cisco draft ready 1150 this doas case easy core when user xorg hdmi some ddr3 even nice from home time q87t part fork lan xdm can was x11 etc ago edp add via lcd you way inc rev 4th ghz cpu two ram of 06 be gb i3 2
+Ircnow.Education:1686377617:  : nationality washington regardless education condition ignorance progress higher booker ircnow people title point help veil lift the and all way of
+Ngircd.Sins:1686342011:  : removed request ngircd from sins the man by
+Ngircd.Bugs:1686340015:  : document ngircd title those bugs xfnw
+Jujube.Jujube:1686260327: Jujube.Todo : administrators configuration collaborative documentation registration application connections effectively experiment interested successful federation maintained governing currently supported community connected available languages volunteer unlimited sysadmins noisytoot favourite together innovate protocol favorite software platform networks provided services multiple unstable friendly feedback consists remember features changing thriving channel bouncer devices located contact openbsd totally details android servers request windows shortly members without improve include english naglfar develop quality benefit welcome jujube number assist ircnow signup kindly access client please mobile famous source easier useful making common unites system leader create better guided build keeps added users topic today terms rpblc agree linux ports learn great speak again 16667 wants truly vegas which email staff their ready group 16697 chats your than goal team more free self name real time will used have make them that also text once 6668 6665 6666 live 6669 6664 7000 from this easy help 9999 6663 good pear well todo list 6661 part 6662 type 6660 upon org new who non ssl run how say ask not mac ios may las fun usa any can by 15 if
+Ikiwiki.Install:1686178124: Unbound.Configure Openhttpd.Perl : 594f13bcee8959356376a42eed6c5a8e295d325724b1c09f9395404e3262796a da98f25c0871c49a59eaff2c4de8ff2a63c7cc90 36ec5a6448a4f5ef79befe98e05ae1478f814c4f allow_symlinks_before_srcdir only_committed_changes cgi_overload_message cgi_overload_delay cgi_wrappermode reverse_proxy configuration successfully pseudorandom irreversibly instructions dependencies optimization formbuilder public_html certificate add_plugins fingerprint refreshing overloaded repository compromise configured nameserver libpthread initialize partition dumpsetup challenge installed site_perl ikiwiki_3 fullchain different signature following disklabel confirmed ownership openhttpd necessary goodstuff directory location markdown makerepo symbolic 20200202 download sendmail accessed template attempts generate software requests required websetup scrubber makefile actually filename separate security username settings requires mounting assuming mcvittie libiconv supposed devices libdata archive backend usually openbsd options unbound receive complex libexec default certain remount resolve however libintl contain powered display rebuild example destdir located correct welcome sandbox verbose mounted warning blindly locally seconds another urandom replace openpgp pkg_add extract slowcgi fastcgi private session instead unknown expired primary because daemon inside export format reason issuer ircnow update debian create htdocs mounts modify lookup chroot verify upload prompt editor module folder import secure allows sample nosuid cgiurl listen sha256 parser visits itself adjust source enable handle script number safely simple attach subkey values https 06755 mkdir which 00755 suids shell chown files write ifend order nodev chmod index mknod strip fstab rcctl start rmdir wikis where enter below wrong notes false newfs share simon perl5 using gnupg class gmake first doas null orig your this mdwn page quit next hash once well acme will sd0a want unxz sure with also been move need cpan base sudo when have made info text then that does sbin mass yaml copy smcv keys libz auto from more pack xvzf less pool main flag must libc bind wipe into help home git var but www run gpg ftp org did may vks dsc etc can aka tgz man xvf tls ssl pem 443 feb xml thu rsa 127 usr 666 two too one w3m vim put out any via rcs mv 97 uk ln v1 by pm p5 xs 80 45
+Shell.Limits:1686082328: Openbsd.Loginconf : memorylocked inexplicably requirehome descriptors localcipher connections vmemoryuse particular sufficient freeshell compiling intensive stacksize following loginconf necessary available enforcing openfiles processes configure otherwise providing paidshell important username software resource familiar handling blowfish complain properly enforced services datasize commands purchase eggdrops defining restrict accounts openbsd maxproc upgrade collect warning correct limited maximum blindly network execute usermod replace running complex scripts python bottom limits parsed unable higher shells indeed double before single system freeze likely create spaces please class apply those users after check colon umask first tasks quick their these begin allow title guide cause hence https there your used this when they will 256m 512m with doas tabs 2048 1024 1000 apps done want 128m test take that much many then sure more make some very etc cur how new org get 022 can way set not 64m web old due may 500 pay him add if
+Openbsd.Gnost-relay:1685530435: Relayd.Acceleration : 00000002013fb000 0000000000400000 0000000268f2d000 00000002a1afb000 00000002a1aef000 0000000201305000 0000000000d63000 rc_stop_signal configuration daemon_logger acceleration nostr_server database_url rc_usercheck gnost_relay executeable _postgresql environment configuring accordingly server_port server_addr remote_addr libpthread repository yourdbpass websockets forwarded encrypted listening following compiling uncomment rc_reload localhost ext_inet6 directory 128184144 preferred installed wj3v49lpp 13579046 password required upstream protocol previous 32073755 whenever nodelay address useradd libexec claudio jailbox setting editing logfile openbsd replace provide working running service default reverse backlog request written disable headers options machine pkg_add example keypair adjust _nostr change domain before initdb inside chroot enable folder github barkyq relayd grpref golang should needed modify export create append insert buffer rc_cmd chmod start rcctl table match https value bunch 65536 rc_bg after could proxy mkdir title there build owner login clone enter 32768 26624 first 8080 make boot will used 2023 then done stat test like 1024 rwxr home save once info that subr pexp with kill have 2018 ipv4 www6 exit ipv6 also role into honk sack json help type psql copy libc rlib 5432 name libs and usr ldd 127 etc tcp tls let now bin utf see fit gjt two may ksh yes tee try 15 by of cd 97 ok 03 09 06
+Openbsd.BBB-Draft:1684940056:  : product_detail_black_sm melf7vvdgpccuwv0uhevaq gpiopintoggle installation respectively successfully demonstrate simpletable development connections gpio_pin_op blink_count destructive beagleboard beaglebone configured consisting downloaded privileges connecting operations developers following community converter supported operating connected generally hobbyists accessing integrity numbering installer populated overwrite possible prompted provides miniroot numbered verifies overview ethernet commands computer revision finishes official graceful platform multiple remember required flashing messages hardware gp_value accessed include openbsd console replace differs pressed microsd powered soonish default machine content blinker gpioctl adapter numbers through applied control utility correct firstly grouped usually writing ttyusb0 mirrors signify compile seconds toggled devices running program prepare actual printf border 115200 gp_pin listed switch serial values medium should facing called signal blinky screen target having letter little button marked static before starts return supply system manual either closed am335x o_rdwr define sha256 sizeof memset scrips string create unistd insert opened bellow rename output beware debug fcntl gpio1 while errno avoid const error sleep could cable pages refer gpios other types times using gpio0 gpio2 gpio3 under tools basic files stdio doing there which named banks ports shell comes title draft armv7 https image above green white rsdxc shown width among cuau0 linux class least usr0 with doas must also this pins sudo near from user leds your case line find miro wire wide each what plug loop card base zero will else wait grab cost last data once disk unix damn main char onto read four boot when side note hold slot held then emmc used any can fun img dot via org pub ftp try jpg 1gb see etc max txd png 615 rxd bbb gnd now 24 21 fd 70 5v 32 dc 73 50 10 j1 dd
+Psotnic.Install:1684771400:  : 9dc275cb3ffdb686407934814bc5771c mymainpassword demonestration alternatively configuration documentation installation compilation specifying repository successful nastycode configure samplebot therefore following copyright ownerpass available directory decrypted generator ownername mainowner localhost encrypted required software generate overview includes official castings compiler grzegorz previous enabling directly realname obtained dynamic changes default psotnic options openbsd dafault replace follows servers message encrpyt altnick connect content running unknown version edition similar project written archive ircnow output verify donate please stable useful source binary create should grusin syntax telnet github string listen myipv4 ircnet devune ports 62450 clang patch every https build posix first valid apply named built along value gmail guide using could would from curl file this with easy 2003 ipv6 hash 6667 mode find grab next 2007 must 2023 step make flag type tags user refs will fast echo your also goal xzvf not 127 194 251 msg 198 see www was cfg and raw new may tar ojl md5 few cd gz by p1 38 09 21 be v0 we 82
+Debate.Zncflaws:1684758267:  : addtrustedserverfingerprint clearallchannelbuffers multiple_clients setuserbindhost simultaneously idiosyncrasies documentation notifications nonresponsive configuration indefinitely changesopped controlpanel reconnecting negotiation independent connections unintuitive capability improperly disconnect explaining throttling liberachat documented developers requesting background understand intervenes throttled connected secret123 attempted sometimes instantly certainty supported throttles blockuser otherwise technical partyline different currently implement available difficult confusing correctly essential sysadmins therefore requested identify adoption messages password nickserv services download manually register everyone networks inspircd serially behavior fallback commands memorize connects language observed parallel versions zncflaws freenode changing requires starting username channels commonly interest software verified security default seconds joinetc blocked minutes exploit usually example chooses bundles bouncer suffers someone slowing failing feature insists causing matters crashes because complex android nothing suspect appears another reading without written exposed strange dropped managed account ideally people normal follow around caused module either unable single signed dalnet relies repeat squery unique ngircd ircnow attack design forced debate glined jargon mobile causes status typing access source closed better stores system useful should entire prefer rather custom fixing poorly issues those until fetch fully ircds shell https users which tries alias buggy first ircv3 loses offer phone error often setup older makes hence patch after short would adapt title needs these efnet doesn field wants delay being hours could login order certs worse shows when take much this will more ipv6 both ipv4 oftc mode even john docs that send have your been hard logs each done then easy plan page disk wiki upon help wall like than text mirc from push open just apps once ddos bugs adds 0day they also but web has did any way msg too get may ssh him can why faq org try ssl mac 100 its by 41 v7 pc 33 30 2x my 15 v1 8
+Psotnic.Install-Draft:1684744864:  : 9dc275cb3ffdb686407934814bc5771c demonestration mymainpassword alternatively documentation configuration installation compilation successful repository specifying ownerpass configure samplebot encrypted therefore generator following available copyright nastycode decrypted directory mainowner ownername localhost compiler generate realname includes software official directly enabling grzegorz castings required overview previous obtained version options openbsd psotnic similar unknown edition connect dafault changes written default servers message altnick replace content encrpyt archive project dynamic follows running verify listen create telnet should binary syntax output grusin myipv4 useful please donate string ircnow stable devune ircnet source github value patch draft posix using ports built https 62450 every named would gmail apply first build along could guide clang valid mode file refs with tags goal hash xzvf 2023 this find also 2007 2003 from type must next easy ipv6 curl step user grab fast 6667 make flag echo your will and cfg 127 not 194 251 198 new ojl see raw few was msg www may tar md5 by cd 82 v0 be gz 21 09 38 p1 we
+Pbug.RecentChanges:1684737553:  : recentchanges 22t06 pbug 2023 bio 45z 05 37 by
+Got.RemoteRepo-Draft:1684710438:  : lyrfn6pdsruvi112nfzimh02aoohxvgq5y5jyy2qkpi interchangeably authorized_keys identification configurations createrepodir automatically configuring fingerprint directories remotestage planetofnix gitgotuser remotehost id_ed25519 publishing passphrase doasbroken configured separately privileges remoterepo deployment generating remoteuser accomplish something directory openrsync balancing isolation adminuser rsync_cmd describes ownership intervals structure generally maximises available randomart supported following stagedir commands key_path deployed password security directly location repopath accounts contents creating allowing intended getpwnam upstream multiple document consists existing username advanced assuming warnings opendir default assumes defined staging private readdir concern useradd created without between scripts connect missing logging copying summary machine working needing version details regular reasons locally usually changes sharing instead example already hosting provide ssh_as myrepo ircnow public beyond normal origin master strict adding shared output keygen needed server facing sha256 folder hosted unless delete making system proper access modify scalar chroot really failed verify single which enter doesn users files repos above empty where leave skips undef clone paste mkdir using image after elsif these extra steps forms chown again saved fresh while split draft owned other hosts store their scope would areas setup below could means grant known chmod wheel group needs from will home next dirs each have 0755 even runs both used only cron same move this 0750 also perl code sure make your push wish pull like bare want goal init then that most tree just they wont over been exit load skel pair done look web two can ooo bin but dst src via not var job etc had yet url has any sbo new die isn usr tmp gid vim way uid rdh sdh few org by cd qq ae 15
+Vmm.DevuanIso:1684695276:  : 1723cbbeb1aee26a54e1370b688e7dc03921402348d2a60086c58c18cd9cf24b e93d7167a4f5fa9e9fed497770285ba5cf280ba4 1_amd64_netinstall devuan_beowulf_3 partition_offset mount_cd9660 installation fingerprint sha256sums indication ronnquist installer devuaniso processed signature installed certified libraries nomodeset keyserver interface checksums perfectly generate isolinux 115200n8 imported libcom32 vesamenu vnconfig mt86plus chimaera username download leaseweb changes primary chimera belongs memtest support pkg_add console vmlinuz openbsd giocher version libutil include default switch0 provide trusted xorriso warning already unknown mkisofs serial kernel casper append initrd normal locked ubuntu search joliet number public inodes verify umount lladdr create should update memory mirror modify words https cache ttys0 taken cdrom table ideas label quiet qcow2 image 1024m owner title gnupg ralph using total match gmail these steps mkdir vnd0c doesn guide diffs there recv root live from with stop boot info size else work emul path this must 2021 that good 2023 made grep make doas into grub disk home 2018 jrmu you may and txt cfg sun rsa gpg vmm new for old oct rrq vda tue cdt bin ftp asc vga 788 not fri etc c32 are hwe run two feb mon aug 57 22 cc aa 12 gz 50 59 33 35 cp
+Ngircd.Ircnow:1684533244:  : ircnow_ngircd_links_plan_2 your_ip_address configuration shared_token peerpassword oddprotocol planetofnix servicemask arrangement alternative containing connection luxembourg sslconnect understand ircforever themselves inspirenet thunderirc mypassword discussion lecturify happening netsplits bsdforall connected developer following locations neighbors nastycode shelltalk elsewhere hopefully groupings someplace feedback everyone thinking peerings hostname question currenly initiate between however systems waiting section passive earlier already decided suggest cloud9p network perhaps stacked publish current several servers problem freeirc willing effects removed diagram require further flatten create should choose global moment better region design groups wanted posted yonles thinks change reduce admins behind except izzyb https index about agree roost start rpblc noone means peers their makes going miami would chain error folks sense those local vegas 16697 force allow down wiki bind ianj goes port list with need been that this have what team each like next then guys page lets they tree same give than when didn docs note best yeah wasn 2023 sure last more from hops well york long true has org any but big usa too php new 001 003 com yes set got try say see use txt had don bit png lol 29 12 by 11 05 19 10 47 48 22 17 15 18 21 13 14 26 28
+Nsd.Masterslave:1684406683: Openbsd.FQDN Openbsd.Base64 : bwvrbwl0yxnkawdvyxq yourstringhere configuration encode_base64 periodically immediately recommended nameservers masterslave replication appearances resolution redundancy algorithm following addresses authority identical necessary qualified configure succeeded replicate propagate resource whenever internet security transfer zonefile encoding replaced generate location provides example locally records openbsd whereas clients message changes suppose request copying encoded already offline require restart running command notify moment random secret domain longer unique create actual inside chroot sha256 secure chosen mirror final tsig1 https zones first print mmime shell which fully other allow there block issue check rcctl these needs least order ahead have doas more make will must rfcs that same with want fqdn show each they both edit well this hmac sync kept next goes perl case runs done sure note from then able what made key etc nsd for ns2 set 172 can org var ns1 192 xfr its two are now log see dns 168 own get put to be ip by
+Bots.RecentChanges:1684069246:  : recentchanges basicbotwiki translator redirect missing initial botnow forero izzyb 25t04 30t02 24t17 added 21t15 fixed 30t21 bots 2023 link post 10z 21z mod 43z 44z 37z 47 by 29 57 03 16 59 my
+Doas.RecentChanges:1684069246:  : recentchanges configure boxette 22t01 doas 2023 02z 03 29 by
+Botnow.RecentChanges:1684069246:  : recentchanges sqliteviews february install botnow added 22t02 09t19 izzyb bots 2022 xfnw 2023 54z tag 22z by am 00 17 at 10 05 04
+Xmpp.RecentChanges:1684069246:  : recentchanges izzyb 20t16 xmpp 2023 36z 03 59 by
+Perl101.RecentChanges:1684069246:  : recentchanges perl101 29t22 izzyb 2023 22z 04 34 by
+Ikiwiki.Install-Draft:1684037059: Openhttpd.Perl : 594f13bcee8959356376a42eed6c5a8e295d325724b1c09f9395404e3262796a da98f25c0871c49a59eaff2c4de8ff2a63c7cc90 36ec5a6448a4f5ef79befe98e05ae1478f814c4f successfully pseudorandom instructions dependencies irreversibly public_html formbuilder fingerprint certificate lc_messages compromise repository transition committed partition ikiwiki_3 site_perl configure openhttpd hardcoded signature confirmed dumpsetup challenge fullchain directory disklabel username sendmail required 20200202 mcvittie location template settings makerepo wikilist software scrubber calendar markdown makefile separate security properly requires download mounting devices request default rebuild openbsd session resolve options certain install libdata symlink pkg_add slowcgi libexec complex however fastcgi another remount urandom warning destdir extract example blindly private changes keeping openpgp compile verbose primary expired unknown comment cronjob debian values verify htdocs import export chroot create srcdir during secure allows around format mounts editor inside having prompt update server listen simple issuer subkey parser sha256 locale enable folder daemon modify notes which rcctl strip avoid nodev edits mkdir share index files later until chown https perl5 mknod order start needs newfs fstab takes write below wrong every after enter draft gmake class simon gnupg using first amd64 good doas wipe will orig lang from smcv mass sure home sbin more unxz also less null then copy man8 next want man1 sd0a hash been this help quit once pool cpan main auto keys sudo with work well info yaml acme made text must mind time move flag have like only var www you pem etc tls xml ssl can xvf gpg usr org did run dsc ftp git vks way asc got but may aka thu feb url rsa 443 two w3m any out 666 by 80 p5 ln v1 xs mv 12 45 uk
+WikiTips.Cookbooks:1683235821:  : markdownmarkupextension markdownoutput requirements planetofnix chessmarkup cookbooks installed requires wikitips plugins usually editing support pmwiki htdocs choose config exile pages moves board https calls local there adds each from what var but com www php its org are lot for how as
+Openbsd.MlmmjWebArchiver:1683160390: Openbsd.Mlmmj : webarchiveprotected mlmmjwebarchiver archived_months webarchive_out customization configuration prerequisites instructions webachriver environment accordingly configuring certificate planetofnix compressing enumerating connection webachiver cryptomilk configured everything publishing directory lightblue fullchain 104857600 locations something challenge generates resolving described codeforce changelog lightgrey published recommend receiving redundant following commands output10 darkgrey counting overflow probably download archives together projects mentions objects changes minimum mhonarc website mailing clearer process putting explain cloning license already working similar install pkg_add problem newlist follows servers crontab control copying bgcolor editing clarity request padding fastcgi specify another minutes default openbsd display section related looking private summary reused folder should script useful readme simple create deltas better htdocs daemon prefer ircnow needed remote inside socket called chroot logged update assume listen define margin itself height yellow there first means index httpd local block spool black using pages named strip izzyb files known needs doesn shell lists fixes basic https found clone would empty which white right these chown setup below touch above fixed drwxr roots total check magic 35147 10em html href body have auto well will acme just into with this left line make each find your port hsts that note warn like sure want doas from echo 1656 keep then when also 8815 path done even pack 5em key fpm ksh ssl may org run but max php 512 git 1em var www 144 etc 100 kib 388 364 tls pem can bin any bug via src usr 443 has see by 92 17 29 go cd cp 93 32 66 28 80 br 19
+Openbsd.MlmmjWebArchiver-Draft:1683155267: Openbsd.Mlmmj : webarchiveprotected mlmmjwebarchiver archived_months webarchive_out customization configuration instructions webachriver enumerating planetofnix accordingly compressing certificate environment configuring cryptomilk everything connection configured webachiver publishing directory fullchain codeforce following challenge 104857600 recommend something receiving redundant resolving generates described locations published changelog download counting commands probably archives projects together mentions openbsd objects fastcgi clearer license newlist mailing follows control request display problem private servers process related minimum section looking changes summary crontab specify putting similar clarity minutes install default cloning website explain ircnow prefer should script itself folder called needed listen simple readme htdocs create chroot useful inside daemon remote socket reused deltas adding better output logged update needs shell index fixed chown local setup fixes there httpd below which lists files doesn means spool named empty check above touch would other known these strip roots first izzyb total drwxr 35147 pages using found https clone draft basic done want with work have make port will keep into href body hsts from html each find this that like your 1656 line edit well acme then when doas copy also 8815 echo sure pack just path even fpm run max 100 org kib via php not var git etc can www but src 388 any may 364 bin has 512 usr 443 bug tls ssl key pem see 144 cp br 19 80 17 29 93 cd 92 go 28 32 66
+Bots.BasicbotWiki:1682823577: Category.Bots !Bots Category.Perl !Perl : basicbotwiki configured pluggable designed category channels summary updates further details changes recent follow source action ircnow module pmwiki gotweb using clone found posts reads feeds this perl path repo http bots code with work git can org you for rss and bin its cgi to be of
+Perl101.Perl101:1682807662: Category.Perl !Perl : interactive category basicbot perl101 teaches started course ircnow create ircbot there using users clone jrmu org git got how to an is
+Hardware.Ps2:1682668897:  : ps2_chapweske information simpletable description development recommended interrupts simplicity connected connector keyboards burtonsys computers replaced possible hobbyist hardware compered personal sortable devices complex popular changes largely maximum current however signal driver border serial attach lfloat system mostly mouses amount ground double unlike single modern 100ma 275ma class clock 200px width which still while those every since sends using pulls means older usage once data over port http more used done also than with much note made htm www but vcc cpu usb and aka hid due svg pin the ibm has of 5v go 3 6 4 9
+Mutt.Connect:1682281183:  : pgp_encrypt_sign_command pgp_list_secring_command pgp_encrypt_only_command pgp_list_pubring_command pgp_verify_key_command imap_check_subscribed pgp_clearsign_command pgp_decrypt_command 0x4a56db2dbf8dc186 pgp_import_command pgp_export_command pgp_decode_command pgp_verify_command pgp_use_gpg_agent pgp_replyencrypt pgp_sign_command message_cachedir imap_keepalive documentation pgp_good_sign ssl_force_tls pgp_autosign header_cache imap_passive ssl_starttls fingerprint codesorcery pgp_sign_as pgp_timeout mail_check passphrase spoolfile lightblue necessary imap_user signature installed textmode smtp_url beep_new realname hostname pgpewrap outgoing use_from compiled openbsd7 overflow user123 my_user pass123 verbose replace connect sending my_pass support bgcolor padding output ircnow muttrc source folder colons secret howtos always detach margin manual define record batch armor quiet right gpgme black gnupg https unset block inbox trust with 1800 your also sure html sigs keys want make note work left then line this sasl like sent will have org www 300 6v3 yes see 5em 1em net 7v3 has 587 120 id fd 9
+WikiTips.WikiGroups:1682143454:  : wly7kd63g9ez01an4paj wpmf45ef45efkte3896f deletingpages investigating organization descriptions conventions information underscores discussions governments renamepage installing philosophy powertools wikigroups collection categories reordering generated hierarchy following colouring locations lightgrey concerned adjusting overboard cookbooks documents subgroups structure lightpink lightblue providing renaming updating probably overflow contains intended services relating darkgrey wikitips addition multiple category headings commands training bgcolor unix101 getting courses unix100 unix102 openbsd example perl100 perl101 perl102 between subpage tedious changes keeping sorting through drastic potting padding started permits propose purpose enabled removed portion thought defines summary related special shouldn colours ircnow within levels scheme making before hyphen tested pmwiki debait htdocs civics piping filter giving layout things orange delete policy purple single prefix suffix couldn reason extend others topics margin period yellow belong config simple found page2 being page1 right seems works using green would files bunch black there forum think block ideas names which these draft alert links https white their known above below haven paste about still class those lines count place shell left this flag auto sure adds site mind used mode also they help were will text uniq like 1322 each uses pipe most tags drop seen some didn note feel very free best list type join poke them time into warn what from soon good more that 5em 1em www var new red can yet but are one put 293 has way don how any of if by wc
+WikiTips.WikiTips:1682140264:  : pagelist wikitips group
+WikiTips.InterMap:1682138505: PmWiki.PathVariables : pathvariables localization planetofnix predefined currently mechanism following wikipedia intermaps replaced meatball cookbook channels consists wikitips document localmap defaults scripts sources becomes details between linking pmwiki usemod allows pml10n create https added farmd where tools other pages links basic wikis these using join main 5538 this like data your file with html ietf pits full team read that part www org for are php url end txt and put own rfc can cgi bin get mb c2
+Cherry.Cherry:1682135608:  : planetofnix homepage cherry access their wiki here name main com you for old can is
+WikiTips.WikiGroups-Draft:1682132264:  : wly7kd63g9ez01an4paj wpmf45ef45efkte3896f descriptions organization governments information underscores discussions conventions wikigroups reordering categories collection philosophy installing powertools structure documents colouring subgroups hierarchy generated following lightpink lightblue overboard providing cookbooks lightgrey overflow commands headings darkgrey contains wikitips relating category intended multiple services training addition probably portion summary subpage removed padding getting enabled potting example between tedious unix101 perl102 permits courses through perl100 perl101 unix102 started unix100 special shouldn related purpose keeping changes bgcolor colours openbsd propose drastic sorting defines ircnow others htdocs filter giving making piping before extend debait within pmwiki civics policy topics things reason levels couldn single hyphen purple naming prefix suffix scheme delete orange rename margin yellow config period simple belong think block names black right https pages white there found page1 about page2 draft being using seems works shell green these ideas would forum class known above below their alert which paste those lines count bunch files place best left what mode this adds flag list mind auto 1322 also were they good note that didn type will uniq pipe them site text used feel free each uses soon seen some warn like sure just join into link poke tags time from more very have one you but 1em 5em can red are var has www how new 293 put any don way of if by wc
+Bots.Translator:1682090961: Category.Bots !Bots Category.Javascript !Javascript : list_of_iso_639 forerosantiago contributing disconnected dependencies installation planetofnix javascript repository suggestion translator translated available developed reinvited wikipedia commands channels remember required language operator category features running desired execute contact message project 1_codes anymore simply github string little google unless source ircnow forget server simple config please rejoin never https found index clone usage given after your have bots want this kick need with will like text come back that send file make once node nick json gets edit into uses the npm are can don not ask was add if cd
+Course-unix100.RecentChanges:1682050608:  : recentchanges unix100 course 21t04 izzyb 2023 32z 08 by
+Course-unix100.Course-unix100:1682050112:  : relating training unix100 course group stuff this will the new for be to
+Password.Schemes-Draft:1682047912:  : beatles_vi_tracks substitutions inappropriate password1990 representing password2020 password1970 password8g1n password1gn8 password7o8r significant compromised incorporate information personality consequence recommended impractical discovered passphrase dictionary insecurely cf18trkids horrifying personally represents categories characters completely eventually frequently wikipedia something gibberish passwords exploding available disclosed different effecting replacing generally obviously inserting mortified mentioned mccartney someplace published category initials commonly consider accounts multiple yourself shocking benefits employed remember variants offended instance nonsense actually children whatever security together building publicly troubled contains generate involves terrible anywhere attacked examples document varying instead between connect numbers playing neither perhaps portion cracker figures exactly schemes include letters meaning ideally exposed replace someone shorten warning secrete because banking systems service problem convert puppies symbols written against imagery violent obscure thought hackers concept happens changes mystpw easily social medium turned simple better fluffy attach method random matter harder colour orange second varies others should anyone giving really things source credit proper lennon places access reduce blocks stored pretty before search forget likely broken strong placed mostly enough little making nobody tplays pmwiki unique chance 6jlpm2 become wolbh1 except plenty remove manage chart using print could since guess plain facts fixed would basic names title lower holly brute force album their https bunch buddy still about named above whole mixed tommy heard known might first fetch these maybe makes being while looks clean going parts share never swear draft digit files media least risks tends means reuse noise given every level green added major upper find from qj43 rest page with this plan text that site pets just data time lead wont will then book also take hash each into good used weak want save best root done 2c54 long feed high both work easy case same have 2018 born keep them need came else they such more w0rd wall last song wish logo uses help when line date clue much love mind sung john paul less but two put way not was png pin lot too key isn set myc say bad 10 by
+WikiTips.Markup:1681876880:  : markdownmarkupextension include_once markdownpmw markdownend containing cookbook wikitips install mardown config htdocs enable ircnow pmwiki https added tages these using local block farmd like been test this wrap page php has var www you org to
+OpenSSH.Keygen:1681864211: Sshd.Disablepassword Opensshd.Configure Password.Management Password.Schemes OpenSSH.Connect : aaaac3nzac1lzdi1nte5aaaaiekkjaexpzvheomsc pv1ekn294beug2thggoyjuxqfk disablepassword authorized_keys authentication identification consequences fingerprint certificate id_ed25519 passphrase afterwards frequently compromise connecting configured generating management additional especially lightgrey lightpink worthless intuitive passwords lightblue generated algorithm forgotten verifying username overflow darkgrey annoying remember securely opensshd terminal machines security commands properly anywhere another example bgcolor schemes needing private warning openbsd padding article setting counter without provide account reasons service becomes public grants stored access should simple create keygen margin typing client prompt define normal yellow assume server means using later login write seems ideas ecdsa given could leads avoid every image wheel never linux again enter usual title white saved block right black alert empty https which setup share type note easy home tend that pair good left file your line auto will read more copy this next like 4096 ctrl from same been have info only best also else when lose down sure make 5em now can 1em how has ask its way one but rsa 100 of we by
+Password.Schemes:1681764402:  : beatles_vi_tracks substitutions inappropriate password1970 password2020 representing password1gn8 password8g1n password7o8r password1990 compromised consequence information significant recommended personality incorporate impractical horrifying categories passphrase personally dictionary cf18trkids completely represents characters discovered insecurely eventually frequently passwords something generally gibberish disclosed inserting available replacing different mentioned wikipedia published someplace exploding mccartney effecting mortified obviously remember instance variants security accounts category terrible publicly attacked consider commonly generate employed examples children shocking document offended yourself nonsense troubled multiple together initials contains involves benefits building anywhere whatever actually replace ideally between figures varying schemes instead because meaning written someone convert secrete symbols numbers letters perhaps include cracker playing exactly shorten against portion violent imagery concept changes thought neither puppies banking obscure service hackers problem happens systems warning connect exposed should giving method others stored mystpw anyone places second social tplays making lennon reduce attach before credit proper better things strong broken blocks source matter fluffy search placed orange varies enough easily plenty really forget remove simple unique manage harder random pmwiki chance nobody colour mostly except turned 6jlpm2 likely medium pretty become wolbh1 access little swear never could guess least their share first digit plain would using every about green above basic makes these looks fetch while still being given maybe tommy files named force brute names known heard means lower upper parts mixed added whole fixed might clean https chart facts tends album print since media risks major reuse level bunch title holly buddy noise going have good both case them easy that with this long song from will time same find sung 2018 john paul born just feed else need page into pets keep site work clue then line wall used mind wont wish want save done hash best book also they take came data text weak such rest love plan when lead logo uses last help more w0rd root each date much 2c54 high qj43 less isn but put not two say set was way pin too lot png key myc bad 10 by
+PmWiki.SecurityVariables:1681531028: PmWiki.SecurityVariables PmWiki.PasswordsAdmin PmWiki.AuthUser PmWiki.Functions PmWiki.AvailableActions Cookbook.FailedLoginFunction PmWiki.EditVariables PmWiki.UploadVariables PmWiki.Security PmWiki.PagelistVariables : enablepostattrclearsession settingsitewidepasswords multifactorauthfunction enablerobotcloakactions enablesessionpasswords enablepagelistprotect authldapbindpassword enablecookiehttponly enabledirectdownload failedloginsfunction failedloginfunction denyhtaccesscontent enablecookiesecure enablepublishattr setcookiefunction enablepagevarauth securityvariables authldapreferrals pagelistvariables availableactions defaultpasswords authentications uploadvariables pageattributes passwordsadmin authldapbinddn cookiesamesite sessiondecode authorization authenticated automatically distinguished sessionencode allowpassword techcommunity editvariables robotactions robotpattern implications enabledrafts pmsetcookie controlling directories conjunction transmitted information permissions preference accessible javascript remembered expression handleauth publishing directives authuserid connection specifies upgrading sensitive arguments forgotten necessary microsoft developer following functions bandwidth eliminate otherwise succeeded reachable respected evaluates forbidden disallow disabled sessions encoding decoding changing versions cookbook includes contains affected returned although requests required multiple identity entering username existing history whether further headers mozilla reached binding refused perform follows defined reverse recipes getting article 1156292 support example editing regular encoded strings usually summary forgets entered created allowed without changed instead special crucial browser apache should custom pmwiki longer server nopass config editor causes reduce called robots switch values recent groups accept array world pages check which about saved level above httpd https given files false below under using cache print unset known agent shown links loads older leave order these never empty sites still docs this they both work side time from feed view have your keys flag will even also past true read adds that zero when html need note core sent made send null blog part diff sets want are web rss iis see new lax can via any was may has 2fa php run mfa by 22 t5 23 24 dc 0
+PmWiki.MailingLists:1681516247: PmWiki.PmWiki : documentation announcements mailinglists momentarily unsubscribe suggestions environment information extensively discussions recommended development disappeared surrounding searchable everything newsgroups interested accessible production irrelevant regarding unnoticed available pipermail forgotten following determine questions reference partially programs pmichaud archives releases possible keywords restored listinfo separate everyday messages function original resource password probably directly speaking archived español usuarios answered settings changing mailman created anymore focuses traffic various subject version options replies receive logging address mailbox finally through request disable because sending helpful machine wayback threads answers summary slipped several pmwiki digest volume recipe people urgent method please member filter single submit should google highly domain german obtain stands before wonder server update around remove bottom french remind button action linked change either mailto great https reply where users gmane enter doesn field first email month those after could might again admin later based quite their basic about value input there older lower lista links mode code just nntp both core some comp week feel down find tips from used 2022 also 2016 page only most such work html this will left your that body with edit next need text fast dead line have look lost take soon post them many who web uri www was php lot may can now url get let ask two don off via hlt 40 if by
+Fics.Install:1680918431:  : default_adjourned makedepmorecflags default_players mess_full_unreg server_hostname default_comhelp default_journal default_history fics_addplayer default_adhelp default_source default_boards default_config simalladjourn default_usage default_stats clearmessages default_index default_lists usage_spanish allobservers convert_uscf resourcebits mailoldmoves default_mess dsystem_sun4 default_help help_spanish default_uscf usage_french usage_danish default_info default_news default_book command_list ttydefaults convert_elo convert_bcf mailprogram simallabort timeofstart help_danish help_french dignore_eco stdinclude statistics simadjourn waitstatus debugflags otherflags mailstored mailsource pisplaying sposition adminproc dirstream matchproc inchannel waitflags movecheck posix_opt light_rat 1202c1203 1052c1053 mailmoves unobserve unexamine variables dtimeseal archflags blitz_rat somewhere nastycode supported compiling withdraw multicol huge_val whenshut playerdb password algcheck uncensor simabort confname features simmatch gameproc mexamine talkproc moretime simgames unsigned commands prefresh ficsmain com_help mailmess showlist takeback mailhelp backward filename shutdown cls_info makefile wild_rat makerank optflags moresrcs moreobjs statbuf rmalloc forward bytesex network netinet sublist strings ratings pending comproc addlist partner unpause handles formula goboard unalias simprev simpass simopen simnext promote install whisper znotify sysflag dnetbsd lnflags lcompat llogons std_rat decline present 937c938 obsproc 341c342 353c354 811c811 fprintf unistd dirent 645d52 endian extern stddef smoves gamedb cshout common socket stdlib sunos4 __math accept ioctls stdarg depend uptime kibitz errnos signal sigset finger switch assess limits lcrypt resign revert define domain fscanf telnet return local types stubs netdb utils ctype cdefs stdio fcntl legal style gonum qtell ptell xtell hbest jsave hrank getpi 25a26 21a23 27a28 param 43a44 30a31 24a25 87c87 34c36 32a33 58a59 below 27c23 30c26 42c37 43a40 23d22 doesn 15a11 41c43 10a11 14c15 22c23 26c27 const 37c37 32c28 82c56 sparc 64c60 45c46 22a23 dist diff orig data 20c1 date arpa quit flip bell home ianj seem none null char core only that your ggdb wall usr gnu say 111 llx now ucb bin 5a6 8a9 who gcc 9d4 are bak 4d3 h2 e7 h7 g7 d7 f7 h8 d8 e8 b1 b8 b2 d1 a8 e2 f2 b7 c7 g1 f1 e1 a7 h1 f8 g8 pg g2 o0
+Openbsd.Warith:1680454970: Openbsd.Dns Openbsd.Backup Openbsd.Netcat : 6e8e5b2448356bb48f642dd18115aaaaca7b6dcb d2312f8fcd9de09574d7370e8de058d91322686c nuulsail2tydzzhwox9paz1l6sbovlvx thtqf8ifeee5ox0i automatically configuration documentation yourpackname alphanumeric instructions abcd3fgh1jk1 yourhubname controlling explanation information networkname compromised packconfig binarypass recognized afterwards wraithpath administer protection officially additional configured connection connected somewhere supported dccprefix reference generated timestamp character confusing providing something libcrypto different contains undernet channels replaced yournick chanmode specific software optional username enclosed hostname creating matching separate accounts unhashed updating terminal password choosing security directly continue settings hostmask yourself stronger cherry07 chaninfo services versions warrning groupdel oaijmnop powerful requires written because fruit01 hubnick urandom botpack openbsd reasons several nologin libexec complex fruit02 botnick portmin libstdc without include specify warning install comment portmax eggdrop updated dynamic fruit03 address homedir cookies userdel records working disable chanset patched command however provide private pkg_add useradd default joining release delete ircnow libssl ircnet should source script tested stable github create ignore resolv warith server netcat backup leaves giving sample fruit2 unable autoop before salted client chattr limits fastop fruit1 botcmd secure ensure public manage handle botnet manual better entire stolen hashes access values press enter mkdir print user2 saved above paste whois setup chown flags there mjoin manop flood users efnet durt8 64100 vhost waste since shell three 64000 nodes their 12742 means front lines voice sends https state opped takes valid doesn owner wrote these salt2 keyed salt1 suxsc first build gmake which while twice forth begin track store title guide newer leaf each both bots echo this safe that must more than will much same want data bot3 fill like look then ipv6 pick fold head show free quit have hubs goes bot5 bot4 bot2 such 1025 kick deop mdop help ctcp type find into used last easy cons pros sha1 once need dest copy done read keep wiki html note very them file repo doas xvzf true null been sbin chsh libm uses code gets hung ctrl ops ntk usr dev but org tar 10a awk run ssh hit scp may bad ksh dns can yes mop tmp ftp any won put za by gz 29 43 45 v1 47 z0 30 28 16 pc 46 96
+PmWiki.WikiStyles:1680407079: PmWiki.WikiWord PmWiki.WikiStyleColors PmWiki.BlockMarkup PmWiki.Tables PmWiki.TableDirectives PmWiki.GroupHeaders PmWiki.WikiAdministrator PmWiki.LocalCustomizations PmWiki.CustomWikiStyles Cookbook.OutlineLists PmWiki.LayoutVariables PmWiki.WikiStyleExamples PmWiki.TextFormattingRules PmWiki.ListStyles Cookbook.WikiStylesPlus : textformattingrules localcustomizations wikiadministrator wikistyleexamples customwikistyles enablehighlight tabledirectives layoutvariables wikistylecolors specifications wikistylesplus wikistyleapply enablepmsyntax justification documentation htmlheaderfmt automatically outlinelists consectetuer relationship preformatted highlighting combinations wikistylecss groupheaders knownissues blueberries blockmarkup programming immediately incorporate highlightjs definitions cellspacing occurrences encountered differently cellpadding properties attributes beautifier lightgreen identifies background identifier stylesheet relatively everything tangerines themselves correspond additional styleclass decoration predefined liststyles recognized sadipscing accesskey shortcuts markupend knowledge associate directory modifying undefined conflicts parameter otherwise languages divisions thumbnail mentioned providing asterisks specified lowercase shorthand specially character displayed paragraph lightblue propindex blooberry following justified cascading correctly isenabled whichever considers beginning searches readable advanced suffixed contains comments required eggplant multiple warnings cookbook includes contents audience meanings tabtable indented wikiword changing floating overflow tableend percents vertical anything wrapping sentence previous indexdot centered elements instance jsdelivr newlines enabling defining reversed supposed breaking function commands external applies summary applied between another current bgcolor instead control because authors fuchsia regular specify letters heading whether however several defines follows escaped browser written foreach secrets convert becomes printed ordered exactly seealso version classes library without styling various section columns handled wrapped decimal release feature request treated rowspan colspan default adjust return pmwiki height listed margin weight normal config affect change tables images dotted border values anchor number starts effect caveat middle entire ffeeee quotes aa3333 maroon purple reused orange assign lfloat framed rframe lframe sizing window italic styled cellnr silver newwin decide should easier saying shared common yellow ddddff ffffcc before blocks latest script larger second global either target _blank hidden source appear rfloat always rrggbb update ff7f00 floats family server within apples bottom hspace called basket vspace versus create allows build horiz first pages above https among often basic pmhlt later since width scope these makes opens links signs isset items avoid solid after olive limes third loads mambo meant white black until files roman upper right boxes clear ipsum dolor place elitr alpha align being using still lorem words about valid doesn there many note uses navy this then sort font some bots that idea they tags easy grey left much none gray bold edit need code into aqua teal copy most name both sets site wide href from same only work thus your view such have good will like take part more help want oops size next sure even hide last sdva nbsp null cdn net may hex 0em can php via src 6em img two org 119 pub 2px pct web rgb too put 1px its has try raw top fn 50 by h3 h2 h1 h6 h5 h4
+Chess.Limitsbot:1680400163:  : readlinetimeout gnuchess_path outputstream startprocess inputstream chess_arena threadpool executable readstream printlines newsocket writeline limitsbot recvline chessbot executes contains strutils argument privmsg channel message trysend discard connect version compile threads release streams author prints admins osproc server ircnow string import const split flush sleep while needs hello using close quits break spawn local data help join else peek only this case 6667 1000 nick echo open text user pong ping true elif args jrmu std var let the usr cmd nim len for and bin bye org not 001 of 2 4 5 3
+Relayd.TLSMulti:1680272214: Relayd.Acceleration Openhttpd.Hosting Acme-client.Configure Ln.Intro Ip.Myaddress Openbsd.Ddos Openbsd.Loginconf : acknowledgments configuration acceleration server_addr connections server_port recommended remote_addr simpletable permissions forwarding commentary webserver forwarded listening openhttpd different available configure loginconf extension remaining myaddress hostnames localhost fullchain following selective stacksize openfiles protocol template service1 replaced services service2 symbolic complete optional requests priority searches sortable tlsmulti filtered increase multiple database hosting example another openbsd private www6tls maximum listens headers provide present keypair applied changes domains prevent default already backlog without inspect however finally instead relayd public actual before assume proper number client border create define update wwwtls entire handle daemon append bottom please should detect relays highly second intro being would queue which below block shows check https value using match above guide close ports large class width certs based lines there title where links still users allow third those begin three 8080 icmp 8000 2001 sure ipv4 ipv6 them ddos your make they have that acme real keys will sack this both edit ends doas what time want such last also need turn 4096 from mail send then says uses are 127 etc crt db8 ssl sub tcp 96m 128 set cur see pem one two 443 ip6 ip4 can org man 168 192 100 its bnc put of ln by
+PmWiki.Categories:1679902585: Category.Category Category.GroupFooter PmWiki.PageLists PmWiki.BasicVariables Cookbook.SubgroupMarkup Cookbook.Tagger PmWiki.EditVariables : pagelistcategory categorynesting inmyfathersden shaunofthedead thecorporation basicvariables subgroupmarkup disambiguation simultaneously administrator categorygroup establishment corresponding editvariables automatically appropriately intermediate alphabetized associations groupheader instruments convenience recommended groupfooter implemented development description definitions documentary overwritten folksonomy individual categories autocreate references vocabulary guidelines multilevel themselves usefulness consistent meaningful particular containing directive pagelists similarly reachable potential resulting discussed hierarchy following described belonging breakfast excellent questions displayed generated fullname multiple creating singular audience advanced cookbook override instance whatever problems existing changing normally whenever contains organize requires listings keywords catering managers thesauri shortcut choosing displays included iso25964 because another setting related planets example default shallow generic content already whether subject tourism happens initial however suppose creates phrases tweaked schemes musical mercury finally medical pageurl showing instant authors linking without greater schemas getting created special summary depends release wikilib pmwiki number listed during emerge though should rankin change modify adding levels tagged reused horror exists config people noting allows rather comedy shared unless appear movies effect recipe placed groups member single tagger before plural things called edited strict quotes coming prefer links pmhlt pages every falls drama would right which these genre title makes being voila films using might named could works about those think array known click https ctime there recap areas worth setup terms added saved empty after thus turn give this such that text also note done hard just year good will kind fine like wish site 2003 tags 2004 adds step self only both more want find your from have niso into idea many john even been deep they than file then www can put may see and php too but few let fmt per new has isn top way by
+Eggdrop184.Install:1679717053: Category.Eggdrop !Eggdrop Openbsd.Tcltls : 79644eb27a5568934422fa194ce3ec21cfb9a71f02069d39813e85d99cdebf9e e01c240484de7dbe190fe141e7667de1d1a39aff allrecentchanges “ownernick” troubleshooting dynamicinvites protectfriends dynamicexempts protecthalfops configuration passwordifany demonstrated shareunlinks dynamicbans enforcebans channelname checkmodule cmd_resolve userexempts stopnethack userinvites dontkickops sanitycheck servernames protectops loadmodule eggdrop184 additional revengebot compressed keyservers autohalfop altbotnick servlimit autovoice uncomment serverror lecturify nodesynch preferred lowercase signature mentioned listening statuslog configure directory newusers channels timezone hostname settings advanced birthday messages chanfile realname shooter_ chanmode optimize commands blowfish comments userfile eggheads category transfer paranoid obsolete undernet enabling autosave filename libtcl86 logfiles userbans alltools inactive scripits default timeout network telnets dupwait connect replace chanset console modules botname require altnick stealth putserv mkcobxs install pidfile logsize updates disable sigterm another example scripts trigger chanrec prevent addhost letters release capital compile openbsd strings create desire should banner tcltls botnet mcobxs onjoin notify verify secret shared number prefix format autoop suffix source action latest compat sha256 expire ircnow switch remove folder remote adding resash tcllib dloads static bounce ircnet enable fields sighup double ignore dalnet unbind mixing select owners wisely hybrid others stoned offset uptime strict reject answer simple hourly length output below boots flood notes quiet cycle muste order simul allow ident never debug shell lines state bitch split party greet learn modes these queue https after whois flags kicks stack block delay vhost leave admin using quick blank local efnet above core 6667 this here type info 1337 7000 any1 need your ipv4 wish ctcp recv xfer sure with give copy 1024 make just idle port irc6 deop init help keep 6697 quit also seen pool brss text xvzf motd 0600 path life edit perm cmds only from 3333 what site wiki temp sort made nano then okay dns msg max 300 org can run gpg fwd ftp pub tar due sum usr sks fun 100 180 buf tmp dcc 200 abc raw jkp gmt env thr 120 aop die ssl my 15 gz 50 tz hp 16 dk 36
+9.9p:1679572813:  : gethostbyname ixp_address somewhere currently exportfs mounting several install servers finally shithub listen1 replace inferno libixp enable nowait stream client sigrid inetd local rcctl there start clone linux doesn note plan unix u9fs ways conf ixpc 9pex path doas user make 9pro file 900 two tcp mnt 564 see and git are etc dns for 127 usr bin aux ls to cd
+Openbsd.Upgrade69:1679453125:  : upgrade68 upgrade69 redirect openbsd
+Openbsd.Upgrade68:1679447941: Openbsd.Bsdrd Openbsd.Sysupgrade68 Openbsd.Sysupgrade69 Openbsd.Sysupgrade70 Openbsd.Sysupgrade71 Openbsd.Dump Openbsd.Restore Openbsd.Vmmuser Openbsd.Cu Openbsd.Buyvm Openbsd.Pkgadd Openbsd.Ssh Openbsd.Top Openbsd.Syspatch Openbsd.Fwupdate : automatically configuration sysupgrade70 sysupgrade69 sysupgrade68 sysupgrade71 installation proprietary downloading filesystems bootloader particular networking optionally unattended installing everything substitute ramdisk_cd lightgrey upgrading lightpink fw_update lightblue installed correctly otherwise beginning following reinstall succeeded directory something operating interrupt signature recommend installer external skipping syspatch followed overflow existing sysmerge messages verified probably location tutorial fwupdate firmware downtime required packages shutdown continue upgrades possible openbsd process missing closest bgcolor servers seconds console vmmuser signify replace advance version generic careful details restore reading pkg_add padding patches updated because however advised running written default finally assumes repair bootup notify attach should screen either before margin during serial sha256 mirror verify reboot define yellow within happen typing normal easier choose proper issues mostly ircnow switch amount pkgadd booted number https media enter flash boots after using first order press amd64 guide later bsdrd buyvm drive there clean check force above steps cores allow which vt220 point login error uname leave fruit proxy title black right alert block users would will this type note same your that then from sure need have list show find used done none back info make base sets hard root just dump says such html must doas view left want else warn does also see www any png org can faq may iso man and top ssh 5em 1em fix did 179 was but pub get etc usb vnc way ftp new out of by cp 3b 2b 98
+Letsencrypt.Expired:1679197601:  : letsencryptrootcertexpire implementations 20211001073034 compatibility certificates unverifiable specifically intermediate recommended authorities permissions maintaining preferably complained validation unpatched operating fullchain signature different switching authority primitive preferred showcerts solution undeadly normally versions syspatch properly services includes provided browsers errata69 deleting patching validate checking s_client counting certbot expired running command example support however openbsd private missing trigger deleted applies offered openssl connect devices website correct trusted article systems _ngircd variety clients bouncer firefox windows testing release without request present another attempt buypass android problem because debian single serves stored number simply reject daemon method public server before broken errors repeat chroot should offers inside copied reload signal making verify issued reason allows action would seems place older fixed irssi chown about https means first might users using every pkill email lines still their extra while which third after where print doas your home make sure into send well that lynx work this null grep most have also blog html will only best wide mirc from mutt they then exit help edit last copy used does acme isrg pem try etc one znc w3m awk can org www tls had cgi get are dst 443 has its key hup set but sep go 13 09 cp x1 by mv x3
+9.Netsurf:1678975947:  : d414500c2b89252b3c16708caef7c49a7e8d9369f228653278e32768fad4c8e5 alternatively installation lecturify globally netsurf without running github prepns nsport 9front system launch could title clone fetch https plan9 media fedi png you com cd by mk do to
+Cloud9p.Roadmap:1678958963:  : configuration documentation possibilities concurrently prototyping production components additional interested implement prototype determine necessary physical openbgpd separate existing resource priority involved software starting overall roadmap clients openbsd testing suggest network joining capable cloud9p members compile servers warrior sharing various should packet refine filter ground detail update create where added first teams plan9 items other above goals vpses setup site side feel with iked free oses ones list vpns will done you etc and run for low as pf
+Pgp.Create:1678719267:  : dd88244ca9988fab letter_incom libunistring libunbound signatures keyserver libnettle libsecret libassuan pinentry generate libtasn1 install libusb1 private receive baytuch encrypt libidn2 decrypt libksba pkg_add ircnow create dialog export gnutls safety ubuntu public search verify detach signed quirks gnupg armor photo saved 09t19 30p0 npth list send 23p2 need full your with file 2022 doas recv org txt gpg asc pgp png the p11 35z kit new gmp 1p0 on 13 ok 54 01 08 be 17 6
+OpenBSD.Cheatsheet:1678614736:  : dependencies uninstalling servicename pkg_delete sysupgrade restarting cheatsheet interface installed fw_update firmwares different otherhost receiving disabling searching groupname managing password stopping changing packages updating deleting enabling services username syspatch groupdel checking pkg_info autoconf ifconfig internet execute pkg_add certain usermod example without pkgname adduser openbsd oldname userdel newname disable getting network patches connect enable during making passwd output adding forget system mirror https rcctl files first users title shell class staff login down read also this doas want dhcp wipe list boot path args free re0 not you yes say any com non by of ml q
+9front.Netsurf:1678460901:  : d414500c2b89252b3c16708caef7c49a7e8d9369f228653278e32768fad4c8e5 alternatively installation lecturify globally netsurf without running github prepns nsport 9front system launch could title clone https plan9 media fetch fedi you png com cd mk by do to
+Squirrelmail.Install:1678408405: Opensmtpd.Configure Php.Install Dovecot.Install Opensmtpd.Test Relayd.TLSMulti Openhttpd.Intro Unbound.Configure : sqsession_is_active php_session_active sqsession_start troubleshooting squirrelmailing webmail_access config_default authentication session_status 20220205_0200 configuration compatibility administrator unfortunately accessibility webmail_error acceleration default_pref organization preferences alternative disposition interactive replacement information configuring certificate permissions development letsencrypt configured configtest javascript compatible afterwards connection extracting additional installing nameserver attempting openhttpd debugging directory addresses essential localhost functions challenge documents necessary recommend fusername subdomain snapshots installed databases delimiter opensmtpd receiving languages settings specific location chrooted sendmail remember provides normally writable tlsmulti security listener required browsers defaults licensed drawback 26214400 smtphost properly optional services browsing continue download original software example folders command request exiting dovecot restart general fastcgi defines unusual however contact opening initial keypair options servers because already contrib defined private nologin unbound message disable plugins records include control sending appears openbsd instead another resolve foxtrot subject tarball version content charset charlie warning baytuch package uploads changes written relayd htdocs needed should stable making across public switch delete inline typing logout return before invert frames detect client readme themes global please secure ircnow rather issues femail actual errors socket create daemon system attach lookup cannot master myname update report serial number locale reload using query since rcctl which chmod color shell mkdir first could https books chown intro ifend false hosts might notes happy delta press write ascii plain works bravo alpha enter saved exist above check touch where there files means setup title lines block index class based chain zones needs known strip that ipv6 next sure your than ipv4 doas logs real with will want done have make 2001 chsh this sbin imap into when ctrl move some hide page does well acme body were runs help made once aaaa bind copy mime edit type quit both full must pop3 motd exec find time wiki many easy html give uses very menu sign text xvzf echo var its www gpl svn bad db8 zip nsd ftp 644 etc has see 755 127 fix 451 src few via 403 ssl usr ksh 143 crt day dns max fpm 23 gz cd 10 by 80 rx mv 9
+9front.RecentChanges:1678102086:  : recentchanges netsurf 9front 06t03 yonle 2023 30z 14 by
+FreeIRC.RecentChanges:1678037757:  : recentchanges freeirc kilroy about march 2023 05 at 03 51 pm by
+Openbsd.OpenTracker:1677861462:  : dwant_ip_from_query_string dwant_compression_gzip dwant_accesslist_white dwant_accesslist_black dwant_restrict_stats dwant_ip_from_proxy missconfigurations dwant_log_networks dwant_sync_scrape dwant_fullscrape dwant_sync_live distributions _opentracker experimental installation application fullscrapes statistics compressed explicitly commenting connecting bittorrent deprecated announced behaviour openbsd_7 install72 whitelist backspace configure variables sensitive currently mktorrent manually dwant_v6 features makefile initiate checking enabling normally packages torrents standard problems endpoint stemming creating groupadd anything erdgeist libowfat systemic location official declared details cvsroot provide endorse default cluster pserver anoncvs enabled address section clients disable tracked support console release baytuch control deliver program nologin useradd folders detach ircnow closed latter allows option before around daemon change legacy tracks switch sample create these chown those local guide since patch ready mkdir linux armor there chmod clone until makes below order this with will doas give them that note some home have only hash they path keys view main sign 6969 http ipv6 more sbin fefe tree mode when case your 406 run can url see usr etc don way 400 org gpg iso 162 700 its git out 38 by cd 87 12 cp z9
+Soju.RecentChanges:1677369291:  : recentchanges january install minor yonle april guide style soju 2023 2022 mkf 03 24 by pm 46 at 11 29 am
+Paster.RecentChanges:1677334724:  : recentchanges february install paster 2023 mkf 06 at 10 22 am by
+Openbsd.Plermoa:1676523121:  : authorized_ssh_clients generated_config pleroma_server administrative configuration microblogging installation interruption dependencies httpd_server emailaddress certificates remote_addr configuring _postgresql succesfully imagemagick information recommended server_port server_addr activitypub compilation request_uri performance sufficient repository everything initialize correction connection configured interface challenge replacing paramprob listening http_host directory ext_inet6 forwarded following openfiles dedicated installed args_file uncomment describes implement retrieved friendica _pleroma disallow identity instance protocol upstream yourself exchange messages strictly starting required setup_db location database username redirect software federate variable properly multiple fuctions requests sbwtdcpu peertube pixelfed mix_prod creating datasize mastodon loopback enabling attempts exiftool libmagic features security hubzilla behavior ifconfig consider network replace encrypt crontab default unreach echoreq disable started openbsd setting mix_env command running specify follows example content datadir profile session keypair respond headers upgrade backlog working another traffic options nodelay reverse sitting migrate current plermoa useradd friends control creates servers because waiting misskey sbwtdio pkg_add prevent contrib version improve support enable should before bottom output return random htdocs robots rebar3 policy trying ircnow relayd rights social highly lc_all export values secret macros single append toobig during erlang ffmpeg forget icmpv6 latest syslog adding failed insert family elixir double adjust online reboot pgdata plerup having domain higher buffer socket window initdb source script starts assign people update larger needed icmp6 might https local asked timex login trace class quick match block paths front avoid rcctl table index check 1536m crash shell first 65536 write rules proxy enter bunch agent again scrub en_us seems after guide there lines strip three press title clone doing while means using still alias cmake pfctl false gmake which known 4000 then that this www6 tmux edit with json sets than ipv6 fedi when deps pick ipv4 some hurt them pass true what from done type skip copy load urpf root once drop into 4096 psql home stay exit will like doas used save none have only busy flag acme wiki well didn want over next grep sack 302 can aux bit tcp phx txt exs but let etc utf gnu hex 127 url git won new tls max fit 128 its api mvo ftp php any ok cd by v1 vm df wx 80 p5
+Google.RecentChanges:1675856684:  : recentchanges february google yonle sins 2023 08 at 05 13 am by
+Google.Sins:1675833208:  : polemicdigital publisher’s specifically arbitrarily gatekeepers competition governments destination publishers everything monopolist department potential antitrust analytics delusions including following basically customers microsoft democracy developer undermine violating extremely protocols deprecate unlikely webpages monkiest tracking document building approach facebook trackers monopoly everyone optional grandeur websites congress articles versions invested billions internet stories without started believe testify justice noticed written confirm message creator evolves preview control tracked secrets amounts dollars default traffic company dictate prevent amazon helped should people censor search looked google really forced either create mobile 474236 appear forces forego single states united engine source script large wants their tries steal trade yonle adopt bully https title stack often heads apple world azure linux could these owner money power abuse court video share never about being visit used will usel they send holy more caro jrmu that work blah feed your take fair epic also yeah time long said sins sued into days them tell span glad code have from news sues laws hell how has ago don see but got pls amp org www opa old top 54 vs 19 52 55 58 21 03 26 by 57 25 22 10 24 56
+Debate.Googledanger:1675832510:  : googledanger redirect debate sins
+Route.Usage:1675694303:  : manipulating information parameters interface computers resolving configure directly gateways physical consider machines examples routing virtual without certain adapter current network default openbsd viewing address change mygate latter please kernel access manual scheme shell route table names where solve usage other hosts https bunch edit page show have tool just more file card your many nics inet 168 192 org use etc and may try dns can of is if 24 5 0
+Mkf.Wikiv1:1675693916: Gotweb.Install Pmwiki.Install Achurch.Install Hopm.Install Prosody.Install Psybnc.Install Anope.Install Biboumi.Install Lilywhitebot.Install Bitlbee.Install Mlmmj.Install Dovecot.Install Ngircd.Install TigerVNC.Install Unrealircd.Install NodeJS.Install Webnews.Install Paster.Install Fiche.Install Php.Install Xfce.Install Gomuks.Install Pleroma.Install : lilywhitebot squirrelmail eggdrop193 eggdrop191 unrealircd eggdrop184 wordpress archivist leafnode tigervnc redirect sshwifty asterisk install oidentd webnews achurch biboumi openbsd pleroma bitlbee dovecot rbldnsd prosody texlive newsnow synapse mariadb gomuks nodejs paster psybnc ngircd wikiv1 fdroid debian nitter botnow akkoma pylink kissmo pmwiki status gotweb mlmmj fiche anope i2pd xfce hopm soju php vmm znc 301 mkf
+Debate.Openweb:1675692919:  : characteristics insightbrowser advertising requirement deprecating publishing javascript descending accessible proponents neutrality controlled unexpectly permissive consuming companies standards bandwidth operating seriously megabyte requires websites globally licenses browsers orations expected remixing supports tracking actually matches company wasting cheaply heavier tracker written cheaper several content footing misused derived openweb imagine feeling roughly quickly product higher system longer source drills faster tracks really others simple anyone before debate freely render heavy react today tries grass https least their deals dying doing three agree hello works world tools touch order that good your they late want load stay just what need like know page such spec with surf data only sell will then time also care corp ease same than jrmu some code make heck dont blog url not old can big own but ads vue net see why way how set isp lot has cut 38 41 03 16 17 of 04 ry 19 13
+Debate.Youtubedanger:1675692600:  : youtubedanger “misleading presidential explanations november’s technically copyrighted teamyoutube unskipable everywhere ultimately controlled especially customize regarding bullshits wednesday depending improving suggested longtime uploaded revenues download contents monetize election creators labeling somewhat politics anything internet removing homepage websites creation parties trouble confirm falsely checked allowed violate service problem limited anyways 1000777 occured twitter utterly notices without nothing newsmax watched product tracks musics blamed expect videos having debate single claims report really minute months cringe system rather matter listen messed suffer donald remove speech money terms break still trump rules would edits fraud short begin which gonna their means biden could times robot sense never fixed https hello third enjoy voter after taken lost then blah that need when have they bots your spam jrmu many been said will make also this 2020 want just shut such free obey stay and ads did lot www are for has got com how pls now get due let ” joe but won 57 09 01 12 of 30 29 dl
+Openbsd.Paster:1675682125:  : installation malikania mercurial makefile releases pkg_add openbsd include paster clone local doas unxz http kcgi tar xvf usr the ftp fr cd hg 2 1 0
+Anope.Install:1675676788:  : redirect openbsd install status anope 301
+Password.Hashes:1675495662:  : ixdd3jesob5eb1cx5lbsqzfvkjdido3ouilo5ifz5iwmuts4xms130mtsuddl3aci6wouil9ajrblceldcy shnnbwk5fmsyvilzof8zeg4ydeh2awrsuy4rjhbzlzrlwcoxbxxoi0hfn0mdxijcdbj seleybaz2lolly6wmyhjuratbplnhve collision_vulnerabilities dt6b98jrmeshzncusrkk4 pmwiki_action_crypt sbkbb0mvmtali2ec1 distributions vulnerability 7yupcbstiqlb jfpkoqpywoah veabp30nv9vw recommended identifying vu5nzov0um0 deployments algorithms compatible generates supported available passwords specified generally different something generator operating encrypted wikipedia generated following formatted 1aq4jjxy yescrypt mkpasswd programs produces previous prefixes openwall hashing storing example default encoded openbsd command methods version package replace options openssl decrypt install related systems passing created usually ltpkjk sha512 either sha256 hashes modern bcrypt prompt output attach string debian redhat expect distro ircnow secure argon2 design number linux whois cause enter stdin added value print using there store index built equal sadly start found which https below known doesn older other plain above will with this look like from such salt have time each help your perl list full seem many that unix less mind keep more wont used want line idea note text link org www md5 can run key are bad xyz new apt png yum php j9t by 10 2b
+Mlmmj.RecentChanges:1674887451:  : recentchanges install january archive mlmmj hawk 2022 2023 mkf by at pm 10 52 48 06
+Openbsd.Lilywhitebot:1674571593:  : q234fipjfjaewkflasdfasjaslkdf sasl_password configuration corresponding aasdjklsfjldf lilywhitebot applications requirements congratulate installation suzerainbot useproxyurl information relayemoji sajksdfjie discordapp developers resources botfather following configure according 123456789 nickstyle correctly telegram remember username realname properly modified nickname disabled channels pictures anything supports fossifer download example careful recevie message running specify timeout tencent content setting forward options started working methods openbsd forking before client ircnow branch should groups passwd libera invite change oauth2 shdfjs please system wechat server bridge called enable handle github create newbot search easily false token needs sdjfh limit mkdir login taken basic https about usage visit after click which clone guide robot doas node main done when have also true same from make will that auto only save join your send link home read keep file com add get api yml had npm did how not but can 100 utf of cd by qq mv 14 30
+SendMoneyToSplinter0616Outlook.Com:1674559165:  : sendmoneytosplinter0616outlook com
+NodeJS.RecentChanges:1674256825:  : recentchanges install january nodejs 2023 mkf at 06 27 pm by
+Openbsd.NodeJS:1674253810:  : installation node_modules contributors upgrading packages openbsd updated removed pkg_add nodejs latest local added doas 467s from bin usr npm 290 and 148 cli npx lib 33 18 70
+Openbsd.Fiche:1674253810:  : troubleshooting installation certificate segfaults solusipse directory challenge fullchain location argument pastebin request cronjob crontab usermod private adduser openbsd warning 1048576 ircnow htdocs listen server daemon causes egress github flush httpd block known strip quick index fiche proto mkdir chown https clone chmod port well doas root drop acme 7777 make pass this conf line www com the var txt org key 443 get tls for ip6 ip4 etc tcp log ssl pem cd 20
+Openbsd.Webnews:1674253810: Openhttpd.Perl : pack_sockaddr_in troubleshooting requirements installation oddprotocol quotedprint nntpclient unexpected installdir configured libraries openhttpd site_perl hostname approach solution conffile webnews intspan baseurl example libdata changes openbsd htdocs server daemon choose create resolv base64 normal newsrc should length socket manual closed local sock1 perl5 lines wndir begin mkdir needs dgate chown been doas make then tars copy cpan want mime text wrap sudo date user next what var cgi www etc for set you has eof 169 bad arg 102 usr org few two 147 119 ftp is gz up mv pm cf 3
+Openbsd.Gomuks:1674253810:  : installation cgo_enabled recommended encryption packages compile pkg_add openbsd archive written support gomuks source github export simple client matrix build tulir https from doas tags refs with tar ftp tui xzf olm e2e you can not cd gz v0 is 3
+Biboumi.Install:1674245447:  : redirect openbsd biboumi install status 301
+Hopm.Install:1674243157:  : redirect openbsd install status hopm 301
+Unrealircd.Install:1674242686:  : unrealircd redirect openbsd install status 301
+Gomuks.Install:1674241704:  : redirect openbsd install gomuks status 301
+Php.Install:1674240725:  : redirect openbsd install status php 301
+Fiche.Install:1674240271:  : redirect openbsd install status fiche 301
+Prosody.Install:1674240150:  : redirect openbsd prosody install status 301
+Pmwiki.Install:1674238765:  : redirect openbsd install pmwiki status 301
+Xfce.Install:1674238657:  : redirect openbsd install status xfce 301
+Grep.RecentChanges:1674107017:  : recentchanges january usage grep 2023 zen 18 at 10 54 pm by
+Hostnameif.RecentChanges:1673454471:  : recentchanges hostnameif theguest static 2022 may by 29 23 06 05 01 v2
+Openbsd.RecentChanges:1673025135:  : filepermissions troubleshooting unboundadblock recentchanges httpopenproxy amplification delphinusdnsd tcpresetflood bejelentkezni mailopenproxy sysupgrade70 sysupgrade71 sysupgrade69 sysupgrade68 squirrelmail matterbridge tcpackflood sshbackdoor recordaudio recommended gophernicus drawtermssh opentracker factorauth zncmodules vmminstall miniontoby zncsupport ngircdlink oscommerce singleuser pfbadhost september install71 openrsync staticnet upgrade67 dkimproxy opensmtpd noxturnix install68 wordpress disklabel loginconf install69 geomyidae pftesting checklist ircbridge meeekeeef compiling openhttpd install70 copyright passwords install67 february zncadmin suzerain zncdaily wesnothd phishing december leafnode training november confused vmmlinux pfstable announce dnszones security syspatch netadmin rstflood udpflood akoizumi unneeded dokuwiki minetest openbsd october baytuch achurch bitlbee oidentd sshkeys credits january apperad xonotic sockets vmmuser easyapp ongoing tcpdump backups newdisk eggdrop dovecot anycast snipped icecast censord adduser august gotweb locale blocks relayd tcltls wraith output chroot police server delete growfs setuid arthur easily client base64 psybnc rbldns pylink humans ilines netcat botnow pmwiki longer guides caesar audit yonle april bsdrd abuse rcctl dmarc intro fdisk npppd xterm ports irssi anope types navic books shell pppoe vsftp chewy fixed added buyvm acopm mlmmj vhost quota march first tcpip links july jrmu 2021 2022 june hopm ntpd rdns doas nate ssdp 2020 code acme u9fs some ipv6 ping ddos cgit honk sudo ways more bchs vipw iked hawk slrn team apmd perl wifi mkf dig sic pfa may gry spf pkg fdm inn php are wiz uim has two bbb 45 36 10 04 17 18 03 01 26 09 12 39 24 29 53 59 19 05 42 11 13 23 54 30 34 06 15 07 08 31 48 25 40 28 16 35 56 44 14 52 46 49 51 38 00 47 27 32 43 55 50 57 33 58 37
+Profiles.Miniontoby:1672082816:  : programming miniontest3 miniontoby programmer translator languages profiles without english python called dutch shell gamer talk many more html bash and but irc css ksh php can js
+Openbsd.Minetest:1672082630:  : 95d7fcb9499d7f51a660847a5b5671925206883f dbuild_shared_libs denable_postgresql dcmake_prefix_path server_description denable_spatial server_announce denable_gettext denable_leveldb ircnow_messages server_address send_join_part denable_curses implementation minetestserver serverlist_url drun_in_place dbuild_client creative_mode denable_sound enable_damage dbuild_server denable_redis minetest_game trusted_mods dependencies compatiblity load_mod_irc bind_address reconnecting ipv6_server ircnow_game confusingly instruction server_name planetofnix recompiling miniontoby installing submodules connection additional characters ircforever server_url irrlichtmt viewtopic directory installed submitted following modifying available confirmed something max_users recursive providing luasocket minecraft automated worldname handling actually required codeberg uploader realname settings interval included produces optional includes anything nickname commands specific checking multiple prompted yourself building releases updating relating sqlite3 openbsd channel example doxygen attempt english pkg_add seconds version default details updated resolve editing another running disable section created already servers invalid options finally special several welcome related p412885 working worlds engine github merged should builds system string needed mantar issues commit edugit config hosted folder secure before luajit easier called target readme stable errors ingame checks exile clone https games false there mtdev where mtctl usage local forum first which value 28483 index iconv found hooks again 64x64 unzip above known since based below with into also head chat form pull like this uses made then home that true line have port find file when wide null from motd wiki page just note more they wget doas than skin pack lets want jpeg full few try 600 174 can nil its but png was org how off isn non php way vps cd 11 my md
+Dns.RecentChanges:1672067214:  : recentchanges bindresolver registrars providers february overview zonefile nixdork january records august draft vhost howto april first 2022 2021 jrmu fqdn june typo july dns fix at 05 03 19 28 44 am by 45 04 27 09 07 30 39 of 10 pm 15 16
+Gry.RecentChanges:1672067214:  : recentchanges september 2021 jrmu gry bio 11 at 49 am by
+CodeForce.RecentChanges:1672067214:  : recentchanges codeforce bootcamp april 2022 jrmu 19 at 06 29 by
+Chroot.RecentChanges:1672067214:  : recentchanges chroot intro july 2022 mkf 18 at 04 23 pm by
+Nitter.RecentChanges:1672067214:  : recentchanges fallback install nitter april first 2022 page 08 01 by at am
+SendMoneyToSplinter0616Outlook.RecentChanges:1671971924:  : sendmoneytosplinter0616outlook recentchanges december 2022 com 25 at 35 am by
+Openbsd.Honk:1671266716: Acme-client.Configure : administration configuration documentation yourusername introduction httpd_server honk_server composition server_port customizing request_uri remote_addr succesfully configuring server_addr activitypub connection tedunangst listenaddr servername censorship executing http_host challenge listening ext_inet6 configure filtering uncomment forwarded available following directory interface humungus strictly required deleting protocol humorous location hostname password settings instance database software changing managing multiple upstream actually headers honkers keypair address nodelay actions backlog honking example started replace finally command options focused adduser disable editing upgrade deluser claudio install reverse sitting openbsd copying pkg_add relayd enable needed append single client change return manual adding domain called chpass repost rehonk during insert delete create system badonk modify adjust reblog access buffer socket manage rcctl _honk doing denis https every known users again ports login under check visit setup title strip style value bunch front match basic proxy 65536 local reply views which table block react menu doas then acme hfcs like that text also bonk zonk will time boot done html must read info some here with ipv4 ipv6 2018 root next them this hurt 4000 www6 sack init 2020 well get 128 tcp two can tls fit 302 exp api css not 127 may etc see var run but won ok 10 be go by 34 04 80 11 cd 22 06 09 23 03
+Camping.Gear:1670819972:  : cm_cr_arp_d_product_top cm_cr_arp_d_viewpnt_rgt twister_b09fqw5ncg twister_dp_update multifunctional frontiersman sr_1_12_sspa backpackers sr_1_1_sspa backpacking b081cnklyf sharpening geniuslink b00zun5pa2 containers b000sjlpuc waterproof b079xv1dmv b08mhgkmbh b082jysgl6 b01at3lms6 microfiber b002pa6v0g b010r9bd54 rubberized b07s4djtzg b09dr8wd4g b09xxfq866 flashlight b073wmdrfx b01ho15dgs underwater b00t3dy8xk b004j2gup4 b08kwmdq39 b07r9mcrgz b088p9z562 b0002zb5y8 b00f9gis1s 3000003654 emergency stainless sportster craftline parachute universal mountain practice morakniv tactical paracord canister headlamp survival outdoors aluminum notebook victoper sheeting allround redirect whistles trekking portable movement 31200mah external sleeping blankets coghlans painters cascade compass bottles starter plastic vicmore special reviews sawback cutting thermal soldier canteen coleman running sundome camping sr_1_13 burner rothco hiking amazon towels sheath sr_1_2 travel forest sr_1_4 sr_1_3 stream sr_1_9 https poles adult cloth setup store style swiss stone 750lb power tough knife spray cache stove silva white small board combi bear alls utf8 true tent tech kids bank grid rain tarp free safe gear high www ref gas bag psc gp
+Vhost.Vhost:1670816208: Bouncer.Bouncer Vhost.Ircnow Dns.Vhost Vhost.Freedns : specifically requesting permitted messaging multiple hostserv existent network domains freedns example because however bouncer ircnow verify either unless vhost since there which setup that note rdns with help oper meow poke must also ways will real you own non get tld for one cat can bnc see are and nsd any msg by to im of
+I2Pd.Tunnels:1670338322: I2Pd.Install : ancdefghijklmnopqrstuvwxyz1234567890 registration registering description webconsole secretsite following according localhost generated myeepsite username teamname whatever install address editing tunnels command service finally logging change needed submit access mysite expose looked copied stored reload domain visit under rcctl value tells field click which title login guide needs then open this like with copy 4444 7070 http i2pd your doas save lose that line will fill once long into free also didn root port type conf keys want via can 127 vps for tap dat etc ssh net lib var b23 may but how if 80
+I2pd.RecentChanges:1670337845:  : recentchanges december tunnels yonle i2pd 2022 06 at 42 pm by
+I2Pd.RecentChanges:1670337845:  : recentchanges december tunnels install yonle i2pd 2022 by pm 38 at 06 42
+Lemon.Lemon:1668088118: Lemon.Todo : 0x7303a746e98626e7c82b133625eca7a4aff8fb8b 1jay2v7rnfndqmttf6iqk1kcsrsfrr1uoh ωєℓ¢σмє administrators documentations configuration collaborative ιя¢ησω registration effectively willingness connections application ℓємση experiment interested federation appreciate successful maintained available volunteer favourite connected governing donations upgrading supported resources languages unlimited community currently services networks multiple software feedback together platform friendly provided remember favorite unstable innovate features thriving donorbox etherium spending changing protocol located quality improve windows bouncer openbsd android servers channel bitcoin devices totally consist without include english details request benefit contact shortly develop welcome members number system common access melayu client ircnow bahasa mobile kindly useful easier famous assist please crypto wallet unites donate making guided create better speak topic σяg added group chats lemon linux ready terms agree staff which again today https users wants great their truly learn build keeps also more your text this easy here that goal help from sign them have self well real free time team used york name make part thru logo тσ type todo upon list good once »» live than new who can run usa org how fun say ask not mac ios any may 15 by if
+Unbound.RecentChanges:1668032016:  : recentchanges blacklists configure october unbound june jrmu 2022 at 29 25 pm 06 am by 30
+Bouncer.JmIRC:1667585932:  : automatically configuration highlighting alternative explanation regardless backbuffer connecting correctly character timestamp codepages debugging separated unhandled otherwise password jmirc_04 advanced jmirc_03 jmirc_01 channels encoding jmirc_02 features validate bouncers jmirc_05 motorola fallback nickname jmirc_06 jmirc_08 hostname jmirc_09 jmirc_07 usually reasons default servers colours windows maximum samsung options uploads memory unique ircnow output always choose status socket detect useful chosen string header screen simple print https input lines large value phone first tried after users empty nokia doesn shown comma safe wiki 8859 with 6667 used port this will work that sets want also real your make need from have join poll v525 6800 6810 text 7200 just left only c100 jpg for org can tcp bet top not utf two iso run per who too but ask if of by
+Eggdrop.VhostTCL:1664694397:  : autoapproved yourwebsite registered tclarchive unregister permanent somewhere following acomodate temporary download hostserv settings complete vhosttcl command connect accsess botnick eggdrop network restart scripts working request channel extract stepts source device folder server rehash change files first found https still have that edit conf will must oper wget user they when this than good luck org now tgz can are msg php ssh zip for 794 put v1 be cd by if id 0 2 5 6 3
+Camping.RecentChanges:1664134566:  : recentchanges september camping gear 2022 jrmu 25 at 12 10 by
+He.RecentChanges:1663382871:  : ipv6certification recentchanges september create 2022 xfnw page he 16 05 32 pm by
+Shelllabs.Education:1663183830:  : californiasciencecenter sandiegoairandspace thamesandkosmos constellations breakthroughs 9780534420055 9780534390013 9780534389994 fleetscience encyclopedia ponderables illustrated discoveries engineering mathematics foundations smithsonian skyscrapers 1627950966 1654104837 1627950958 structural 1627950931 technology 0985323094 0756691702 075661385x eyewitness 1465408959 1465473238 b06vt7wqph oceanarium b00mj8mi2o 1536223816 astronomy mysteries chemistry textbooks shelllabs education currently children sr_1_140 products keywords history welcome physics loveday trinick sr_1_15 biology tarpits animals mcmurry organic amazon sr_1_9 museum series nhmlac second visual sr_1_6 sr_1_5 sr_1_4 sr_1_3 https using store trips field c3000 sdnhm isbn john www ref qid kit dp by
+About.RecentChanges:1663100738:  : recentchanges september aboutus zleap 2022 13 at 06 42 pm by
+LegalAndSafety.RecentChanges:1663093469:  : legalandsafety legalampsafety recentchanges september zleap 2022 05 by pm 17 at 13 19
+Profiles.Izzyb:1662877713: Netcat.Irc : connection recommends clarifies following confusing password commands bootcamp profiles logging process testing perhaps bouncer created entered newuser feature should netcat ngircd needed before ircnow taken izzyb users needs nick your find have home with this that does used into when not the doc znc isn was its out but so
+Site.EditForm:1662877335: Profiles.Izzyb : editquickreference e_savedraftbutton e_saveeditbutton e_changesummary e_minorcheckbox e_previewbutton e_cancelbutton e_guibuttons e_savebutton wikiaction e_textarea sitegroup fullname contains remember profiles editform messages wikiedit include editing unsaved author layout e_form divend ifend class izzyb input block page this top the id
+Openbsd.INN:1662776619: OpenBSD.CPAN : e0491a07cdb21fb9aa82773bbbedaeb7639cbd0e7f96147ab46141e0045db72a autoconf_version ld_library_path troubleshooting installation unavailable build_unix incomplete libraries gistfile1 installed directory configure signature download variable berkeley danieldk previous checksum extract history openbsd execute command archive makedbz openssl without autogen 5700533 verify deb3f6 sha256 export prefix become oracle nobody custom repeat dowoad change source github needed target create atomic clean there dbinc value https patch index issue group touch chmod umask step home news from type hash have your when cpan perl user dist been bdb ■ inn may due 644 set ftp isc org pgp for txt won asc how mv 30 gz p1 69 10
+Shelllabs.RecentChanges:1662591229:  : recentchanges shelllabs september intro 2022 jrmu 07 at 56 pm by
+Eggdrop193.Install:1662569304: Gnupg.Signature Eggdrop.Simple Openbsd.Tcltls : e01c240484de7dbe190fe141e7667de1d1a39aff allrecentchanges troubleshooting configuration fingerprint development examplebot downloaded eggdrop193 afterwards keyservers indication continues certified signature configure messages eggheads obsolete optional securely filename libtcl86 install botname tarball replace extract similar primary showing belongs reports trusted problem warning unknown compile signing openbsd release verify import create tcltls delete should source latest simple folder tcllib action ircnow repeat there above gnupg error steps using might files state check local https issue title owner group into 2021 will this that your make want next nano then with good dest brss site logs need from edit made wiki pool stop recv xvzf org due usr pub ftp gpg asc for run www see and not cst sks may was rsa net mon bad gz cd vi rm 58 31 23 45 36 16
+C.Scanf:1660125080:  : scanf
+Lemon.Packages:1659210746:  : authenticationresults validationcompiler deprecationmanager internationalized strictconstructor globaldestruction namespacesupport texlive_mktexlsr contextualfetch implementations synchronization texlive_synctex characteristics transformation multiprecision checkconflicts communications decompression texlive_texmf libexttextcat automatically bidirectional multithreaded 3pl20210102p0 cryptographic functionality configuration compatibility stabilization sophisticated libsamplerate specification interactivity programmable notification construction multitasking manipulating asynchronous optimisation implementing constructors spatialindex localization overloadinfo representing applications organization manipulation customizable errorhandler transmission cryptography developement computations repositories distribution spamassassin libunistring encapsulated libtextstyle preservation texlive_base 2017060201p0 libopensmtpd unencumbered imagemagick orientation subroutines diffutiltcl lightweight handles_via alternative progressive nativetrait constraints numerically certificate identifiers composition expressions forkmanager environment permissions inheritable documenting replacement messagepack 5pl20210608 distributed programming interpreter interactive accelerated ghostscript sessiondata overridable information fundamental indentation serializing recursively abstraction compilation differences enumerating integration development translation pkglocatedb typesetting interpreted performance subprograms intelligent connection shellcheck syndicator installing signatures overloaded stacktrace minimalist extensible primitives algorithms processing networking conversion 20110525p1 manipulate implements introspect setuptools portuguese structures references simplified libvidstab compressor formatting arithmetic libchewing libgdiplus newsreader validating collection 20190427p0 postscript retrieving 20110118p0 supporting libstrophe subprocess ratcheting libsigsegv javascript structural management mediatypes additional libstemmer persistent libunbound 20190601p0 postmodern attributes handlesvia libtermkey multimedia domainkeys freezethaw converting expiration pigeonhole mailfilter exceptions tinyscheme parameters compatible extensions generation postgresql eventually monochrome simplistic strictures endofscope robotrules bitmapfont extracting components diagnostic libarchive passphrase traceroute filtering transport interface computing databases platforms standards libraries utilities bandwidth oniguruma detection converter responses configure negotiate mirroring speedtest submodule commander inspector libvorbis modifying modifiers deparsing anonymity singleton framework datatypes accessing macintosh tclthread operators compliant plan9port generator directory libtheora generates arbitrary determine functions baseclass userspace automated mktorrent assembler djvulibre libpinyin associate variables packaging libgcrypt comptible elemental zstandard documents dkimproxy pluggable addresses profanity universal requested libassuan webserver providing coercions lexically naturally darkhttpd efficient statement monospace grundform reduction throwable validator typetools optimized arphicttf patchsets processor dmidecode someutils scripting emulation libsecret emulating passwords libsignal pdo_mysql pdo_pgsql libsodium unibilium messaging bitstream libnettle translate autoclean rendering expirelru graphite2 alternate designed 20210314 building internet lossless features software leafnode portable buildset advanced metaauto jbig2dec flexible smallest floating multiple phonetic protocol subtitle libpaper matching handling xvidcore idna2008 resolver terminal keyboard 20220205 notation libiconv libtasn1 retrieve libslang stemming terminfo truetype libident renderer libde265 tigervnc blake2bp licensed blake2sp libcares grammars language powerful libevent download graphics archives creating guessing torsocks analyzer 20210323 inspired bindings patricia libressl oriented observer reusable warnings parallel 20140330 checking snowball allutils combines entities readline 20210915 20200907 identify 040001p1 000014p1 embedded behavior validate aliasing protobuf pinentry friendly packages 20160806 resource exporter commonly relating af_inet6 timedate 001013p0 006006p0 speexdsp sqlports encoding decoding triggers querying newlines wrapping indexing datetime transfer binaries openldap dkimsign extended finished provides priority basicbot accessor singular messages portably 006002p1 services timezone analysis desktops subclass closures sharedir 002002p0 location emulator converts dos2unix fallback 20190702 revision security reviewed gnuchess discrete berkeley makefile autoconf readable cppcheck alliance automake contents debugger drawterm streamer chrooted versions harfbuzz creation intended 20211008 defines library utility control mariadb sockets russian cookies browser pattern purpose openssl sharing modular reading instant general display console regular routing libwebp unicode socket6 italian strings storing written secrets forward secrecy derived weechat optlist utilsby doubles filters ieee754 missing printer toolkit colored encoder modules classes dvi2tty styling privacy fribidi denmark headers drivers hashing porters numeral imagick unknown libssh2 decoder fetches concise generic parsers runtime gettext openjp2 objects stringy threads oidentd related foreign algebra stashes sqlite3 execute authors emulate dynamic offline correct compute loading entries t1utils between liberal require servers wrapped inflect checker integer wrapper aliases psutils include imports catgirl 9rel1p0 antlers mozilla creator charset pkg_mgr nghttp2 ncurses clients buffers merging writing daemons caching maybexs msgpack variant libusb1 similar garbage maxmind shaping cleanly dovecot lookups bouncer endings libjpeg listing manages chinese recipes enabled jsoncpp calling scanner uniform youtube pkg_add jbigkit tclcurl netaddr libheif cparser kakoune declare colorls scripts rivests fourier sorting moniker hicolor signing libexif several digital subnets gtypist outline detects rfc1413 jansson wwwdata memoize libksba methods complex zziplib numbers systems engines libidn2 homedir compact defined simple smbios expect locale binhex dialog static thrown macros patent useful 012004 images editor cpanel python 004003 zenhei libwww speech 19p0v1 memory bignum expiry bourne usenet tester bundle choose german ps2eps ispell window lingua giflib 000006 around ssleay params ngircd create extras figlet 1903p1 59p1v0 viewer pipely easier regexp arrays jasper linear writer pseudo signer proper rspamd ffcall tcllib tcltls banner 2020p0 femail 2021p0 faster 2911p0 25p3v0 raster update geoip2 safely snappy pixbuf norton libotr pecl74 ubuntu quirks easily driven tagset sslify 001009 syntax pascal specio no_x11 gnutls dumper tables argon2 brotli libv4l videos libgpg screen 21p7v0 tiling expose libvpx 002011 libmpc matrix robots option ffmpeg verify libogg assist libraw detach suffix public libpsl higher pretty mysqli sweden faults libixp unpack 5001p0 endian floats gomuks helper device digest subset tagger ensure 004004 vector french camera speedy 002004 typing random weaken aspell select google libffi 9609p1 plural policy luajit gopher sender libzip plugin libxml rdbms perl5 redis value typed pairs using tests based again other files block 054p0 gnupg fftw3 cairo rhash about cross 0p0v0 1p0v0 boehm clone which trees marks socat rsync 012p1 relay built ascii xpath wheel links 17029 079p0 643p0 loops flock cblas 360p0 boost parts 005p1 https moose bzip2 audio 1p3v1 125p0 gpgme dav1d stuff codec pager tasks store alone 928p0 mldbm usage 509p0 order layer onion 0p1v0 cmake emacs gmake tmate plain guard 3p6v0 pcntl fonts aria2 serif libuv level glib2 focus times loads dates theme pkzip modal 100p1 108p0 lcms2 irssi cyrus jails lemon ircii cache icu4c catch sieve sites codes quote input 016p0 cvsps libb2 tutor aware dtach unzip avahi mouse adobe swirc ninja 122p1 hooks 09p25 batch after point 19pl0 detex human clisp 204p0 048p0 722p0 latex minus plrpc fatal lua53 count gdiff strip 009p0 meson feeds pcre2 limit 117p0 19p2 like your with pure math imap xmpp most 49p5 10p5 run3 soap html turn side 08p3 adds that pop3 keep 56p0 very from ttys 03p0 92p2 moox dvtm 20p2 15p0 01p2 pico 12p2 self 02p2 10p0 fake jars 31p0 2201 68p0 ansi 05p0 mime 22p2 ipv4 cffi tied cups nntp card 35p1 cidr ipv6 cloc 58p1 intl blow u9fs 69p3 94v0 mutt sasl nano 12p0 nasm many 05p2 eval tiff next big5 full used mpfr dbus 11p3 11p4 07p2 opus 19p5 ietf pkcs 36p0 bash more 29p0 08p2 21p1 xslt npth tdom 30p0 deal tcsh 2000 lzma 11p1 4600 0p15 83p2 x264 x265 need made easy wget hevc 18p1 14p0 sans 10p2 role r5rs sax2 lpeg 1p11 62p0 just avif lynx lzo2 objc 23p2 26p0 32p1 tmux llvm quan real 40p0 they 54v0 zstd htop 70v0 simd dbix 03p3 sums 90p0 21p3 01p8 18p7 35p3 35p0 talk 04p1 62p1 peer re2c flag 78p2 qdbm hmac fltk 29p1 uris 10p1 0p11 lcdf zlib slrn 11p2 93p0 song 06p1 51p0 2222 16p3 find copy 44p1 pike sacc prng leak 72p3 sdl2 lame php yet hoc ftp poe dns 368 414 txt 988 dot 0p3 x86 3v3 pdf mtr olm lz4 5p7 bsd 0p4 8v1 gdb 4p2 gcc gdk wqy ipc 6p7 wen utf gtk gsm aom cjk zsh ijs 7p3 mp3 znc pgp vim vp9 vp8 gmp xdg iso avc w3m 113 905 lwp png py3 4p3 074 0p7 mro spf bz2 2p4 112 way dbd 023 fmt 007 md5 fpc zh 38 gb 45 34 57 37 uw 61 xz 84 73 77 v8 47 55 24 1o tz mc 39 jq
+Ircnow.Daughtersofliberty:1658947553:  : daughtersofliberty martha_washington betsy_ross_1893 mathematics recruiting wikipedia marketing wikimedia founding commons science freedom mothers partner upload defend ircnow attach coding 503px https thumb women title rosie 450px bring help your join jpg and png org are 10 f6 us we
+Eggdrop.RC:1658343350:  : daemon_flags daemon_user _eggdrop command openbsd rc_cmd script local conf sbin subr 2018 rpe exp etc ksh usr for 12 52 19 11 3 v
+Opensmtpd.Troubleshoot:1658332710:  : 2fee16ca81516ba5 366fb2a5ce9a0764 366fb2a7e3bb9d4b troubleshoot permissions oddprotocol standpoint abnormally delivered nastycode advisable opensmtpd processor _dkimsign envelope _dovecot delivery properly security whether private cleared result adding exited denied issues _smtpd group 71633 evpid 63168 error 50276 delay host jrmu came root read from rcpt sure that user stat note mean then this lost warn mail file can did but key etc jun mda org due 30 01 08 04 ok by 0s
+Vpn.Myipaddress:1656625880:  : whatismyipaddress configuring iplocation configured duckduckgo 20address whatsmyip important concealed browsers properly revealed lookup please ignore https after sites check note your very that find test 20ip html here 20my real even some with vpns are www few com web org may and net the see can 27s if to be q
+Debate.Debate:1655655158: Ircnow.Metrics Ircnow.Nsf Debate.Bncnow Debate.Linuxflaws Debate.Ethicalflaws EthicalSource.HolierThanThou Debate.Bsd Debate.Webirc Debate.Wikistyle Debate.Providers Debate.Ipsec Debate.Servicewithasmiley Jrmu.Marriage Jrmu.Rmsboycott Freedom.Union Spam.Statistical Freedom.Independence Freedom.Bearcode Freenode.Takeover Freenode.Money Freenode.Power Freedom.Destiny Debate.Monopolydanger Debate.Cash Third.Third Debate.Privacy Debate.Partners : servicewithasmiley holierthanthou monopolydanger ethicalsource independence ethicalflaws statistical rmsboycott linuxflaws foundation monopolies prosperity wikistyle statement providers wireguard licenses marriage freenode takeover protocol partners bearcode networks privacy freedom destiny liberty metrics science bouncer debate webirc bncnow ircnow speech reject method ipsec rules third union right power money trust party guide death unity fight spam user must cash jrmu list done need the why not for nsf can bsd of
+Ircnow.Metrics:1655655123:  : intelligence measurement demographic prosperity prosperous indication engagement community clickbait healthier depressed operators important rankings optimize becoming networks indirect opposite problem monitor instead because engaged suppose metrics economy provide society happier smarter growing offers screen richer become unique scores social poorer ircnow users chess skill makes tried vital youth voxel might gives field ratio over more each most high time four sell able they this code game can let job but and are see ads its if by
+Dns.Records:1655617469: Dns.Zonefile DNS.RDNS DNS.SPF DNS.DKIM : discovering description 2003080800 preference hostmaster authority canonical hostnames addresses available redirects provided resource exchange includes provides creating services zonefile contains pointer reverse records written example default another minimum refresh format origin border 172800 center serial expiry server update number retry lists helps email cname class title align start alias value which ipv4 aaaa such ipv6 dkim with each this type data secs rdns xmpp ldap http text used com ttl soa ns1 spf net 254 joe 192 168 15m www 12h map any txt sip ptr srv and of to 10 mx 2d 3w 3h
+Vmm.Alpine:1655142121:  : authentication configuration distribution installation repositories alpine_linux confirmation binary_blob alpinelinux oddprotocol explanation lightweight interfaces installing nameserver initialize signatures permission localhost downloads installer available operating different connected qualified wikipedia configure following reporting including verifying loginname timezone username password complete hostname dropbear changing contains followed instance provides releases ethernet prohibit openntpd question creating continue sysadmin overview computer oriented includes security searches privacy without virtual openssh machine example network busybox version fastest contact because bonding address command trainer fossdev bridges gateway writing switch0 returns matched adduser openbsd console located disable replace welcome default entries upgrade persist running reasons warning prevent however domain should output result google points failed before x86_64 manual create kernel serial script inside 115200 answer memory system select locked lladdr static sha256 rename delete remove retype secure 0x0b5d permit latest stable openrc nopass number mirror update longer reboot please erased simple public chrony client editor detect random speed start ttypj lines https press ttys0 cdrom print enter wheel allow right setup files vmctl group image brief tilde above which vlans lower later users given leave blank proxy using quad9 after crypt would disks fully there title exist never qcow2 check entry owner 1024m their based small blobs these guide first going doas help root sure from want need note will done eth0 form your none stop 8080 like this show make list ipv6 only exit path also dhcp find musl data libc case uses head free wget html home pipe text size page good echo that ctrl pros vda etc apk url org cdn www iso are its can vmm key now new lvm bar any dns 162 foo 20g n10 utc ftp sub aa of bb 41 87 by dl mv v3 38 gb 03 cc 74 ok 21
+Vmm.Arch:1655050267:  : passwordauthentication pubkeyauthentication authorized_keys permitrootlogin install_update installation archfallback arch_202206 recommended timedatectl permissions networking bootloader connecting formatting nameserver partition archlinux systemctl uncomment localtime configure hostname syslinux zoneinfo returned genfstab pacstrap firmware bootable networkd username poweroff nopasswd gateway address console sudoers seconds systemd loading problem without _config openssh process section useradd example systohc hwclock assumes create serial having 115200 locale cfdisk pacman mkswap choose swapon scheme insert enable resolv chroot needed enp0s2 editor append public change folder around should umount issues share start vmctl match guide en_us lines using mkdir label field maybe basic blkid check enter wheel group cdrom press ttys0 occur allow setup wired from exit file both your note this sshd home make will wait more some ipv4 ipv6 want vda2 vda3 smth vda1 that path ext4 lang mkfs ping true base what mark have sdax etc 25g run dev 23g dos vps and fix try 50g vmm ntp 700 org yes sr0 was iso utf vim utc usr mnt cfg now syu own by if 30 ln sf 2g 8
+Pledge.RecentChanges:1655012875:  : recentchanges pledge intro june 2022 jrmu 12 at 39 am by
+Unveil.RecentChanges:1655012875:  : recentchanges unveil intro june 2022 jrmu 12 at 40 am by
+Openbsd.Growfs:1654043666: Openbsd.Backup Openbsd.Announce Openbsd.Fsck : 50014ee25f5d927d fragmentation growpartition connectivity installation consistency substitute afterwards filesystem parameters 1953520065 partitions particular represents attempting 1836432768 everything performing boundaries 1836513345 1953525168 allocated 650507712 including 652175680 653843648 655511616 657179584 658847552 available 117006720 647171776 660515520 662183488 104423808 100229504 648839744 645503808 disklabel currently 629145600 229564168 teammates 630492096 633828032 recommend 635496000 637163968 638831936 640499904 642167872 643835840 632160064 663851456 formatted otherwise unmounted 186430532 gigabytes pathnames permanent reference boundary starting readable announce cylinder commands tutorial capacity enlarged 56189312 strongly 39512255 scsibus1 43606400 58286464 19079328 wd10ezex 10690752 953869mb geometry mistakes 23303813 upgrades modified actually sectors openbsd 2097216 changes maximum corrupt display default growing warning greater virtual labeled machine showing finally section reading drivers backups forever careful destroy groups modify before umount delete toggle blocks ensure single counts around follow unable editor finish prompt expert folder should except resize entire double growfs header offset fstype cannot 896695 unused become inodes 16384 12960 x11r6 frags clean which space print 26062 human there check local total means again first occur using 80576 fsize bsize 52224 point order phase above users their enter sizes super write reset rsd0k title guide https 900gb could faq14 disks these setup dmesg typos 500gb cause 2bsd home 2048 will sd0j busy targ like need make data lose sd0e your grep root then sd0i list note 4096 none swap undo than last sd0f much this exit 295g 151g page 833m 130g free 103m sd0a 986m sd0d unit mode save help auto sd0h hard area quit want sd0g over 234m 702m have with must 1929 made mark fsck that more 155m loss 862g 819g also some html 1101 blks 300g only 44mb org run two dev 7mb did 814 see was yes 2tb new naa src usr cpg out www 21m tmp wdc var lun usb fyn 875 obj may any add 575 log 7g 3g we 8g df 4g 6g
+Opsofliberty.RecentChanges:1653317346:  : recentchanges opsofliberty bootcamp 2022 may mkf 09 at 08 38 by
+Hostnameif.Static-v2:1653287373: Openbsd.Buyvm Openbsd.Vmmuser Unbound.Configure Openbsd.Ping Openbsd.Netcat Openbsd.Traceroute : configuration unpredictable automatically disconnected abbreviation immediately disallowing abbreviated connections configuring nameservers additional networking configured unfiltered traceroute installing attempting definitely hostnameif addresses interface preferred specified reconnect rebooting obviously following databases seperated specifies something important semicolon netstart requires training separate commands practice provided disabled mistakes manually received prepared specific replaced ifconfig autoconf probably assigned followed dhclient controls actually settings reliable searched properly computer entering provider running manpage openbsd options unbound however vmmuser gateway keyword creates another warning because contain restart similar figures entries assigns editing without aliased default example packets forward already worried specify console letters account bouncer resolv custom should delete unless subnet static dozens inside device second mygate unique lookup system normal longer always router domain virtio manner netcat before change making please serial number exact those first inet6 after files lines share flush being https sense makes using masks which below would buyvm check order query hosts where doesn reset users chose since three shell stops about above local steps knows title extra also 0000 5b99 ping that your ipv6 this pass must 2001 from will doas 0db8 dhcp case each test 3511 sets 143a 387e 9b1d back just need time have hint such real bind note most down deal sure they want then what over ipv4 when ad2c fed1 66ff uses 8daf more same 1465 11b4 done 8d93 4729 28ad 921d 89d1 2b1a d6bd 4a36 2941 were well vio0 ddos both them 192 255 168 ip4 dns if0 ip6 ssh get may can org isp its new see vps any fly by go 48 of v2
+Irc.Emoji:1652178230:  : expressionless multiplication disappointed sunglasses confounded hourglass screaming anguished relieved sleeping grinning savoring smirking confused frowning unamused worried winking pensive smiling blowing kissing neutral beaming anxious flushed fearful sleepy closed ❤️ tongue crying ➡️ loudly ✔️ ✖️ hushed border margin dizzy mouth tired sweat heart weary angry style heavy check width tears emoji face eyes 😚 😩 😵 😄 😍 with 😳 😰 😁 open 😯 😐 😮 😪 mark 😙 done yang left 50px 😱 😀 😴 😢 😃 😭 😫 😕 😋 😔 food 😒 😊 😑 😖 😏 😞 😜 😎 😛 😨 😗 😂 😧 😉 😦 😠 😘 😥 😟 but irc joy big sad ⌛ ☯ 80 of
+Openbsd.Nsd:1652142827: Openbsd.Delphinusdnsd Openbsd.Tcpip Openbsd.IPv4 Openbsd.IPv6 Openbsd.Dns Openbsd.Resourcerecords Openbsd.Dnszones Openbsd.Sockets Openbsd.Ifconfig Openbsd.Hostnameif0 Openbsd.Buyvm Openbsd.Vmminstall Openbsd.Domains Openbsd.Host Openbsd.Dig Openbsd.FQDN : troubleshooting resourcerecords configuration delphinusdnsd disadvantages understanding authoritative installation introduction configuring hostnameif0 explanation nameserver registered networking addressing configured vmminstall yyyymmddnn 2021020301 substitute foreground checkzone checkconf uncomment interpret verbosity addresses standards interface subdomain specified correctly confirmed elsewhere transfers authority necessary difficult encounter dnszones sections redirect ifconfig whenever username zonefile database compared specific requires warnings delegate sysadmin normally internet audited example control openbsd aliases binding specify servers sockets quickly provide domains minimum refresh logfile disable version assumes invalid through perhaps further refuses outside message simpler service suppose deleted helpful results getting defined ircnow master errors failed syntax notify proper should enable always points finish charge origin forgot output serial return expire please before system guides remote public forget notice change https write start 32265 fruit rcctl which might after files again buyvm could quits above pages blank using leave about query first these tools works found 86400 retry there basic slave every nokey 37575 comes least tcpip allow title exist denic 93210 this team ipv4 step need want sure that doas also more than hide nast glue your 5678 test fqdn 2001 aaaa 3600 mail with drop will ipv6 once read _nsd port part look case view logs done move line info news does fork edit good smtp same have make into real note like such both imap only 1800 just var 198 own 100 yes man etc db8 soa any 921 ns1 see 898 had run dig tip www off can xfr 261 192 has ask ns2 how was ttl mx we 51 53 33 34 50 07 by 31 43 14 49
+Opsofliberty.Bootcamp:1652085512: Irc.Chanop Ngircd.Oper ZNC.Support ZNC.Admin Openbsd.Announce Abuse.Code Openbsd.Police Minutemin.Duty Minutemin.Server Openbsd.Team Servers.Rights : adminstration announcements opsofliberty description simpletable minutemin procedure managing handling bootcamp sortable channels support openbsd prereqs servers control lesson police ngircd rights chanop border topic abuse guide class width duty work code team oper znc 100
+Openbsd.Ports:1652075682:  : successful installing download provides software setting openbsd mirrors signify returns tarball package folder sha256 https uname ports valid build using tree copy page from then base make html doas find that root was can and you www run usr xzf tmp faq org for etc ftp cut pub cdn up gz ok to cp 1 3
+Civics.RecentChanges:1651620707:  : recentchanges civics intro 2022 jrmu may 03 at 01 06 am by
+Codeforce.RecentChanges:1651620707:  : recentchanges codeforce training 2022 jrmu may 03 at am by
+OpenBSD.EdgeRouter-Lite:1651157449:  : documentation installation bootoctlinux instructions old_bootcmd recommended connection compatible edgerouter bootloader sysupgrade ubnt_e100 partition installed operating supported install70 directory configure depending replacing connected interrupt rebooting parameter commands loadaddr internal official youruser numcores verified computer internet download powerful openbsd adapter signify fatload rootdev sandisk saveenv process minicom usermod console already careful packets network several reading battery replace messing instead working octeon system serial ugreen pl2303 setenv enough device tested appear booted choose around cruzer saving 115200 insert inside revert latest needed budget should belong dialer filter wrong guide parts after https reset shell there doesn since usual small point could enter using these cuau0 being index local rsdxc every lacks group means cable cisco first image rdate clock press drive while best sync this with lite sd0i will wipe keys some have doas then data ways case from want hour karl once keep 16gb rj45 nice html just goes done into home burn push pool usb org etc low ntp img cdn pub fit can db9 ftp www faq has run my by rc pf 1m 8
+Math.Reading:1651091028:  : математические планирования производства организации gesellschaftsspiele trigonometrische darstellbarkeit disquisitiones differentialis differentiable decomposition institutiones mathématique algebraischen irrationales mathematical методы philosophiae introduction independence organization arithmeticae propositions propagation equilibrium superficies reflections sierpiński déterminer infinitorum intégrales indéfinies undecidable mathematics zahlbericht tangentibus inbegriffes 1910–1913 quantitates kantorovich fundamental morgenstern eigenschaft pertinentis imagination problematis géométrie foundations éléments sergeevich functionen geometriam hofstadter hartshorne primzahlen hypothesen principles alexandrov production apollonius gottfried friedrich dirichlet principia algebraic generales whitehead equations naturalis singulare geometrie abelschen solutions descartes gegebenen topologie berlekamp viewpoint functions shoshichi kobayashi hammurapi economic planning bertrand bernhard elements behavior chapters lagrange fluxions nouvelle méthode leonhard mémoire formally geometry formules cardinal analysis topology dedekind legendre analysin colossal theorems lectures approach methodus programs abstract synopsis bourbaki saunders birkhoff kiselyov calculus numbers journey related gardner richard hilbert russell through systems ordinal william feynman dantzig thought physics reellen nicolas neumann theorie kenneth garrett winning russian history douglas waerden katsumi complex apostol wacław moderne reading riemann fourier solides chaleur maximis minimis itemque lejeune calculi grösse moratur leibniz fractas newton andrei nomizu martin conway proofs anzahl course theory halmos horton euclid aigner person newman joseph george linear wright gustav claire voisin dummit andré gödel leonid points escher minima maxima asimov curvas genius welche dunham milnor alfred grunde liegen conics fields cantor heinz peter über durch gauss einer david great reihe circa euler north foote aller hodge genus pavel isaac hardy wolfe unter boole plays essai kunen louis robin naive elwyn games oskar perga corps hecke situs james rené world hopf 1897 pure john zeta quae from 1748 paul nova 1950 1859 weil lane ways carl 1827 1807 your 1799 book 1741 nash kurt 1931 1944 nine 1760 1928 1770 1857 pour 1755 1874 carr 1837 1684 laws 1687 1939 1867 bach 1801 1761 1854 dans die nec von guy van sur tom set vol mac zur 3e by 46 ii
+Openbsd.Install71:1650837347: Signify.Verify Openbsd.Buyvm Vmctl.Usage Openbsd.Bsdrd Vmm.Configure Dhclient.Configure IP.Myaddress Hostnameif.Static Dns.Overview Unbound.Configure Openbsd.Fdisk Openbsd.Disklabel Openbsd.Base : 67db13a3ff84ca60 congratulations automatically configuration specifically installation asynchronous registration architecture successfully independence inconsistent partitioning verification maintaining information recommended nameservers dynamically configuring interfaces encouraged management installing administer networking configured prepending cloudflare resolution manipulate unverified hostnameif maintained fontconfig eventually simplicity substitute developers statically particular utoinstall loginname disabling disklabel directory fragments available including megabytes subdomain carefully qualified libraries sometimes addresses allocates myaddress described invisible install71 allocated fw_update important selecting relinking completed packages username autoconf selected labelled pathname properly xshare71 password entering provider internet location programs overview graphics download terminal possible cylinder security downtime dhclient settings pressing remotely disabled targeted timezone 19285344 14270432 continue 12900448 accident software firmware prohibit physical 34010176 guessing 0xa57ab0 freetype 22746368 included contains account openbsd upgrade replace require hundred restart 1279840 default minimal present without pattern 5190752 booting console example forever virtual 3388864 printed sectors machine signify 7932864 release command invalid against xbase71 decided reading gateway xserv71 connect xfont71 relying outside routers causing records usually unbound caching audited hosting realize details improve mistake instead consult process correct options prompts answers reduced 7883296 updated control warning closest because 1614848 loading probing appears logging seconds 3891908 3895112 special pubkeys attacks mounted already welcome 1279776 layout common inodes status unless create unlike during before werase change blocks system prefix bypass normal rather likely verify google sha256 length 115200 should choose either game71 reboot unused kernel unique guides please saving subnet double cannot cdboot making device comp71 290736 435984 assign 708608 unable single groups follow random cancel speeds bootup finish virtio number fstype accept needed screen typing return mirror nosuid escape offset really except simply amd64 below local quad9 16384 large needs allow disks fdisk 79352 20480 x11r6 which nodev 79984 whole lower twice trick would fresh drive rsd0k safer 19200 38400 19840 setup about 57600 newfs ustom abort flash avoid rsd0a bsize wrong man71 other fsize proxy later vlan0 bsdrd often 22339 media https match usage added timed after buyvm vmctl fetch files 1022m might vt220 state leave where there shown shell short check reset bring first begin email fonts panel image fixed chose users title ports notes quick such exit done then sets ipv4 mind have 2449 make your 2bsd 2022 when 2448 1314 been none 1690 home kept 1029 4498 once 3873 5499 swap this will skip that most sake list them root from must text does html faq4 team ones 98mb 9919 each esc7 sd0i left last only long risk 8080 sd0e dhcp rd0a uses case vio0 wish want than wait sshd cd0a 638k ipv6 seed sure echo com0 abcd 2001 9600 fccf 2602 data intr ctrl back kill same both dump rd0b help hd0 may dns apr sun has www org tgz web mem db8 run edt a20 pc0 yes its any vmm but foo nfs 109 sd1 100 url few now em0 154 5mb 512 mnt usr src var 624 9mb iso mbr gpt tmp 879 668 cpg vps obj alt 0m 7m 81 e0 kb 03 rw 30
+Math.RecentChanges:1650810778:  : recentchanges reading april math 2022 jrmu 24 05 am by
+Openbsd.Botnow:1650780857:  : redirect download software openbsd install botnow ircnow https here tgz can org you
+Buyvm.Ipv6:1650780644: Hostnameif.Static Nsd.Configure DNS.Ipv6rDNS Nsd.Zone : routedsubnet2 routedsubnet1 responsible nameservers networking hostnameif convention addresses configure delegated replaced ifconfig ipv6rdns assuming nexthop changes subnets already example ability records digits static fewest actual create choose attach longer adding gives where using guide every buyvm click which right have your sure from zone will save need just able plan make with type then icon this gear well pick each api png use and run vps nsd new tab own for how now set may ns1 com hex ns2 to 48 be by up
+Eggdrop.Rss:1650730817:  : eggdrop xfnw need your help rss we
+Almanack.Route:1650435793:  : manipulating information parameters interface computers resolving configure redirect physical machines gateways directly consider almanack without routing virtual viewing example network openbsd adapter current address default certain manual access usages scheme mygate please change kernel latter table names where route solve shell other hosts bunch some have show edit file inet your tool many more nics card page just 168 192 can etc and use try may dns 24 of if is 5 0
+Ntpd.Configure:1650435430:  : configure important accurate ensuring filtered address specify server listen query title very ddos ntpd from your ipv4 time make sure non 192 168 etc the for to 0
+Openbsd.Ntpd:1650435368:  : configure important redirect filtered accurate ensuring openbsd specify address listen server query title from ntpd ipv4 ddos your sure make time very non 168 192 for the etc to 0
+Openbsd.Iked:1650431809:  : githubusercontent malwaredomains 4skinskywalker certificates stevenblack justdomains forwarding nameserver blacklists alternates newhosts2 blocklist malformed installed configure interface debugging newhosts3 addresses currently provides consider capitole manually outgoing reformat gambling resolver unwanted provided index_en redirect password username server1 unbound command replace example entries version clients packets control ruleset updated connect unified openbsd mirror1 running torrent passive caching writing servers tagged isakmp latest filter mmotti master create obtain ikectl htdocs static ignore lookup censor verify pihole access needed reload allows ircnow sysctl ipcomp enable public mschap piracy regex start these https using lines added files pfctl local ikev2 rcctl srcid roadw point proto valid ipsec which match check quick taken must doas iked this used note site dhcp porn anti from will here have with tail only inet then into does zone step last bind turn blob curl peer port that vio0 crls been made enc0 your 113 raw 203 get etc awk esp vpn put 192 org txt app 168 dsi has php var any eap may udp can 127 tcp 509 pki www rsa key crt dns rdr 24 53 dl we of 10 dv
+Ircnow.Networks:1650385336: Ambassador.Ilines Ircnow.Ilines : communications onlinegamesnet chatlatinoscl aerospacechat explosionirc linuxconsole hackthissite unviersochat universochat universalnet organization allnightcafe darkscience germanelite environment chatplezier trendsohbet communities description forumcerdas performance umbrellanet chatsystems simpletable discouraged roleplaying kampungchat insomnia247 chathispano chatjunkies overthewire responsible banglacafe spiderchat allz4masti allnetwork digitalirc coolserver superhosts irchighway redhispano liberachat amorlatino technology characters ambassador friendsirc shadowfire nationchat twistednet chatlounge zwergenirc virtualife quoservers chatsansar appointing tildeverse nastycode community hybridirc ircfreakz ircsource canternet puntochat lecturify quartznet zandronum passwords redlatina shelltalk alphachat mindforge amicachat malikania malaysian providing volunteer pineapple chateamos chatgentr siamnarak globalirc chatspike viciochat dejatoons confirmed darkfasel minecraft freeunibg robothive streaming desirenet chewbakka enjoychat freshchat rootworld swisschat gamesurge successor allrednc chat4all irccloud darkmyst chatasia chatzona freenode greekirc geekshed geeknode chatopia frantech provides services irchaven europnet networks redirect spotchat swissirc swiftirc svipchat stormbit trsohbet sortable spigotmc smurfnet slashnet skychatz tweakers simosnap telegram bouncers accounts handling software protocol zeronode romanian friendly undernet platform buenchat scenep2p recycled librairc afternet afterall oltreirc absoluty openjoke quakenet partner chating juggler etnies6 irc4fun chathub xertion sorcery scratch ircgate irczone cavenet deepest english gz4m3m2 discord halogen italian ircfree channel icqchat epiknet hazinem roircop rezosup gigairc hackint evilnet snoonet geyiktr darkirc webchat browser netchat eggdrop thaiirc technet ayochat bolchat austnet support without azzurra address 2600net bsdunix blitzed closely bitlbee brasirc dealing reports writing perhaps jujube ekolay afterx orange border luatic cherry master apropo efnext please ircnow zonebg dalnet mibbit barton banana exchat geveze twitch secure should gotham hacker tested kalbim exolia ircpal ircnet stable ilines synirc relays column matrix modern invite rusnet glined chateo sturtz bsdnet euirc grape zairc mango https abuse esper rizon wenet class width uugrn lemon amici chaat atrum lucky irctl users today ptnet ewnix evolu zoite where nfnet title based anzub email 42net bgirc zurna anope zenet myirc efnet edgy1 zemra 6697 6667 ircd many 6660 pear plum irc6 7000 they safe ipv6 pirc oftc your fast ally perl room easy want that name best link text irc2 down ipv4 does wnet nfld city xmpp will noxt 6668 9090 when from lego time axon used bncs gimp note 6670 lost wip yes may non get tbd ask 100 fig but znc 127 uk xi jp pw tv tk gt w3
+Openbsd.Install70:1650351144:  : at2jrcwcvdc9wirs7ccwvctml2zlb9hw08dbcs4ocaq nvgokgfwn39hspmugsd2pypwreheqsd9qxu0dfl14u ggcjn9qejgxfa6rm9ewyqkmytwclj0xbv3g1xz 6q8ifonypagikh1uba7e24blvlwy8b okireau1ptetgd2ttini6tuyi ixmajaidzc86j0r9qje34xd ornptemm6yvz4qephw30zl ssh_host_ed25519_key 0xffffffff81001000 ssh_host_ecdsa_key s90wbyaddrrxki3if mqlx5q3ovtmwukbe8 b8a4714aab650659 ssh_host_rsa_key ssh_host_dsa_key ffyz8lcrkp0euza congratulations configuration notifications successfully 7nsiaxc6wqlk asynchronous inconsistent uniprocessor information nameservers proactively securelevel maintenance installing interfaces configured reordering bootblocks 1009053696 1056948224 thunderirc extracting preserving california generating university zkpwu8ncgs utoinstall workaround awvzmpvjye prepending allocated available softraid0 libraries relinking loginname partition automatic powerdown rebooting switching 0x15b1738 copyright install70 newsyslog directory necessary reporting reproduce fragments operating firsttime connected install69 passwords cstarting imagefile qumranet function selected continue mainbus0 vioscsi0 scsibus2 entering xshare70 scsibus1 41943040 pvclock0 pathname cylinder location 14746904 11279680 md_clear 13082752 redirect 14464608 19538944 scsibus0 22598304 33877984 reserved scsibus3 username targeted autoconf guessing pressing prohibit detached firmware creating timezone icmp_seq bbzybwf5 hostname checking terminal progress savecore complete modified scsibus4 enclosed clearing xfont70 openbsd xserv70 network default mpleted pattern sectors runtime 1833600 command syncing xbase70 daemons 5056800 enlarge 1381856 account reduced running console targets gateway address reports version 2744064 include session example netmask problem crontab libexec monthly 5074336 generic welcome utility 3059360 sendbug compile entries 0xf3f40 virtio2 answers virtio3 without contain deraadt enabled virtio1 dnlzjdc openssl isakmpd regents seabios 3448288 virtio0 viornd0 1299648 5281888 storage attacks vioblk0 8025952 package page1gb warning prompts 20480mb created virtio4 1167360 3367952 program 8051648 probing control isadma0 1065252 setting details 3106616 eastern syslogd loading 1299584 1163832 comp70 115200 client sha256 nosuid prefix length except keygen game70 return belled system escape pgrade verifi typing please vmmci0 groups should inodes unique pflogd 348800 876369 kernel sndiod editor change number speeds saving quotas making device symbol layout fstype offset checks ns8250 probes vscsi0 unused rights 1007mb random mpath0 smbios vendor pclmul pvbus0 pubkey ensure weekly domain rotate exists router minute enough before clean flags xsave ssse3 0x3f8 pse36 30ghz intel while bios0 256kb using cache write since every bytes files daily qsize pchb0 remov amd64 man70 disks 1022m 56249 24545 tg100 smtpd tty00 drive shell 962mb https local table point entry early known spamd abort 21440 which 25920 12960 whole 57600 10710 nodev 38400 shown rsd0f again 19200 rsd0h rsd0d rsd0e 16384 valid newfs short vt220 bsize 85680 leave vlan0 setup rsd0g lower fsize ustom x11r6 allow rsd0a vmctl rsd0i rsd0j ttypm safer 20352 rsd0k qcow2 match 10153 will 3046 3289 50mb 3558 1408 1766 1049 each root echo 2124 1339 2457 1493 1113 5145 3916 2021 4249 4582 4889 5478 5785 3609 6118 none 1715 bugs 1984 list 2252 like unix 2508 2764 3353 sshd iked keys case done 7300 cpu0 9600 6348 6515 com0 6643 home 6796 ntpd 6950 dump 7091 7257 xetc 3788 fxsr exit sse4 cx16 2bsd sse2 mail lush cmov 638k 3931 pcnt been 2469 your line when melt itsc lahf long read 2301 5507 1993 from seed good 1995 1989 real arch 1991 1986 baud 64mb 2630 xeon hd0a 2477 1982 acpi 2011 date verw what fifo isa0 pci0 34mb 4032 4313 4531 5440 4774 5068 sd0b swap 5299 1203 1536 0x00 1817 1965 sets 1472 1753 2188 2296 last 584k vio0 elfa 3072 wish y4zc 9574 9792 this 1024 9369 data 2602 tmux sbin ipv6 1179 4147 3456 3148 4467 4684 4915 5260 1958 1433 2816 doas gjdg hag6 2227 2521 2109 does 7449 7769 8128 8460 8793 9113 true 5593 1868 6272 1241 tabs 6617 6937 ipv4 fccf code wday mday hour rpki that have well 1177 test 674 162 usr var oct edt avx nxe aes tue can rev rng tmp but irq 64b mdt mds any cx8 dns the 0p3 src obj org mem md5 fpu vme msr pae sep pge mmx mhz ttl 599 yes 692 ove rpc 103 628 cpg foo 512 895 lun gpt mbr 445 cd0 tgz 806 mnt nfs 332 863 sig 268 780 8mb 758 601 9mb 707 158 alt 3mb a20 pc0 5mb 6mb www 410 217 435 1mb 665 908 640 has i5 c7 9a 2f 1d 2e a1 b5 f0 1b bd 5d 7b e9 7f 4c 1f 4f f9 a9 fd 2c f2 f1 6d f7 c4 9f 8e fb 6b e6 5e a8 c1 3e 1e 5a 4e hv d3 2d e5
+Openbsd.Censord:1649139411:  : openbsd censord
+Openbsd.Dns:1649136288: Openbsd.IPv4 Openbsd.Ipv6 CloudFlare.Cons Dns.Domain Dns.Zonefile Dns.Providers Dns.Records Openbsd.Nsd Openbsd.Vhost Openbsd.Dig Openbsd.Host Openbsd.Unbound : astronomical registration coolchatclub distributed represented nameservers information subdomains cloudflare resolution purchasing convention elsewhere resilient authority delegated hostnames computers addresses providers recommend practical registrar somewhere resolver requests zonefile username internet millions probably purchase register services networks designed possible multiple workload referred contains anything redirect overview memorize remember example control imagine setting specify process openbsd offline billion usually instead records achieve working because however another browser storage queries someone perform unbound second system period ircnow single should unless within easier laptop shares across global depend typing client charge spread number robust called center create actual entire these would which forth owner there using makes panel 20usd vhost after might human level offer files title zones scale comes tries their means could needs given every phone about knows root have such will next tlds ipv6 just cons that free when glue data take your this then like they ipv4 year stop were team only once went upon more them find look into mail also base from able part size many want and dns ips dig nsd org can web ns2 see ns1 isp run let too don non 192 far 168 www was pay fee by go
+Debate.Debiandanger:1649046638:  : debiandanger debate
+Openbsd.Ddos:1648138940: Openbsd.SSDP Openbsd.ACKFlood Openbsd.Tcpresetflood Openbsd.Cu Openbsd.Vmmuser Openbsd.Buyvm Openbsd.Tcpdump Openbsd.Scp Openbsd.Sftp Openbsd.SYNFlood Openbsd.HTTPFlood Openbsd.NTPAmplification Openbsd.UDPFlood Openbsd.RSTFlood Openbsd.Police : ntpamplification thekingofbandit troubleshooting tcpresetflood disconnecting investigation universities inexplicable corporations simpletable identifying limitations certificate description connections responding electronic collection iulian7502 networking conversion cloudflare yyyymmddss responsive protection identified nationchat competitor determined completely confirming addresses criminals bandwidth necessary attackers analyzing depending different reporting decreases interface specifies solutions interrupt universal providers desirenet httpflood filtering resources certainly bystander anonymity financial attacking continues sometimes forensics timeouts although attacked soportes targeted evidence sluggish slightly filtered starting requests software defenses internet hostname purchase messages innocent computer hardware incoming entirely ackflood firewall voxility machines insecure quakenet physical flooding redirect specific argument analyzes receives udpflood provides millions rstflood arriving synflood lucifer_ sortable blocking suddenly transfer s_client packets quickly attacks because openbsd suspect seconds channel replace service hosting however useless perhaps hundred process another tcpdump options traffic further desktop reached maximum offline ircuser unknwon contact 500gbps sustain flooded daemons vmmuser command proxies devices massive tricked amplify verbose console happens counter logging clogged openssl depeche failure mangled diverse acquire cheaper example noticed servers forever encrypt johnreb larger useful ircnow afford single issued unable ddoser should during enough nature common serial avoids motive number behind wastes system within insult either result police cannot origin errors please issues rather output semut_ ramadi detect forced fatfem random prints katrok itself reason accept closed strong unique actual border sooner public stolen elafi quits usage often being users under first bytes where ascii abuse https could buyvm certs there acxjz shows month using above check might ports known sends catch alone blame input freak makes clues fruit money which route intro starr title guide later their about spoof fails still point hints types aejva class spend pcap your doas ssdp fake 1500 vio0 same sftp long more team home true mask rate will wise upon logs like risk that mind keep need cost when take null once stop than them both full this upnp play plug from into have been lots smtp very mock ipv6 were also took just hung ping read onto only many junk adx0 ctrl sure real loss pipe year file bnc1 tune fine sign then much must gisa feel jrmu plum fat1 save see vnc 100 may run due but who try lu2 org eof dal iot why hit cpu dns day few fig cpt ips 443 248 low scp 172 him edu 12 32 42 31 51 23 35 29 38 52 65 45 36 34 07 19 30
+Ddos.Intro:1648138925: Openbsd.SSDP Openbsd.ACKFlood Openbsd.Tcpresetflood Openbsd.Cu Openbsd.Vmmuser Openbsd.Buyvm Openbsd.Tcpdump Openbsd.Scp Openbsd.Sftp Openbsd.SYNFlood Openbsd.HTTPFlood Openbsd.NTPAmplification Openbsd.UDPFlood Openbsd.RSTFlood Openbsd.Police : ntpamplification troubleshooting thekingofbandit investigation tcpresetflood disconnecting corporations universities inexplicable simpletable limitations description identifying certificate connections nationchat determined iulian7502 yyyymmddss electronic networking responsive protection cloudflare confirming completely collection conversion responding identified competitor filtering attackers necessary analyzing different bandwidth anonymity attacking criminals continues certainly forensics interrupt depending reporting interface desirenet decreases bystander providers specifies sometimes resources httpflood addresses financial universal solutions requests slightly arriving argument physical attacked sluggish filtered millions udpflood timeouts rstflood hostname receives ackflood purchase flooding quakenet although machines insecure sortable transfer evidence computer innocent starting messages synflood blocking firewall hardware software internet targeted specific incoming voxility provides lucifer_ s_client entirely defenses suddenly soportes analyzes depeche contact packets command openbsd mangled useless channel tcpdump process proxies vmmuser counter console traffic openssl attacks tricked daemons another flooded devices johnreb ircuser unknwon suspect because quickly happens amplify logging reached maximum seconds diverse failure 500gbps sustain verbose servers hundred forever acquire perhaps massive offline cheaper further service however clogged example options replace desktop hosting noticed encrypt border number rather system actual issues random output itself ircnow wastes prints during errors avoids should unable within nature useful serial either common enough public result cannot single strong sooner closed stolen semut_ accept katrok police detect reason issued afford larger forced origin motive behind insult unique ddoser fatfem ramadi please ascii buyvm ports using spend certs https being where above known month abuse first fails bytes there check users money intro their often point still alone hints about spoof class might which blame under guide route shows clues catch makes later sends title could quits usage acxjz input freak fruit starr types elafi aejva read your that fake many junk will pipe from sign full keep ssdp same real this doas pcap once vio0 1500 them more than stop play upnp mask jrmu plum need have plug also gisa logs into took fat1 true loss mind ipv6 lots home very ping file were then much just bnc1 like wise upon must only risk ctrl when hung feel onto adx0 sftp year tune fine been smtp sure cost both long take null team mock rate save edu org see lu2 dal dns ips cpt but eof 100 scp who hit fig iot may 248 why due 172 443 run few day cpu try him vnc low 52 35 12 45 36 32 31 34 51 07 23 38 29 19 65 42 30
+ISCABBS.RecentChanges:1647379473:  : recentchanges mandarax iscabbs march 2022 15 at 09 24 pm by
+Doxing.Defense:1646513683:  : inadvertently communication quintuplicate crosschecked consequences irresistible embarrassing universities indefinitely disregarding geographical combinations institutions pseudonymous compromising information personality distinguish oversharing expressions communicate undesirable trustworthy unknowingly distinctive grandmother interacting description approximate communities handwriting recognition distributed preposition interrupted definition prevention occupation everything especially forgetting themselves recognized associates population dictionary throughout compromise technology properties university encouraged difference converting registries determined completely identities compliment plagiarize consistent anonymity different passwords anonymous revealing available education americans yearbooks resources searching community incognito including sometimes documents skeletons companies everybody consumers landmarks attackers something usernames workplace developed decreased attending important incorrect sentences perfectly basically effective privately preserved microsoft situation constant metadata anything reducing internet listener language division pictures examples requires software accounts platform location everyone angering recorded identity includes computer describe birthday paranoid chatting students assuming advanced uniquely identify dt20_317 programs continue attended majority anywhere betrayed enrolled national remember database yourself probably security believed harmless together ballpark products commonly websites narrowed separate business uncommon personas somewhat unlikely combined normally spelling improved whenever revealed writings lhfukyhf pastebin speakers forwards analysis original purposes clicking contents exposure opposite whether address machine greatly details someone samples control written message because conceal mention instead mistake imagine mocking without finding whoever stretch contact virtual between similar broader suffice leaking college victims connect however overlap against problem already keeping reusing defense network contend reasons another figures analyze grammar million billion current english teacher cliches copying pasting anybody outside smaller comfort numbers whereas average preface records illegal driving friends methods protect harmful history reading closets shouldn people shared wouldn coming saying leaked enough pocket better states public taking facial tables digest always making united mostly idioms native within median commit higher nearly almost advice doxing become second things really online easier random delete decide taught belong evenly births result longer recent social damage anyone stitch before itself google router server access remove saving select office device amount unless author called school beyond street caught snitch widely raised decade either faster thence linked letter return decent emails secret bridge seeing easily passed safety expose chance family hosted range fully found spent group often those means fatal fired write clean until faces doesn https years break seems today doxed still start which occur nears homes world short truly heart piece style guide jesus gives voter alone happy safer there might about given haven think first scope wrong reset under while doing needs enter third right reuse knows apply their scrub known panic links looks least since false posts phone drill treat lying stays throw class lives human maybe twice strip voice being point saves wants comes mouth waste lies well they send used this hard were will many into that just true docs vpns area pick from bits talk born help same view easy tell rule life door ones also made note show more mind down exif than part text herd next free took both 2022 been tone didn held 2019 idea nine kiss spot date math risk beat fell else much jobs lost wish bank size hurt cure done city late tied goes said make drop care owns has why iii 103 101 102 104 105 irc eye bad lot big 000 499 300 old had gov d20 asp run odt pdf by 37 13 75 14 11 21 12 15 16 38 18 24 32 25 27 26 23 34 35 28 33 29 36 40
+Mlmmj-archivist.RecentChanges:1646287134:  : recentchanges archivist install mlmmj march error 2022 03 at 05 26 am by
+Vi.RecentChanges:1646020835:  : recentchanges introduction february limits 2022 add vi to by 16 04 at 27 pm
+Openbsd.IRCBridge:1646017184:  : q234fipjfjaewkflasdfasjaslkdf t9xujcw_tws1iv82pcbaht8kfsy odk0nzyyndu0njkxnzc0ndy0 prerequisites configuration sasl_password corresponding lilywhitebot applications congratulate useproxyurl information suzerainbot discordapp developers relayemoji resources ircbridge nickstyle correctly botfather following configure 123456789 telegram download channels nickname disabled anything remember properly fossifer username realname pictures working support methods started running example message install tencent recevie options specify setting forking forward openbsd careful timeout content change please readed oauth2 groups system server enable yvuueq search passwd ircnow libera called should invite branch create github client easily before newbot false login after limit about click token robot steps mkdir usage which basic clone https taken guide visit send make will from your also same need join home only keep true doas save link auto chat node main have file when done utf not com and npm get yml api why but did how add had can 100 js of 30 by cd 14 qq mv we
+Main.WikiSandbox:1645571110: PmWiki.TextFormattingRules : bsdnetoezbtsbrzlnrgxn7iv6qokouuyr4dkd7f2xt6fmmacvi2kjjad 4ufrikyorlatp5ekgz6tlre22v6b5jxqbiid6cp7nuhemklukiohidqd ircnowww2n24aluccfzydqelohej55yrgfkpnp6jc6geijmqht6w77yd textformattingrules 6sntav3syf2yls5a oddprotocol wikisandbox experiment ircforever thunderirc bsdforall shelltalk nextcloud biboumbi archives minetest accounts unstable bootcamp openbsd bitlbee freeirc servers soon™ hosting prosody mailing wesnoth xonotic webmail pleroma webchat pmwiki 9pchat border bottom matrix ngircd mumble width rpblc click lemon games onion mlmmj feel unix simh list http edit page sftp just most with this misc main file comm link perl tech what org znc who the use mkf c9p got cgi vps 80 wm of 1
+9.Audio:1645387677:  : nopenopenope jacksense audiostat necessary possible audioctl buffered thinkpad detected nothing speaker outpath sources bufsize mp3dec 100d1b oggdec outamp output inpath 70000c volume f00000 laptop inamp music right hpout input green shows micin being other codec inpin which check posts https sound aout eapd echo rear used x200 beep pins this line card that pink play 1024 ← dev ext int you c1d fix can for → ain and git set 211 net now sep cat are ft 26 sr 29 on my if 25 23 17 16 22 19 18 ls 30 28 27
+PuTTY.PuTTYgen:1644989095: Sshd.Disablepassword PuTTY.Connect : aaaac3nzac1lzdi1nte5aaaaincb6gpcoqpg4byflwqhya2smytv7rjfvw disablepassword authorized_keys editauthorized authentication copyauthorized alternatively keypassphrase conversions additional connection parameters privatekey worthless publickey generated bqo3hftdf described puttygen4 puttygen3 puttygen2 puttygen1 creating hostname optional together securely 20210809 pressing security ed25519 openssh becomes session copying provide logging another warning earlier comment notepad pasting confirm created attach shared forget should ignore browse export adding select bottom random client anyone field never click paste begin shift using title again guide front lines write setup login into ssh2 from with type sshd used ends fill this like look only join file load your hint ctrl webm uses give save menu keep down safe pair will more have gif mp4 png ppk can ins top now of cc go
+Police.Fingerprints:1644674959: Police.Intro : i2ageyhy0mka8aembvk3x 99a4jtzu7bnmexocesf5e fingerprints registration controlpanel listnetworks connections expressions discouraged 1026844251 suspicious 1644081761 guest55013 connected customize vacevcu2h detecting criminals available something sometimes signature addresses technique deterring username adminlog addition metadata accounts probably collects matching existing multiple password patterns channels 20220205 hostmask stopping vigilant stealing automate realname disposal phishing example moddata sqlite3 helpful follows compile version dossier similar prevent quickly figures overrun scammer towards letters noticed usually captcha anytime regular botnets perform replace decloak command details capital select called happen inside typing police subnet unique output client person crimes search reveal botnow single always actual credit change server lookup intro first email whois think scams might using tells cards reply users being abuse while ideas where watch about issue their trick table would names shell check likes race ddos doas mirc will grep this once from ctcp only date rows also that home what find then file more want need with show have arms sort scan made such less half just your tool does hash long part good them msg sed see znc one yes say ips but 192 him 168 ire 394 sun feb bnc www var had job don get 5th if of db 34 00 06 by 30 v7 we 2b 11
+Openbsd.Police:1644521811:  : completelyrandomcloudexample genericregistrarexample ctcp_userinfo_reply ctcp_version_reply autorenewperiod orgabusehandle orgabusephone orgtechhandle orgabuseemail registration orgtechphone orgabusename identifiable conversation orgnochandle organization orgtechemail orgabuseref information orgnocphone screenshots orgnocemail d1234567890 orgtechname javascript associated registrant additional orgnocname disposable las1234567 inaccuracy connecting particular registered postalcode creativity everything operations personally passionate understand infiltrate afterwards lno1234567 expiration background disruption collecting orgtechref interested recommend important sometimes ln1234567 nicknames orgnocref authority real_name netsplits user_name addresses education confusion reporting stateprov criminals something suspended committed translate providers complaint effective therefore realistic attention spamming registry phishing language feedback business networks software purposes customer whatever accounts creation username channels document question printcmd noscript normally reported database unsigned province reseller evidence redirect realname physical allowing possible preserve websites stealing bouncers torsocks anything research chatting friends reports domains servers because finally contact company reasons country openbsd english tickets clearly offline someone grammar setting disable contain support command hosting further control daemons suppose clients updated logging illegal however careful realize pkg_add dialect nowhere biggest orgname suggest section noerror hobbies written options regdate comment attacks besides looking willing autolog respond umatrix browser perhaps malware welcome proving joining within hosted botnet inside videos unable figure turned number guilty entity answer spying header global stolen joined notify emails around should status police taking hacker opcode before verify follow safety ircnow filing admins engine causes useful closes moment double dnssec expiry gather formal reveal unless danger source crimes credit social little google strike subtle things enable change https their 15t05 proof speak fraud 06t00 start irssi about might lno21 query being order takes weeks needs flags 86400 using shell whois spent icann basic hours tells share learn until thief spell comes right vhost twice calls based filed slang lying avoid visit wrong doesn helps orgid linod trust build enjoy doing 39025 07t13 ahead first found ircds media check birth shady still intro brain clues these rules never break while hosts users think rcctl this then want much they mirc once them last that home down from word have size 2020 when msec make tool feel bots free just rcvd your mask else like save case most logs sure more show find doas arin rdap ddos team 8900 card 6039 pick sent over tmux send know owns 4943 used must 2019 2008 many city arpa hide runs shut wicf live type page hubs 2018 fill made 2021 iana stop went lots took talk may thu 127 vps msg url get 36z www 192 ptr dig 168 but don got via law won old why few ns1 295 300 ns2 bad cld him ltd fit has was 12z epp 58z etc fun p2 by qr 04 14 55 80 61 57 41 22 28 24 53
+Dns.Dns:1644478769: Openbsd.IPv4 Openbsd.Ipv6 CloudFlare.Cons Dns.Domain Dns.Zonefile Dns.Providers Dns.Records Openbsd.Nsd Openbsd.Vhost Openbsd.Dig Openbsd.Host Openbsd.Unbound : registration astronomical bindresolver surveillance coolchatclub distributed information nameservers represented subdomains resolution purchasing capitalism cloudflare convention hostnames transform registrar authority resilient computers providers somewhere recommend addresses practical delegated elsewhere requests purchase username designed possible probably zonefile anything internet millions register contains services networks referred multiple remember workload memorize article control specify records someone example however instead because achieve usually offline openbsd working imagine another storage queries unbound browser perform setting process billion totally create shares actual number ircnow system across second easier typing charge unless within single should robust laptop center spread depend period called entire global client would level zdnet https owner makes scale these which zones might panel forth offer 20usd after title there given could tries their index using needs phone vhost comes files means human every knows about your root will just that from then this take free data like look such ipv6 cons into them team year ipv4 over many next wiki have tlds find when once glue were went able size mail stop only more upon want base part they also dns can org nsd dig and web see let ns2 php ns1 isp was run don www non ips fee too pay far 192 168 by go
+Dns.BindResolver:1644478229:  : service_attack administration unfortunately amplification configuration bindresolver surveillance nameservers information convenience capitalism processing thousands installed responses directory localnets isc_named wikipedia following reference available configure rcscripts recursive anonymous recursion overwrite ourselves transform defending ambiguous hostnames addresses existing maintain download writable internic requests horrible millions spoofing services offering internet totally version freedom usually example article instead working openbsd options company clients stopped privacy queries consult package figured pkg_add setting details quickly systems anymore signed quirks simple people choice domain chroot denial bigger inside choose remove attach listen manual things origin enable going every other 09t17 about those geoip _bind libuv https there flood build rcctl allow would could zones empty since makes valid sthen point known zdnet times paste type 23v3 need json hint only 2602 your none fccf edit like file this line must just were 2020 they user nice than guys have that rely with fake care days will some from most good 2022 them var exp 100 dns let tmp why acl org 10z get etc old 127 put new way 162 999 yes bad eof can not 163 but www ftp 1p0 see cut how 24 ok 48 38 by 13 87 55 54 40 cd be 37 81 05 v6 29
+Duplicity.RecentChanges:1643813262:  : recentchanges duplicity february usage 2022 jrmu at 10 31 am by
+Gpg.RecentChanges:1643294993:  : recentchanges description naglfar january verify 2022 gpg add 08 at 09 48 pm by
+Synclient.RecentChanges:1643182831:  : recentchanges synclient configure january 2022 jrmu 24 at 06 am by
+Profiles.RecentChanges:1643182831:  : recentchanges profiles january xfnw 2022 25 at 12 am by
+Openbsd.Tcpip:1643046300:  : transmission applications architecture combination information subnetworks represented downloading hexadecimal connection identifier connecting acceptable delivering interfaces 0xffffff00 physically definition networking computers referring calculate addresses separated basically uploading protocols important depending different listening datagrams sometimes configure expensive necessary openhttpd identical connected compactly something described indicate bitmasks loopback yourself remotely requests delivers hardware uniquely visiting internet messages actually identify software ethernet billions specific services 00000000 reserved starting 11111111 00000001 10101000 notation 11000000 reliable multiple overview valuable slightly responds running combine machine without listens instead quickly desktop meaning special current suppose example gateway default another specify clients routers usually because rewrite however packets include periods numbers written subnets follows servers quality routing viewing private control helpful smaller install openbsd locally becomes losing binary digits inside divide public dotted letter refers stored global choose reason should socket easier change common adding device entire result itself center notice always relies having easily could tells first these bound would every where which often using means order right place wrong exact group three short title might there carry calls those phone audio speed their files least learn about ports tcpip pages sound hurts email aware never 65535 added later video range helps world bits have will part know then same bind ipv4 they that text this more such upon used smtp chat wide into also quad word once uses send need when four user like each host only find from most want much make loss both look last home must even fact test rest type what fast and web 168 255 can 192 127 few has any pcs irc 443 etc udp ftp but ssh may by 80 24 1s 0s 45 23 48 89 67
+Synclient.Configure:1643004171:  : secondarysoftbuttonareas matchdevicepath matchistouchpad horizedgescroll vertedgescroll configuration matchproduct distribution interpreted matchdriver information inputclass identifier endsection tapbutton1 duplicates additional tapbutton2 tapbutton3 optionname touchpads clickpads overwrite synaptics recommend configure following synclient blogspot updating disables software catchall buttons options systems changes details openbsd restart snippet enables default matchos enabled assigns bcm5974 example ignore middle cannot errors bottom sample should corner likely rename mkdir share x11r6 event mouse right apply first linux apple evdev using value added file html xorg that full this here only doas more edit 2010 http link with your into copy when will top and the how see may etc who usr 58 42 15 cp 70 by be 50 82
+9.Install:1642834646:  : af6dfae894dcb1e43f1e7e3d085b50f6d1dcf396e09a37d23c174ea94d8bf244 acc504c319a4b4188479cfa602e40cb6851c0528 australia_queensland canada_newfoundland australia_yancowinn 0x00000000fffc0000 0x0000000100000000 0x0000000040000000 0x000000003fffc000 0x0000000000100000 0x00000000000f0000 0x00000000000a0000 chile_easterisland 0x000000000009f800 0x0000000000000000 australia_victoria australia_tasmania chile_continental brazil_denoronha australia_broken congratulations canada_mountain australia_south canada_atlantic australia_north mexico_general mexico_bajasur canada_pacific canada_eastern ccoonnssoollee australia_west authentication configuration australia_act automatically australia_nsw asia_bahrain distribution genuineintel saskatchewan de4baa668f07 canada_yukon mexico_bajan f2b2b3daeb05 initializing installation experimental traditional 1024x768x16 brazil_west configuring us_mountain us_michigan brazil_east stralia_lhi ralia_sturt initdisplay 21363090432 brazil_acre unfinished configdist subdivided filesystem 0x00021000 0x0009f000 0x19cc8000 webcookies 0x00100000 0x005dd000 successful 0x00110000 partitions completely us_eastern us_central us_arizona containing asia_india processing connection preference 0x0001a000 us_pacific 0x0060a000 0x0ffff000 interface sysconfig requested following 640x480x8 preparing directory configure interrupt confignet mountdist suggested bootsetup cylinders us_alaska us_hawaii completed translate 426684416 mouseport 427266048 dialicmp6 multicast 262098944 262643712 connected distmedia rebooting argentina download partdisk prepdisk configfs ipconfig hongkong username starting optional stopping copydist bootargs ethernet 000206d7 ndbsetup bboooott us_yukon xeon5000 mounting 96982203 1000mbps internet selected bootfile shutdown bootia32 41724786 document 9bootfat 079ba97f 41929587 scanning contains location archives detected continue probably resolver bootable secstore password sensible allproto 8225280 tzsetup network mountfs newuser example devices storage reaming address support gateway specify sysname sectors iso9660 suffice openbsd cwfs64x serving monitor vgasize 4623mhz systems records started default bootmgr freebsd windows 4600mhz unmount bootx64 console halting exiting licking ticking account perhaps iceland uruguay authdom nz_chat desktop indiana instead service switch0 cloud9p jamaica escape choose fshalt 9front glenda locate halted cdboot tables source create please series 516096 attach kernel memory failed 0x2000 virtio serial server gunzip sha256 manual method ether0 locked authid unable 115200 buffer lladdr reload folder domain status 544768 enough format dossrv layout master israel turkey singap poland navajo cached 204800 rather 204801 tracks marked active wrkey tasks clone vmctl exist plan9 local frame nvram image using ready sleep while cdrom order egypt cpurc japan libya which cirno speed bytes holes takes keeps heads write ttyph reset newfs point 1392m mkdir i8042 chmod slaac 1024m going empty amd64 first qcow2 65536 fdisk ttypr chown there blank 1212m shall group owner types admin wheel sd00 zone done time into swap hubs nusb usbd edit menu data sdf0 hard 9fat 587m cpu0 made this just 2021 413m were e820 02e8 elcr 4096 iran orte used hjfs worm eire than room that safe lilo unix from text will 2610 bind cuba hill doas b3ff ipv6 home fe80 f0b2 feda does 8593 fe66 aaff dc4b null echo html vncs http have host dhcp upas your draw mask wait 767m root make sure 256m with bad 386 9pc pbs rio ftp cet 512 125 not log etc mbr png its vmm org 162 are 9fs thu cmd bak tmp 20g yes 260 now try tls tcp dns kbd 255 215 330 126 efi irq jul see gpt bz2 yet any 485 486 prc off wet 775 usr has eet hst gmt esp be rx gb gz cx l0 dx ax mv rw p1 99 49
+Openbsd.Relayd:1642678580:  : troubleshooting alternatively corresponding configuration acceleration dramatically adjustments information loadbalance accelerator server_port server_addr remote_addr redirected connection especially restarting containing fullchain following according typically forwarded listening splitting newsyslog reloading something different examples indicate whatever contents disabled protocol hostname networks properly rotation addition messages separate increase private request instead various webhost domains warning without reverse another towards records produce enabled devices android openbsd suppose options td76656 tickets ciphers provide syslogd verbose archive session backlog perform relayd packet handle simply nabble create output common errors ircnow filter turned daemon reason should ensure making wwwtls header append sample served match which rcctl fails needs doesn close https tlsv1 howto ports avoid value httpd prior where table based proxy check certs hosts entry this made make also your real have once file 2001 both into that html want 1338 8080 like then edit logs size busy wish case send 7691 test copy show will from line mode sack high else icmp ssl etc key may man 443 168 can top org 192 own crt but run bnc its see db8 pem set nsd ios dns act 127 ip6 znc ip4 tcp 128 via n7 ln by pf be of ok
+Openbsd.Dovecot:1642678580:  : ssl_dh_parameters_length auth_verbose_passwords auth_debug_passwords troubleshooting mail_location instructions verbose_ssl mail_debug addresses suggested debugging fullchain openfiles settings required ssl_cert redirect s_client starttls allowing cap_mkdb username changes include openbsd comment coconut dovecot maildir connect readmes openssl rebuild warning ssl_key private pkg_add install service hinted passdb driver userdb static passwd system bottom ircnow scheme spaces daemon vmail login these local forth crypt lines share imap will conf 4096 make very work 8192 here tabs lmtp help must need 2048 sha1 note then doas args many have turn want than more home etc cur max can you 143 org how and var ext blf yes uid gid out new doc usr pem so 10 up is ip if
+Jrmu.RecentChanges:1642666950:  : libertyordeath recentchanges rmsboycott december marriage april jrmu 2021 may bio 03 06 by pm 56 12 09 am 14 36 01 23
+Vps.RecentChanges:1642631202:  : recentchanges dodocrypto december openbsd october august intro 2020 2021 jrmu vps at 03 by pm 26 12 10 35 am 22 08
+Marketing.Marketing:1642631202: Marketing.Memes Marketing.Recruit Marketing.Freedom Marketing.Opportunity Marketing.Independence Marketing.Republic Marketing.Enterprise Marketing.Religion Marketing.Founders : independence opportunity enterprise marketing targeted founders religion republic outreach undeadly netsplit androirc recruit freedom network search mibbit listed https memes ideas spam mirc ads our tax org ban but com
+Pylink.RecentChanges:1642631202:  : recentchanges december install pylink chroot jrmu 2021 by at pm 03
+Openhttpd.RecentChanges:1642631202:  : recentchanges openhttpd configure december october naglfar hosting perl jrmu 2021 08 pm 04 at by 14 11 28 18 am 06 23 03
+Telnet.RecentChanges:1642631202:  : recentchanges november telnet http 2021 jrmu 03 at 18 pm by
+Opensmtpd.Openrelay:1642631202: Openbsd.Dnsbl Openbsd.Dkimproxy Netcat.SMTP Openbsd.Opensmtpd : misconfiguration configurations unintentional blacklisted destination fakedomain otherplace configured improperly censorship relay_dkim pretending recipient opensmtpd rejection dkimproxy addresses openrelay sometimes external crackers internet messages criminal spammers example invalid configs prevent appears openbsd malware viruses trojans running domains similar receive pleased ruleset privacy testing another because provide chances spoofed reading victim sample allows relays either server action netcat beware notice though sender anyone banned abused forged bypass should likely hello using check flood email trash hosts esmtp local comes never dnsbl title these match often being worms above could only that this here make sure when from hide will your helo with says been rcpt want meet user also don 143 163 250 why 550 and fix how get has 220 but put can see to if we 38 81 ok
+ZNC.Troubleshoot:1642631202:  : troubleshoot bindhost messages getting records options clear your have znc dns fix two the set not if
+MailWindows.RecentChanges:1642631202:  : recentchanges mailwindows november connect 2021 jrmu 27 at 03 12 pm by
+Asterisk.Install:1642631202:  : asterisk examples openbsd install pkg_add share local doas usr etc cp
+Ircnow.Oper:1642631202:  : minutemin training announce unix101 openbsd servers support ircnow rights ngircd finish chanop index https abuse admin wiki team code must duty oper php org znc
+Ircnow.Sonsofliberty:1642631202: ZNC.Support ZNC.Admin Ngircd.Oper Irc.Chanop Minutemin.Duty Minutemin.Server Openbsd.Team Servers.Rights Openbsd.Announce Abuse.Code Openbsd.Police Marketing.Marketing : sonsofliberty announcements minutemin procedure marketing handling training openbsd servers support channel unix101 finish police ngircd rights chanop ircnow admin guide abuse team duty code must oper znc
+Sandbox.0dev:1642631202:  : rockylinux blinking sandbox uploads install ircnow setup1 cursor https until arrow press wiki than 0dev you saw png vmm org at
+Opera.Connect:1642631202:  : congratulations specification corresponding connection” customisation organization installation newsgroups additional downloaded statement providers extension interface customise completed operamail according accounts software password computer incoming outgoing inmotion address proceed setting section labeled service require select attach follow setup1 secure simply finish “use button ending wizard server window adding action cancel client fields double accept email happy using right image login clean again below check click step3 shows agree start their terms order after open name your icon edit also with stop next this file from that asks into then will left find want type port imap days tabs and jpg see png for – box pop exe 12 4a 3a 10 6a 8 5 7
+Opera.RecentChanges:1642631202:  : recentchanges november connect opera 2021 wiz 16 at 12 am by
+Conversations.RecentChanges:1642631202:  : conversations recentchanges november connect 2021 jrmu 05 37 pm by
+Psi.Connect:1642631202: Xmpp.Xmpp : registeraccount chooseusername accountsetup lightweight transfers contacts password existing already servers unicode example created success support connect freedom windows attach ircnow manage linux click https macos works xmpp open from pick next your been chat full this file have fast easy list png psi and has org new can app the if it im of
+Psi.RecentChanges:1642631202:  : recentchanges november connect 2021 jrmu psi 17 at 03 23 pm by
+Xabber.RecentChanges:1642631202:  : recentchanges november connect xabber 2021 jrmu 23 at 10 am by
+Monal.RecentChanges:1642631202:  : recentchanges november connect monal 2021 jrmu 23 at 10 32 am by
+ChatSecure.Connect:1642631202: Xmpp.Xmpp : sendnotifications createnewaccount conversation registration accesscamera certificate id464200063 shareinvite chatsecure encryption enablepush checkmark sqlcipher including settings nickname download password provides advanced security generate features consider thankyou moreways appstore another options servers example sharing invites privacy connect protect warning locally pinning should attach finish custom signup ircnow choose corner better public itunes source allows newssl omemo after right maybe later https apple inbox using xmpp free list this open band save type then from both your icon want show logs tap png otr com ios org non top for see tls via of ok
+ChatSecure.RecentChanges:1642631202:  : recentchanges chatsecure november connect 2021 jrmu 26 11 36 am by
+Dino.Connect:1642631202:  : connect attach dino png 1 2 3
+Mcabber.RecentChanges:1642631202:  : recentchanges november mcabber connect 2021 jrmu 26 at 01 38 pm by
+MacScreenSharing.RecentChanges:1642631202:  : macscreensharing recentchanges december connect 2021 jrmu at 11 57 am by
+Sshwifty.Install:1642631202:  : sshwifty_openbsd_amd64 release_openbsd_amd64 tlscertificatekeyfile tlscertificatefile sshwifty_config yourhostname redirection recommended request_uri sshwifty_0 miniontoby sharedkey webserver copyright herokuapp releases prebuild yourself starting location download possible restart example version presets install firstly without because running domain should folder script return create listen errors github simple seeing reload moment ircnow making nirui tells certs perms notes stuff https chown setup login pfctl httpd guide allow chmod block mkdir this 8182 need what edit page wont then doas port 8080 them good into 2021 json want beta here wget very nano some have that and etc one add ksh bin don 302 can org ssl xzf put for gz cp cd of
+Openbsd.ZNCAdmin:1642452922: Debate.Dogfooding Bouncer.Bouncer Openbsd.Less Openbsd.Ilines Openbsd.Irssi Ircnow.Networks Openbsd.Vhost Openbsd.Ddos : configuration reconnections disconnection disconnected troubleshoot controlpanel certificates successfully instructions investigate maintenance exclusively fingerprint oftentimes dogfooding improperly configured connecting attempting vl0gy6rv79 validation authorized encrypted repeating important globalirc sometimes plaintext indicates following recommend hostnames solutions addresses throttle everyone messages redirect whenever networks adminlog possible wherever innocent benefits continue trusting manually clicking stopping disallow zncadmin 2600net through servers correct without usually moddata command openbsd example closing because bouncer request forcing include evasion sharing attacks reasons returns consult similar section expired trusted disable failing slowing dealing problem warning banned caused ircnow likely rather unique should attach scroll forced fixing abuser debate dalnet typing bottom reduce switch offers glined manage ilines admins either client prefer ensure errors search common adding please secure user3 which there means title users irssi user1 check front using being certs below user2 these tries fruit https lacks user4 quick issue write vhost major helps shows above enjoy daily your will this ddos ipv6 home down less want that only then from 2021 znc5 gets uses pick 6697 6667 than test irc6 edit ipv4 scan find list case page link more each been team grep doas hope over znc1 make spot znc2 both must need they does next znc3 soon znc6 same znc4 most have sign save are see may ssl png won 256 but day bad not msg org bnc web let has way run 09 23 12 50 29 28 33 01 51 03 52 by 14 24 06 19 15 55 08
+Pylink.Install:1642452922: Oidentd.Install : zl0xnpepqimax2wabkn5gcowomyei1pu5jqyyqnulazr4bxqmscz0mgbhqbccke 9epkgnfslszhjk9yjy16mkqtekcvzohdt1myabxqtjq fylnwwxsvxc2gpn3am994fmitd abcdefghijklmnopqrstuvwxyz aebckwwa0hqvnuyigbbwqg allow_free_oper_links accept_weird_senders allow_clientbot_pms whois_show_accounts whois_show_server 3u5eotbszwl3wwvf0 textfilter_globs clientbot_styles wlvlzycgbnjpmvqy pylink_altnicks relay_clientbot troubleshooting spawn_services show_netsplits forcetag_nicks administering masshighlight disadvantages notifications throttle_time pylink_ident installation peerpassword accidentally require_oper dependencies time_format autoconnect servprotect pylink_nick permissions highlights sslconnect mypassword prohibited shibboleth cachetools changehost punishment connecting libpython3 setuptools maxnicklen min_length libpthread represents frequently eventually serverdesc afterwards joinmodes configure following pkgconfig watch_pms unchanged unidecode something min_nicks shortened passwords localhost uncomment generated encrypted recommend separator profanity sometimes together username loglevel recvpass networks sendpass commands channels multiple partquit automode hostname sidrange libiconv antispam protocol botident whatever reliable reserved requires security hostmask mkpasswd properly f6e1cdd3 aborting defenses replaced realname automake messages unstable bindhost insecure hideoper console libintl warning specify someone trusted section aclocal oidentd servers display botnick example passlib running netname logging libexec libutil plugins depends yournet because include pnotice letters joining simpler address passive attempt crashes bloated written related pkg_add already restart useradd prevent quickly finally process enabled opping chroot global harder prefix github pyyaml adjust please floods ngircd remote exists should simply remove sha256 pbkdf2 action export delete rounds resolv status inside reload prefer reason errors psutil across remain create phrase appear domain order ifend 22986 false stuck files 16667 group rcctl those going block below leave lines sjoin squit games stats noisy lists login 29000 opers steal vhost match hosts extra 81447 above claim 16697 named other ports check users again names share owner buggy mkdir embed first hints title clone https shows guide home team upon jlu5 true pip3 oftc this libc each then like want must note need doas here pick pure more 2021 done from that when keep says man1 28tu less used kick with info next libm ctcp will have test very does edit also cert hash kill only grep gets full lets help yml usr can doc msg 143 163 var 127 pid etc 123 now pem bad ksh may 0py vps py3 495 raw new 38 19 39 15 03 p7 08 by pc 10 96 11 m4 30 50 26
+Irc.Chanop:1642452922:  : yourchannelname disconnected description information registering registered something retention registers following chanserv services security channels networks someone founder setting another however usually current options ircnow admins should choose secure signed chanop worked manual manage client taken peace modes kicks topic check allow rules about after first doesn names years this done else even then show last that 2018 like into join nick says case didn yeah will used with 2022 been want lock type org got has isn get ask can ago msg and pdt ban jul my of 39 by if 35 06 21 34
+Pylink.Chroot:1642452922: Oidentd.Install : zl0xnpepqimax2wabkn5gcowomyei1pu5jqyyqnulazr4bxqmscz0mgbhqbccke 9epkgnfslszhjk9yjy16mkqtekcvzohdt1myabxqtjq fylnwwxsvxc2gpn3am994fmitd abcdefghijklmnopqrstuvwxyz aebckwwa0hqvnuyigbbwqg allow_free_oper_links accept_weird_senders allow_clientbot_pms whois_show_accounts 3u5eotbszwl3wwvf0 whois_show_server clientbot_styles wlvlzycgbnjpmvqy textfilter_globs relay_clientbot troubleshooting pylink_altnicks spawn_services forcetag_nicks show_netsplits disadvantages administering throttle_time masshighlight notifications pylink_ident accidentally dependencies installation peerpassword require_oper pylink_nick autoconnect permissions servprotect time_format prohibited afterwards represents highlights shibboleth punishment libpthread sslconnect maxnicklen serverdesc libpython3 changehost min_length cachetools setuptools mypassword connecting eventually frequently watch_pms shortened localhost encrypted pkgconfig unchanged profanity uncomment generated configure unidecode separator following joinmodes recommend passwords min_nicks something sometimes hostmask recvpass username libiconv channels security properly commands sendpass mkpasswd protocol antispam automode multiple networks partquit together hostname sidrange whatever reliable f6e1cdd3 automake aborting realname botident requires defenses loglevel replaced messages reserved insecure bindhost unstable hideoper running depends servers letters yournet netname warning example botnick libexec console logging include libutil libintl plugins because someone specify pnotice aclocal attempt useradd prevent finally already display restart pkg_add passlib bloated oidentd simpler process quickly crashes written related joining trusted passive section enabled address chroot rounds pyyaml harder should resolv ngircd prefix remain sha256 psutil pbkdf2 phrase github reason opping adjust floods exists export global delete status remote create appear inside reload remove errors domain across simply action please prefer order ifend false other 22986 claim again users stuck 81447 noisy files lines named those going 16667 ports block 16697 below leave check extra login 29000 above rcctl group hosts steal sjoin squit games stats opers vhost match lists names share owner buggy mkdir embed first hints title clone https shows guide home team upon jlu5 true pip3 oftc this libc each then like want must note need doas here pick pure more 2021 done from that when keep says man1 28tu less used kick with info next libm ctcp will have test very does edit also cert hash kill only grep gets full lets help yml usr can doc msg 143 163 var 127 pid etc 123 now pem bad ksh may 0py vps py3 495 raw new 38 19 39 15 03 p7 08 by pc 10 96 11 m4 30 50 26
+9.RecentChanges:1642452922:  : recentchanges keybindings heheheheheh independent grammatical jsdrawterm hostowner september meeekeeef sysupdate 9gridchan plan9ini november chording december partdisk october january authsrv install errors netcat links cvsfs fonts stone ideas 2021 2022 jrmu 9pfs todo zuke some xfnw mkf 101 ssh fix ndb hmm by 06 pm 12 54 46 15 24 04 30 29 11 16 47 08 28 05 13 17 36 53 19 58 00 40 39 23 03 07 52 09 25 31 59
+Cvs.Repo:1642452922: Cvs.Anoncvs Cvs.Cvsweb Cvs.Intro : allowstreamlocalforwarding allowagentforwarding allowtcpforwarding disableforwarding administrators automatically x11forwarding forcecommand permituserrc permittunnel permitlisten sshd_config immediately permissions recommended directories permitopen executable releasetag containing repository maintainer committers afterwards directory vendortag permittty ownership transform following committed therefore somewhere replaced imported specific checkout existing reponame explains shortcut drwxrwxr granting properly optional original accounts groupadd argument profile cvsroot connect provide prevent working ircnowd tracked useradd changes restart setting suppose example usermod located anoncvs current create folder sample should module source author access delete inside result cannot safely bottom script rights server export admins decide simple having before brogue cvsweb called actual botnow wheel begin login chmod works files match title never intro guide first rcctl apply shell mkdir users acopm write total named chown since code doas 512b jrmu then make them look this like also only time will that none used edit next from logs want they your have with path just note does into init type when omit once echo each give else need see who via new are usr may don aug bin etc get yes any lha put oct fix apr cd 06 57 46 27 10 16 by 48 42 29 0k 26 04 17 19 rf 28 3
+9.Ndb:1642358792:  : ndb 9
+Openbsd.U9fs:1642357427:  : authmethods authrhosts unofficial authp9any authnone outdated default openbsd package install 48e1e21 ea0391c stream nowait 100644 enable server github mirror clone inetd ports start first rcctl build local there index share apply patch https reads doas path from make this conf runs root u9fs char user diff bin and log var com etc add 152 usr don 564 tcp cd to 9p
+Gpg.Verify:1641678523:  : originally integrity comparing computed verified pkg_add created verify gnupg value title when file gpg2 hash doas can was the sig of be by
+9.Chording:1641220856:  : chording middle finger click right three left tap two mac one 9
+Bncnow.RecentChanges:1641141323:  : recentchanges january bncnow 2022 jrmu at 11 18 am by
+Census.Census:1641122853:  : pasteserv following provides operserv chanserv services memoserv fileserv spamserv dataserv nickserv botserv achurch census andrew offers forked basic title sense from that make http irc the but org is
+Bncnow.Bncnow:1641122333:  : programming connection searching multiple bindhost nickserv networks language possibly written bouncer specify history across forked psybnc bncnow allows create needs major only easy from ipv6 ipv4 user well just irc one can old of
+Minetest.RecentChanges:1641075293:  : serverlocations recentchanges addingarenas texturestyle worldbackup monospaced minetest updating commands economy april 2021 jrmu mkf aes may am 58 10 24 by 12 32 pm 15 08 56 11 59 00
+Sftp.RecentChanges:1640844785:  : recentchanges december chroot sftp 2021 jrmu 30 at 06 01 am by
+Nsd.Zone:1640255593: Dns.FQDN : responsible yyyymmddnn 2021072701 nameserver subdomain authority increase sysadmin multiple replaced example address results written minimum section control updated records suppose refresh correct origin expire number serial adding period symbol create digits master reload month retry edits 86400 files tells after title needs start means first entry email lines these zones that made same been this note sure with fqdn then host ipv6 2001 test doas make 3600 27th will form 1800 july want year 1008 fccf 2602 aaaa open here was com ns1 soa day you and nsd are dns see db8 has 162 1st var two 168 run ttl 192 by to 38 of us 87 if
+Openbsd.Wifi:1640185166:  : accesspointname 1234567890 hostname multiple password openbsd instead replace wpakey points should real with wifi dhcp join nwid etc the use and you for if0
+Ffmpeg.RecentChanges:1640177124:  : recentchanges recordscreen december ffmpeg 2021 jrmu 22 at 07 00 am by
+Sox.RecentChanges:1640177124:  : recentchanges december concat 2021 jrmu sox 22 07 01 am by
+Parec.RecentChanges:1640177124:  : recentchanges december record parec 2021 jrmu 22 at 07 am by
+9.9:1640172607:  : everything networking operations namespaces mainframes popularity rewritten terminals resources extending different interface multiuser something problems everyone expected programs multiics advanced versions bothered whatever platform possible touching security research replaced examples graphics userland protocol features dotfiles teletype language drawback openbsd unified ignored private showing process without aarch64 hacking serious systems another created reasons besides visable sockets instead streams systemv dynamic daemons sysctls however because classic toolbox started itself allows unveil modern happen linked poorly secret easier solves escape thanks trying chroot handle unixes ported needed folder around really empty ideas plan9 procs httpd doesn links those magic forks mkdir stuff makes binds about would which users annoy never usage whole title still using could linux apply these share alien amd64 audio small worse later years hence want view your have data copy will like i386 risc this many same know gets more uses that fact hard even ways done used time goes each most just such 1970 was ssh etc var www see can nfs x11 has own sub sym got few run pdp fit say key asm by of 9p ui pc 2
+Sox.Concat:1640156470:  : concatenate audio1 audio2 using files sox wav mp3 two rm
+9.Independent:1640004446:  : independent software title minds for 9
+9.Partdisk:1640000382:  : installation c5064m4ssd2 partitions subdivided suggested following something overwrite sensible probably continue partdisk sectors layout really second 50000 where table would plan9 count there found start allow first again sde0 will just type then like time zero wipe want that data term this prep were and dev adn try yet can fat see not use be if of go dd q
+Ircfs.RecentChanges:1639816976:  : recentchanges december ircfs intro 2021 jrmu 17 at 11 00 pm by
+Eggdrop.Install:1638694042: Gnupg.Signature Eggdrop.Simple Openbsd.Tcltls : e01c240484de7dbe190fe141e7667de1d1a39aff allrecentchanges troubleshooting configuration fingerprint development examplebot indication afterwards downloaded eggdrop191 keyservers configure signature continues certified eggheads libtcl86 redirect optional filename securely obsolete messages signing belongs showing similar openbsd compile primary release warning unknown trusted reports botname tarball install replace extract problem tcltls action latest simple source should folder create verify import delete ircnow tcllib repeat error steps check owner files above there using gnupg https issue local state might title group make want next dest into with will this your xvzf recv pool then nano edit from need site wiki brss logs that good stop made 2021 gpg org pub for see due cst rsa net sks run ftp asc not mon and was bad www usr may rm gz 31 23 45 58 cd vi 16 36
+9.Todo:1638561149:  : todo 9
+Cloud9p.RecentChanges:1638529367:  : recentchanges hydragyrum december cloud9p roadmap 2021 03 at 05 04 am by
+Hosting.Hosting:1638367278: Rsync.Usage Openrsync.Usage Hosting.Ssh Fireftp.Connect ChromesFTP.Connect WinSCP.Connect CoreFTP.Connect FreeFTP.Connect Gftp.Connect CyberDuck.Connect ClassicFTP.Connect AndFTP.Connect FileZilla.Connect PSFTP.Connect Fetch.Connect : expressiveness professionals simpletable expandrive classicftp interarchy chromesftp commander filezilla cyberduck uploadftp openrsync marketing forklift software transmit sortable webdrive abecabin acrosync fireftp freeftp coreftp connect license android windows hosting website support request started account create winscp ircnow border charge rclone anyone andftp rfloat attach castle psftp fetch putty sshfs usage title setup wants bring width linux live lftp fugu with chat gftp home from crax data real over time your code php8 back that just name help will join ircs then own ads get jpg his 2gb via can org ios mac 100 log not to
+Mc.RecentChanges:1638289496:  : recentchanges november usage 2021 mkf mc 29 at 07 53 pm by
+Mc.Usage:1638215633:  : unimplemented unfortunately manipulation operations convenient subsequent commander customize directory otherwise troubles mitigate midnight subshell powerful flexible provides affected browsing possible account openbsd issuing profile program create double logins ticket please order alias purge usage https still under this your with free make note that will type 3658 cat how use org bug set mc by 1
+Texlive.Sinhala:1638081303: Texlive.Install : ප්‍රයෝජනවත් මෘදුකාංගය සායක්කාර සිංහලෙන් පාවිච්චි මෙවලමක් මාතෘකාව ලිපියක් කිරිඉමට ලියන්න ලේටෙක් documentclass fontsnetwork ඉතාම සකස් මෙතන අසංක setmainfont usepackage italicfont extension මෙය කලා maketitle installed xunicode language fontspec geometry download boldfont blogspot filename textlive building iskoola sinhala texlive section recolog writing xltxtra english article xelatex a4paper එය output follow මම මේ source author bottom begin https there right potha using pota some 12pt left 2017 need date have html com pdf ftp end ttf 5cm top you and 07 cd bf mv 16
+Mcabber.Connect:1637933884: Cygwin.Install Xmpp.Xmpp : iq_version_hide_version clear_unread_on_carbon ignore_self_presence iq_version_hide_os max_history_blocks message_autoaway cmdhistory_lines beep_on_message toggle_offline load_muc_logs configuration iq_time_hide registration log_muc_conf unread_next logging_dir registered installing completion encryption load_logs mcabberrc currently otrpolicy alternate possible password examples username licensed escdelay notavail includes replace support account servers carbons running another console contact connect openpgp pkg_add openbsd default otr_dir windows command change attach create sample jabber cygwin folder ircnow roster status tested online manual client buffer record mkdir alias local share https linux small admin multi order using login only real bind have with your more once xmpp need idle been note will chat doas down sasl here band able file set 514 ssl 521 tls 276 269 say dnd gpl has gnu mac for can 250 org two png jid put usr top 24 17 cp 8
+Biboumi.RecentChanges:1637850477:  : recentchanges november biboumi install 2021 mkf 24 at 12 17 pm by
+Vmm.DebianInstall:1637754286:  : debian_frontend authorized_keys debianinstall corresponding configuration installation environments instructions permissions previously installing necessary graphical important interface recommend debianiso following priority username diskname provided namepckg password unsigned packages sudoers command options advance machine console virtual upgrade updates connect vmlinuz correct minimal network adduser require already switch0 entered 115200 create enable kernel remove memory initrd lladdr during remind server advise locked simple expert ircnow image email linux press amd64 other close ttys0 after 1024m there egrep qcow2 users write media later cdrom https owner start index times vmctl those your then edit file with root have exit from even them will grub give data they soon list home just stop hand menu ctrl text come line wiki via apt vps let ask bpo for run try vmm etc log ssh 16g not are org set car php but tab out new get mbr we if by lh aa gz bb cc ee ff go 14 ls
+Siskin.RecentChanges:1637713267:  : recentchanges november connect siskin 2021 jrmu 23 at 04 38 pm by
+Siskin.Connect:1637685538: Xmpp.Xmpp : pushnotifications sendnotifications usernamepassword preferreddomain registration lightweight encryption security licensed download consider multiple prompted appstore powerful complete another warning example account protect privacy connect servers calling install ircnow attach siskin better offers themes create enable photos device should first allow apple chats https video color gplv3 share omemo using xmpp with home then free next sync from easy your this fill tap and png ios for org way non new one im
+Dino.RecentChanges:1637676651:  : recentchanges november connect dino 2021 mkf 23 at 10 pm by
+Category.GroupFooter:1637664352:  : groupfooter generated fullname category pagelist summary content request normal pages link for 1
+SiteAdmin.GroupAttributes:1637664352:  : groupattributes siteadmin
+PmWiki.WikiTrails:1637664352: PmWiki.PageLists PmWiki.GroupHeader PmWiki.Links PmWiki.ListStyles Cookbook.CSSInWikiPages PmWiki.Installation PmWiki.LocalCustomizations PmWiki.PmWiki PmWiki.PmWikiPhilosophy PmWiki.WikiStyles PmWiki.Uploads PmWiki.InterMap Cookbook.Cookbook PmWiki.TextFormattingRules PmWiki.DesignNotes PmWiki.Security PmWiki.Troubleshooting PmWiki.GroupHeaders PmWiki.ConditionalMarkup PmWiki.FullName PmWiki.WebFeeds : localcustomizations textformattingrules conditionalmarkup pmwikiphilosophy troubleshooting definitionlists trailindexpage administrators cssinwikipages trailpagelists pagelisttrail customisation mytrailpage1 mytrailpage3 mytrailpage2 encapsulates trailpathsep previouspage traillistend observations groupheaders installation indentation dynamically groupspaced appropriate immediately description designnotes trailstart implicitly customised wikistyles liststyles trailstyle wikitrails individual crossgroup breadcrumb containing trailpage4 delineated linksyntax trailpagen restricted namespaced navigating difference displaying predefined navigation specifying directive invisible including sequences typically following repeating separator markupend specified described different pathtrail currently hierarchy displayed generates parameter important beginning explained audience cookbook webfeeds intermap creating trailend security purposes numbered fullname location specific preceded separate bulleted multiple allowing displays excluded circular template optional variable provides standard instance defining intended contains supports criteria nextpage contrast anywhere consider existing summary uploads because ontrail example include follows comment between however markups anchors general setting instead content default creates through version omitted authors defines animals feature confuse levels source appear output before config listed change center should entire except allows simply adding footer others random itself simple linear second matter single hidden newwin placed within things italic treats useful inside latter block false using often added ifend there above would reach every first items makes means build built match types green small count order front basic might their serve below query which arrow class horiz most this just from that same many your tour have font they what will only last size made does then file ways some than like http part more work want non won can don fmt are org faq php has one two via yet by
+PmWiki.GroupHeader:1637664352:  : concatenated groupheader groupfooter definitions linebreaks configured trailstart important trailend audience includes multiple enabled padding comment bgcolor smaller summary styles divend appear define pmwiki output please ffffcc italic border thanks rfloat single clear solid right black ifend class frame equal leave block green when with size font note the and 1px 5px is do
+Site.GroupAttributes:1637664352:  : groupattributes site
+Site.AuthUser:1637664352:  : siteadmin redirect authuser
+PmWiki.PatrickMichaud:1637664352:  : patrickmichaud information pmichaud author pmwiki found about more http com www him can the of is be
+SiteAdmin.SiteAdmin:1637664352:  : administration siteadmin include summary title
+PmWiki.WikiSandbox:1637664352:  : wikisandbox redirect pmwiki main
+Main.Ircnow:1637664352:  : ircnow main
+Irc.Servers:1637664352:  : servers irc
+Freedom.Source:1637664352:  : freedom source
+License.License:1637664352: License.Ircnow : discouraged permissive preferred copyright licenses preserve freedoms copyleft software simplest accepts project network ircnow which needs basic means here must that four bsd the mit gpl
+Bouncer.XChatAzure:1637664352:  : networklist information showdetails id447521961 xchatazure connecting registered abcde12345 connected password username hostname nickname message example bouncer uncheck minutes servers startup replace general ircnow corner select button bottom attach should window client source saying global click 31337 title blank https apple want with menu your from then fill this file auto john open left wait apps type look like port few put png mac znc com yet not new see tab and org add bnc all ssl if mt be of
+Openbsd.Oidentd:1637664352: Openbsd.Znc : disconnection successfully reconnection disconnected individually directories permissions alternative identified afterwards installing restarting different providing spoof_all requested reference solutions setformat everytime temporary disallows identfile following necessary confirmed suggested alternate tampering displayed symlinked enforces username ensuring requests settings networks required contents whatever automate manually commands shutdown themself identbox uniquely displays checking oidentd replies setfile loadmod through account leading changed openbsd process advised control desired ensures spoofed changes without default prevent warning pkg_add consult _identd bouncer module rights global untill inside single method server client status bootup starts admins recent easily latter result issues pretty tricky making easier chroot theirs folder should always public idents create random rather kindly placed loaded reply hence clone reads above which cause helps there users whole wants local would https first other where abuse voila alone while least chown write using group touch chmod home wiki gets sbin send must will from note runs used this doas that move make also echo have case then upon uses whom know turn goto less over your need sets than ipv4 made much more said fact well some each been 664 but new znc can any see has fix irc msg ban via may etc 755 rwx are won put usr don by ln
+Openbsd.Bchs:1637664352: Openbsd.Openbsd Debate.WhyC Openbsd.Openhttpd Openbsd.Sqlite : programming learnbchs openhttpd preferred language software openbsd sqlite debate https stack whyc apps web for the org on is
+Ircnow.Course:1637664352:  : ircnow course
+Openbsd.Dnszones:1637664352:  : redirect dnszones openbsd nsd
+GrapeTeam.Tracker:1637664352:  : grapeteam account tracker august world added error gry for wiz aka vps hi 24 in
+GrapeTeam.GrapeTeam:1637664352:  : grapeteam vinekind small giant step leap one for
+GrapeTeam.GroupAttributes:1637664352:  : groupattributes grapeteam
+Debate.DCC:1637664352:  : essential advantage signaling irccloud solution strategy building pastebin initiate browser ancient weechat clients elegant single folder testah upload figure debate seems there thank would every shove other could sorts irssi ircii might data jrmu then file your this code also well plan lieu need will work that band dump with mirc more much into use dcc web all bot url has for can lot how via out 21 24 26 of do my 25 ok me no
+Openbsd.Easyapp:1637664352:  : rewriting location schedule request rewrite openbsd easyapp httpd needs match conf url php 1 2
+Openbsd.Achurch:1637664352:  : services achurch version openbsd forked ircnow title http uses org of
+Openbsd.Sysupgrade68:1637664352: Openbsd.Dump Openbsd.Restore Openbsd.Cu VPS.Intro Openbsd.Buyvm Openbsd.Top Openbsd.Syspatch : automatically configuration sysupgrade68 installation substitute particular succeeded operating sysmerge syspatch shutdown packages messages openbsd generic restore console version patches reading pkg_add amount attach serial domain proper ircnow should reboot recent system number begin intro files buyvm https check amd64 uname after error cores title quick fruit guide using first note sure doas says then this your html have type want need will pear find make back next dump view most that some and png vps top run www org ram for faq man any may see fix are vnc vmm can use if 98 of my 7 3 2 5 1
+Third.Basilisk:1637664352:  : basilisk browser https third pros cons org
+Third.Dillo:1637664352:  : lightweight statically javascript relatively footprint available supports software default windows license written general browser simple linked secure public dillo based terms gplv3 third under https linux small speed known free made cons code dilo pros fltk org mac its for the gnu bsd and has www is by
+Debate.Accessibility:1637664352:  : adaptivewebdesign accessibility edition debate https info read 1st
+Openbsd.Sshbackdoor:1637664352:  : sshbackdoor unfiltered receiving outbound services address packets sending openbsd hidden public should server allow title used icmp each ipv4 have ddos only dns and ntp for the be
+Grape.Tasks:1637664352:  : grape tasks
+Plum.Todo:1637664352: Openbsd.Upgrade68 Openbsd.PFStable Openbsd.Newdisk Openbsd.Backup Plum.Plum : background attempting upgrade68 donations configure tableend practice familiar firewall pfstable openbsd patreon perhaps country newdisk collect changes coconut f5f6fa cellnr backup b33939 server 44bd32 stripe please skrill paypal ircnow before style color setup guide files title payza first money these major plum done with your page todo wiki note need list org any how way and etc add of
+Category.Users:1637664352:  : category users
+UsersCategoryMirrory.Test:1637664352: Users.CategoryMirrory : userscategorymirrory category_mirrory pagelist test
+Email.Outlook:1637664352:  : checkandsignin internetemail advancedsetup setupservers addaccount signature password incoming outgoing username provide outlook further finally checked attach ircnow select click below image shows imap4 steps feel free four join last easy sure make with help your here type for any are png to on 1 6 5 3 2
+MIF.Test:1637664352:  : testing this page mif my 1 2 3
+Openbsd.Delphinusdnsd:1637664352:  : delphinusdnsd openbsd server title https org is a
+Openbsd.Pfbadhost:1637664352:  : geoghegan pfbadhost download openbsd https html www ca
+Openbsd.Base64:1637664352:  : cmfuzg9tc3ryaw5n encode_base64 randomstring randomname b64decode b64encode encoding openbsd mmime liner https print title begin there test ways this perl easy use can you org two are man 644 one to
+Shell.Mac:1637664352: Shell.Sshfingerprints : sshfingerprints connecting launchpad username macterm2 macterm4 macterm3 macterm1 password macterm5 terminal replace matches ircnow attach verify server shell fruit title press enter click other type done your with real png app org and yes
+Freedom.Opportunity:1637664352:  : opportunity oregontrail marketing freedom attach title png
+Openbsd.Pylink:1637664352:  : archive openbsd pylink github master https unzip jlu5 ftp com cd
+Achurch.Install:1637664352:  : services install version achurch forked ircnow title http uses org of
+Marketing.Religion:1637664352:  : marketing religion
+Third.Devs:1637664352:  : marketing madeonirc attach third devs png
+ClawsMail.Connect:1637664352:  : serversetting portssettings sendsettings configurate preferences raspberry clawsmail acceptssl yourinfo account current connect before attach change click comes steps imap used edit with open this else wont work done didn smtp the are png and up pi if to go 5 6 4 1 7 3 2
+Iked.Windows:1637664352:  : configuration certification certificates destination description authorities connections management connected workplace computer segundo2 septimo7 selected password username internet primero1 tercero3 console trusted windows control network sharing quinto5 finally seconds cuarto4 options account import launch dialog domain should finish remove appear browse attach expand ensure action center client sexto6 panel click inthe after under field local tasks file menu then done your snap fill icon need next root that some iked open tree jpg vpn are now bar box new set add of up my
+Openbsd.Sysupgrade69:1637664352: Openbsd.Dump Openbsd.Restore Openbsd.Cu VPS.Intro Openbsd.Buyvm Openbsd.Top Openbsd.Syspatch : automatically configuration sysupgrade69 installation substitute particular upgrade68 succeeded operating sysmerge syspatch shutdown packages messages openbsd generic restore console version patches reading pkg_add amount attach serial domain proper ircnow should reboot recent system number begin intro files buyvm https check amd64 uname after error cores title quick fruit guide using first note sure doas says then this your html have type want need will pear find make back next dump view most that some and png vps top run www org ram for faq man any may see fix are vnc vmm can use if 98 uu of my 7 3 2 5 1
+Minetest.Updating:1637664352:  : arcadeemulationserver path_to_aes_game occasionally repository submodules downloaded recursive arena_lib mirroring different directory ourselves typically minetest4 terminal existing checkout location checkbox username password settings updating computer uploaded command project changes checked editing message without someone because instead already modname example address locally correct cloning commit adding remove should gitlab folder online master copied linked public update option better branch import always latest click ahead games label first files https group yours after paste upper moves using under clone them make have copy into pull made that sure push here will want open stop this mods else just main then also last home back like run not its can for web now ask new url cd of go by 7 6 2 8 5 9 3 1
+Minetest.Worldbackup:1637664352:  : pineapple_server_3_backup_1 pineapple_server_3_backup_2 occasionally worldbackup minetest4 following shutdown occurred commands program changes worlds should unless every files often week home once have also off the run are cd cp rf rm no
+Ircnow.VicePresident:1637664352: Ircnow.Constitution : vicepresident congressional constitution decisions jefferson moderate debates council mailing ircnow duties report voting manual thomas based title lists help your over and log the
+DNS.Dnswl:1637664352:  : listing title white https dnswl www org
+MacTerminal.Connect:1637664352: Ircnow.SSHFingerprints : sshfingerprints macterminal connecting launchpad username macterm5 macterm4 password macterm3 macterm1 macterm2 replace matches attach verify ircnow server press enter title fruit click other type done your real with yes app org png and
+Openbsd.Spf:1637664352:  : redirect openbsd dns spf
+Sshwifty.Connect:1637664352:  : herokuapp sshwifty connect github https nirui com
+SerFISH.Connect:1637664352:  : serfish console connect https www com
+Tls.CA:1637664352:  : letsencrypt support zerossl buypass free that acme cas com tls
+ZNC.Skins:1637664352:  : extracting uploading _default_ finishing directory download webskins smartftp terminal folders modules account program favicon archive master github client daemon eggoez change inside first wheel local share files after chown login merge under these there heads https boots doas your with like sftp this home that find will them root type able refs used need want user znc now usr and new zip can com pub ssh two be so if 17 2 6 4 3 5
+9.JSDrawterm:1637664352:  : jsdrawterm browser github attach https aiju your com for web png 9
+Fvwm.Configure:1637664352:  : desktopsize configure depending increase virtual restart number xenodm larger change fvwmrc rcctl x11r6 needs upon doas your edit the 5x5 4x4 lib usr or of
+9.Ssh:1637664352:  : typeunicode lucidasans username domain large fonts will this rxbf nice have lib ssh com 16 vt 9
+Xabber.Connect:1637662815: Fdroid.Install : registration encryption registered currently features contacts complete password possible supports download provides servers another connect account install welcome sending license android xabber fdroid client attach source signin images allows ircnow device order files login swipe gplv3 first https admin multi xmpp able sync with note next band will then need fill easy have many once open png tap use got you xep web www for to of
+Adium.RecentChanges:1637405038:  : recentchanges november connect adium 2021 jrmu at 07 32 am by
+Vmm.AlmaLinux:1637390861:  : administrator installation instruction almasetup12 almasetup11 destination installing screenshot almasetup5 almasetup4 almasetup6 almasetup3 dodocrypto almasetup2 almasetup7 almasetup8 almasetup9 configure installer almalinux different selecting highlight localhost presented pressing finished blinking continue standard software password hostname include editing numbers console through proceed options default vmlinuz network gateway netmask example minimal booting attach reboot lastly forget initrd 115200 cursor remove stage2 prefix follow myself insert should length appear enable change x86_64 choose shrink system please serial after ttys0 enter label enjoy later which crash quiet space below first based entry arrow rocky until need 1188 ipv4 wait fccf disk 2602 ipv6 than have that will want note case lets this root menu user main next grow with fill good back your once when line just full text like read till end the png vmm add don saw new tab can iso dvd img key hit 255 now 162 lvm 38 87 hd 48 we 24 by
+Yaxim.RecentChanges:1637319686:  : recentchanges november connect yaxim 2021 jrmu 19 at 06 58 am by
+Gajim.RecentChanges:1637143713:  : recentchanges november connect gajim 2021 jrmu 17 at 08 01 am by
+Pidgin.RecentChanges:1637143713:  : recentchanges november connect pidgin 2021 jrmu 17 at 08 28 am by
+Openbsd.Training:1637076647: Shell.Shell Unix101.Unix101 Unix201.Unix201 Unix301.Unix301 Unix401.Unix401 Perl.101 Unix601.Unix601 Ircnow.Goals Ircnow.Roadmap Freedom.Freedom Ircnow.Constitution Minutemin.Code Minutemin.Creed Minutemin.Duty Openbsd.Doas Openbsd.Syspatch Tcpip.Overview IPv4.Overview IPv6.Overview Ngircd.Install Hopm.Install Openbsd.Netcat Openbsd.Ping Openbsd.Dig Openhttpd.Configure Acme-client.Configure Openbsd.Php Openbsd.Pmwiki Znc.Chroot Openbsd.Relayd Oidentd.Install Openbsd.Dns Openbsd.Vhost Openbsd.Host Openbsd.Unbound Nsd.Configure Openbsd.Staticnet Openbsd.Opensmtpd Openbsd.Spf Openbsd.Dkimproxy Openbsd.Dmarc Opensmtpd.Openrelay Openbsd.Dovecot Openbsd.Team Openbsd.Stable Openbsd.Testing Openbsd.Ongoing : congratulations troubleshooting authoritative fundamentals connectivity constitution applications configuring customizing certificate networking commitment nameserver understand installing scripting minutemin configure procedure utilities openhttpd opensmtpd openrelay addresses staticnet dkimproxy marketing webserver syspatch overview training learning yourself continue protocol personal practice spammers required bootcamp familiar sending openbsd unix301 message unix201 outlook setting unix601 perl101 dovecot unbound unix401 servers records command oidentd testing welcome caching prevent ongoing bouncer reverse liberty unix101 private provide freedom detects culture roadmap program monitor please relayd ircnow client stable before attach netcat ngircd rfloat needed issues civics chroot system double pmwiki ensure powers gmail basic email vhost goals tcpip dmarc local shell using creed check title users about honor panel setup ethic apply 300px abuse width which with ipv4 read sign ipv6 team imap ping bans that hopm join doas acme code duty have call line give also will such from ssl the znc dig php nsd dns new spf how own get png not of
+0dev.0dev:1636686042:  : 0dev
+Vmm.RockyLinux:1636627877: File.Ext : 0de5f12eba93e00fefc06cdb0aa4389a0972a4212977362ea18bde46a1a1aa4f administrator configuration installation instruction installaton destination example0dev rockylinux everything installing remembered highlight installer perfectly configure selecting different presented checksums download language continue password hostname timezone messages username blinking setup14 minimal booting setting setup13 include console vmlinuz x86_x64 editing desired verbose options proceed through numbers netmask gateway setup11 support default setup15 network provide disable address command setup12 115200 forgot attach access remove choose should serial initrd stage2 locked bootup setup5 setup7 length prefix myself device change follow setup6 setup4 second marked cursor reboot setup2 insert x86_64 sha256 enable verify modify setup3 press image final worry arrow later guide based https title enter until ttys0 first quiet right space wheel after match login again apply label begin entry will ipv4 fccf 2602 once this your like look lets isos than grep line have next main ipv6 back note part text that 1188 from done seup then full what whch root when file stop sudo with last free feel menu wait till want read case else must png vmm ftp pub can lvm 162 now new ntp end out tab saw dvd hit key 255 img see of hd we 48 87 24 by
+Got.RecentChanges:1636328065:  : recentchanges november mirror usage 2021 jrmu got by 07 at pm 05 22 58 06
+Openbsd.Got:1636298193:  : openbsd got
+Emacs.RecentChanges:1636251100:  : recentchanges november lohang emacs 2021 06 at 04 39 pm by
+9.Zuke:1636041668:  : zuke 9
+Znc.Relayd:1635934692: Relayd.Acceleration Openhttpd.Configure Acme-client.Configure IP.Myaddress Localhost.Intro Openbsd.Relayd Pf.Intro Znc.Usage : troubleshooting configuration acceleration controlpanel recommended request_uri configuring certificate convention understand listeners plaintext localhost myaddress configure uriprefix openhttpd challenge listener5 http_host followed incoming connects location hostname allowweb requests webpanel allowirc redirect servers provide replace openbsd without meaning example setting instead restart changed default ruleset bouncer option public actual relayd client reboot return ircnow filter packet please viewed false intro rcctl quick order while first later ahead https ports block 31337 strip binds known usage proto state pfctl avoid rate keep this 3000 1338 pass that note true acme wiki deny load want must will help doas ipv6 your 2001 need read each ipv4 root well can use bnc src max the znc tcp ssl how are 443 any see etc for new 302 log 192 168 tls db8 127 go be so of up 60 80
+Znc.Debug:1635866627:  : libboost_chrono libboost_thread libboost_system libboost_locale libicui18n libicudata libpthread pkgconfig configure debugging libcrypto buildmod releases libicuuc install libexec urandom include running usermod openbsd _identd libssl resolv enable chroot hints chown chmod wheel mknod mkdir share title https gmake home man1 libz null libm xvzf cert doas mode bin znc usr var cxx tar ftp gdb etc dev sig pem abi 644 666 cp gz mt 13 96 19 rx 45 cd 46 26 pc 48 10 7
+Znc.Usage:1635865799: Bouncer.Bouncer Ircnow.Networks Ircnow.Servers Bouncer.MIRC Debate.Zncflaws Openbsd.Police Openbsd.Ilines Openbsd.Phishing : mysuperadminpassqwerty passwordsgenerator misconfiguration notify_connect automatically possibilities intentionally controlpanel instructions listnetworks successfully disconnected troubleshoot immediately information permanently registering understands alternative jumpnetwork punctuation advertising connecting registered addnetwork connection setnetwork downloaded characters personally loadmodule configured guest58404 incredibly abcde12345 delnetwork requesting saveconfig currently satisfied verifying confusing reconnect different addserver blockuser important extremely carefully replacing correctly available mechanism following incorrect chatting nickserv nickname 12345678 familiar services deleting identify entities yourself zncflaws username phishing webpanel sysadmin chanserv possible shortest requires approach remember everyone settings freenode terrible security undernet properly connects bindhost generate ysername secondly messages probably quakenet official channels specific whenever accounts teammate retrieve problems mistakes botname perform captcha jumping himself bouncer privmsg openbsd replace already closing support example prevent altnick newnick welcome because snoonet friends helping disable include symbols between numbers letters derived contain adduser claimed getting address history logging forever clients spelled console servers deluser changes started addchan default command actions happens warning confirm version private without besides follows sending newpass debate ircnow delete before create likely should method around flawed status forgot simple nobody please double tested reason ensure admins actual smiley entire signed report logged unless record vhosts cannot assume emails simply better saving single guides typing police ilines thanks folder either anyway caught suffix powers itself ircnet common ngircd unable dalnet always glined banned notice caused glines accept cserve squery errors cherry space mango there check wants plain waste would unban tried store quote extra fruit which later after saves typed first wrong offer https vasya ircds login ifend doesn exist could click these chats share sorry where field rizon tries reset users staff efnet again right other abuse usage mouth tells until index major taken pages reply title about known types need must will disk that done time from more been link this mirc wiki each mode auth 1337 oftc them upon keep just also they have tons idea then what says sent join plum some pear same over sasl site long turn copy make logs hard hold code part most give best real love true 6697 easy didn ctcp note many into else look puts bnc day has how yet php but try 235 thx why bcc ask see bob run yes bye job may dns 16 41 21 29 30 57 01 24 27 25 28 54 ip 50 20 31 22
+9.Sysupdate:1635718896:  : sysupdate drawterm updating install system kernel images amd64 webfs after i386 this done over nuke pc64 your src can be cd mk to 9
+Debian.Debian:1635683674: Debian.Debian Debian.Nginx Debian.Nginxphpfpm : distributions documentation constitution organization introduction foundational financially development distributed established continually sponsorship coordinated nginxphpfpm ˈdɛbiən guidelines principles supporting volunteers nonprofit sponsored operating according documents developed september computers wikipedia candidate community supported released software internet personal founding contract november composed continue interest popular edition project servers install notably systems further updated version murdock because leader debian kernel source formed guided social public action freely freeze openly ubuntu stable oldest branch august first ended since based which short linux setup known after three other basis june many 1994 over 1996 this 1993 also most when 1995 from been time next feed team rss gnu was one its has new by to 01 16 17 15 8
+Ircnow.Victorycpus:1635581866:  : victorycpus attach ircnow
+Debian.Nginxphpfpm:1635510376:  : implementation configurations technologies repositories fastcgi_pass performance alternative server_name nginxphpfpm extensions successful processing configured additional following copyright available systemctl installed necessary finished features snippets location packages upstream phpinfo contain related restart running include service command enabled example changes virtual version finally default opcache verify better should debian create output modify useful engine loaded listen reboot easily stored syntax built heavy sites error apply files other mysql group ships index point close lines host once php7 sock save just with need html will root next test then nano does some when zend this json curl time unix 2020 code its are you get etc any can apt var www oct cli not nts new v7 v3 80 56 by ok 47 15 ln
+Debian.RecentChanges:1635509919:  : recentchanges october monaco debian nginx 2021 pm by 18 12 at 29 11 50 am
+Debian.Nginx:1635509880:  : master_process configuration documentation documentacion successfully execstartpre server_name performance commercial ├─3816 ├─3817 └─3818 systemctl try_files installed available location specific required reverse enabled similar default further service example systemd verdana welcome support working running address helpful doctype debian active preset cgroup should memory domain daemon listen please online output vendor status reboot worker tahoma family margin loaded slice arial nginx serif width tasks title limit style index sites refer check names there loged after would first setup proxy thank using since html href root body head curl init http sans will font auto 35em page find copy edit this that give path 2021 sbin cest 49ms 1min docs 3813 2201 3815 sudo high user need usr 22s ago you ssh org uri 404 and apt how ● etc web vim www 127 lib fri var cpu see pid 80 cd ls be 10 ip of br 29 2m 14 24 h1
+Vmm.Homerouter:1635268100: Vmm.Configure : cc504c319a4b4188479cfa602e40cb6851c0528 configuration loginterface description workstation 0xffffff00 autoselect homerouter ifpriority 0xff000000 forwarding broadcast antispoof autoconf4 providing filtering connected downloads hellotime 1000baset multicast prefixlen install70 configure 100basetx username fwddelay discover learning hostname ifconfig loopback machines allmulti software ethernet vmdusers connects assigned martians provides firewall example1 referred internet computer bridge0 running switch1 netmask switch0 network address devices virtual bridged openbsd promisc packets because default assumes simplex scopeid gateway memory lladdr policy groups egress 9front duplex random status vmmnet return active locked 808b43 llprio ifcost server sysctl maxage record itself pflog0 maxlen socket second placed flags 33136 index proto quick inet6 block audio wired table media match scrub https rules 32768 athn0 holdc title later owner qcow2 amd64 cdrom guide faq16 other acces which setup below tap0 from dhcp port doas uses read 8943 1500 rstp have pass enc0 this wifi that full html skip drop 1440 card fe80 with them kern 8049 arpq 1024 will rest come 512m 8843 8593 disk 127 etc vm1 if0 168 www 192 re0 org lo0 mss 172 re1 255 mtu 254 169 cat any nat ip6 0x4 iso get 128 via 113 203 you ssh 224 141 tcp 198 see 91 no 38 df 3a 7d we d5 3f by 0f 01 b0 d0 0e fd
+9.Plan9ini:1635093029:  : 1280x800x32 1024x768x16 resolution customize plan9ini thinkpad vgasize monitor default replace value then x200 edit 9fat with for 9fs of
+Iked.Newconfig:1635090581: IP.Myaddress Openhttpd.Configure : githubusercontent troubleshooting 4skinskywalker malwaredomains username_here interoperable password_here configuration certificates gazellegames installation stevenblack justdomains client_pool information destination permissions configuring blacklists forwarding client_dns connecting configured alternates nameserver remote_gw blocklist newconfig openhttpd interface installed correctly malformed addresses something different parameter newhosts2 newhosts3 myaddress daemonize necessary verbosely processes hostname included user_vpn manually networks security external reformat gambling valuable unwanted outgoing download probably whatever resolver resolves provided provides solution capitole index_en ifconfig openiked consider depends running caching unified unbound example easiest replace command openbsd servers enabled torrent packets entries mirror1 control clients privacy writing tighten ruleset passive dynamic machine warrior virtual freedom lookup mmotti sysctl vpn_id access picked static ircnow ipcomp pihole ext_if needed ignore tagged isakmp device htdocs piracy system rather reload filter censor allows create errors should native secure master banned simple report ikectl mschap public verify obtain point pfctl value users https cause chmod check their inet6 regex final start rcctl taken using files local debug chown lines first about title proto ipsec quick these clean roadw setup where wants valid match macro ikev2 srcid being that used into porn from this like then peer must your zone have upon dhcp make sure will doas bind only note tail with mode nzbs pros site blob turn than base grep stop once anti 0600 crls enc0 over vio0 type find etc tcp put 203 eap var org any 113 may ftp raw key rsa app esp awk udp php ip6 txt pki 509 crt dsi p2p web get 127 way can www off rdr 202 185 121 239 169 177 dl 53 dv ax 10 ah 24
+9.Links:1635056976:  : covingtoninnovations plan9_desktop stanleylieber pspodcasting franjballest mirtchovski namespaces complexity unix2plan9 wordpress simplicty research helpful shithub postnix inferno entries awesome felloff michael github henesy s9book 9front newbie papers readme https s9fes books index links swtch guide 2019 html blog 2020 acme wiki orib debu part pdf www org t3x fqa cat dan net dev p9 pw 9p us gs 36
+9.Keybindings:1635056121:  : keybindings backspace character directory returning begining deletes running program current clears insert window moving border kills files whole moves width first line ctrl hold mode list unix what last home esc end one tab of 80 9 1
+Terms.Vps:1635012362:  : cryptocurrency responsibility cancellation infringement specifically intellectual pornographic information responsible warranties absolutely authorized permission whatsoever complying copyright terminate violation malicious trademark passwords customers guarantee excessive resources technical software received property required identity activity scanning insecure gambling complete breaking harmless accurate illegal content without backups threats network actions whether damages slander support prevent subject account payment service partial refunds anytime billing contact ircnow before amount please agrees report relays cannot miners except result limits stated under above makes email rules sites local occur death plans terms where theft usage fraud their month abuse nodes drugs using libel from fine fair that must spam exit week date give data loss paid does your hold used law own vps org one tor may set by 50
+Xdefaults.Configure:1635000032:  : forcepackedfont metasendsescape scaleheight underscore background foreground visualbell loginshell configure xdefaults scrollbar geometry facename facesize cjkwidth openbsd hanging provide support chinese spacing courier mkwidth dejavu screen jasper false xterm adobe vt100 88x27 black djvsm white line true adds sans mono this 2014 with text bold will low dot exp fix 59 22 34 07
+Vmm.Devuan4Iso:1634833741:  : 1723cbbeb1aee26a54e1370b688e7dc03921402348d2a60086c58c18cd9cf24b e93d7167a4f5fa9e9fed497770285ba5cf280ba4 0_amd64_netinstall devuan_chimaera_4 partition_offset installation fingerprint sha256sums indication devuan4iso installer signature installed interface processed keyserver ronnquist libraries certified checksums perfectly isolinux mt86plus generate vnconfig 115200n8 imported username vesamenu libcom32 download version console support vmlinuz primary libutil unknown warning belongs include trusted changes default provide memtest already openbsd xorriso mkisofs giocher switch0 pkg_add serial joliet initrd inodes ubuntu number umount create lladdr locked modify memory verify update search kernel append public casper normal should vnd0c steps words mkdir https taken ideas cache diffs label quiet ttys0 qcow2 table cdrom image owner 1024m these title guide total gnupg files there ralph gmail using match boot path 2021 size good emul from this live made with that recv doas info disk make grep home grub into must 2018 else root stop jrmu hwe fri gpg asc vmm new rsa vga vda cdt for ftp and org not rrq bin you etc run are c32 old cfg txt mon sun aug two feb cp aa cc 22 57 35 50 12
+9.Cvsfs:1634302731:  : fingerprint sshthumbs anoncvs openbsd connect cvsopen install cvspipe mounted strcmp method 9front return cvsfs apply patch extra then host this 2021 want home gets sess org nil bin src add you lib 9fs fri 229 oct tgz tar ca 13 to 16 15 it xf 40 09 cd 12 mk of if rx 7
+Openbsd.Sysupgrade70:1634295720: Openbsd.Dump Openbsd.Restore Openbsd.Cu VPS.Intro Openbsd.Buyvm Openbsd.Top Openbsd.Syspatch : configuration automatically installation sysupgrade70 substitute particular succeeded upgrade68 operating sysmerge openbsd6 syspatch packages shutdown messages version generic restore console pkg_add patches reading serial reboot should attach recent system number amount proper domain begin files cores buyvm after intro check amd64 https uname error title guide first quick using next this doas note then sure says your type find want need will pear have html make view beta dump some most back that faq for org top www vps run png any and fix may see man now vnc ram vmm can use are uu if of 98 my 1 2 3 5
+Openbsd.Ilines:1634265392: Openbsd.TeamIrcIlines : teamircilines registering connections ambassador configured addresses pineapple providing greetings exception providers authorize currently bouncers possible redirect business taichung accounts contact details website network openbsd request mailing ircnow jujube banana cherry orange around unique needed adding listed relays public should lemon users reach https grape phone mango 40699 guava peach shell other admin ident limit 6400 0020 ipv6 soon 00b4 will 2605 0030 plum 0434 fc15 05cc free pear have they name wiki page case bots seem week f633 faa1 ipv4 00fe 0010 f8de 069d 05bf 1290 0bb8 2063 071b like you can org 119 per are our 251 173 and 133 znc 141 209 198 137 130 800 700 any 229 240 for 228 box 184 new 458 183 158 888 81 35 to 48 if at 44 by 50 39 38 89 91
+Vmm.Devuan-ISO:1634205031: Profiles.Siva : 1723cbbeb1aee26a54e1370b688e7dc03921402348d2a60086c58c18cd9cf24b e93d7167a4f5fa9e9fed497770285ba5cf280ba4 grub_serial_command 1_amd64_netinstall devuan_beowulf_3 distributions configuration grub_terminal installation environments connectivity confirmation partitioning nameservers downloading requirement appropriate fingerprint comfortable information participate resolution interfaces sha256sums privileges configured bootloader configures fullscreen connection partitions installing pfifo_fast generating indication networking understand modifying following ronnquist superuser directory processed beginning signature correctly perfectly important installed certified carefully lecturify installer checksums uncomment different verifying mentioned rendering utilities keyserver multicast broadcast passwords reference reloading 115200n8 internet installs continue username displays seperate followed whatever language keyboard timezone prompted standard provided glitches dialogue complete commands directly tutorial sysvinit original selected manually modified filename hostname profiles lower_up loopback imported leaseweb previous contents favorite detached cropped archive default unknown noqueue earlier monitor virtual setting showing options address gateway switch0 netmask changes console whether methods another glitchy package manager without editing replace reloads restart machine already warning follows pkg_add service pakcage cronjob october sudoers crontab instead trusted fingers cancels desired easiest desktop primary columns belongs updated vmlinuz session openbsd picture support attach finish mirror reboot choose system others guided entire static values effect scheme quotes repeat before buffer router scroll should bashrc editor launch export opened chance typing cursor window stable initrd marked survey ignore bottom starts device record master domain second memory locked ubuntu number public unless images lladdr covers topics gmail press setup enter proxy while after shown login write shell until ttys0 entry using usage later vmctl owner there above shows going might works pings ralph error scans found below where texts cdrom needs gonna still qcow2 1024m yours which match linux lines stuck tasks again since video gnupg inet6 small group state qdisc iface https clock 65536 total every guest make must note that path sbin this sure only just have step ipv4 want ipv6 jpeg done type 2021 xxxx root save nano siva then ctrl exit take doas unit from eth0 home also find same disk stop like look 1500 mode next ends qlen 1000 link recv tmux true upon good made dhcp fine kill quit dive some into tiny case grep else once used list will give when base menu more than wait size okay 255 gpg vim iso usr see get ftp var run apt 162 mtu dns won tmp rrq new rsa was etc asc ssh brd dvd vda bit cdt any yes fri via vmm isn yet too few vps img 09 by 87 38 12 b3 b2 07 19 i5 22 27 30 29 32 31 aa cc wq
+Vmm.Devuan-Simple:1634204917: Profiles.Siva : 1723cbbeb1aee26a54e1370b688e7dc03921402348d2a60086c58c18cd9cf24b e93d7167a4f5fa9e9fed497770285ba5cf280ba4 grub_serial_command 1_amd64_netinstall devuan_beowulf_3 configuration grub_terminal distributions installation confirmation environments connectivity partitioning participate downloading appropriate information comfortable nameservers requirement fingerprint sha256sums pfifo_fast networking interfaces configured connection privileges bootloader partitions understand fullscreen installing generating configures indication resolution signature certified modifying following processed superuser carefully ronnquist directory lecturify checksums beginning uncomment important perfectly installed correctly installer rendering mentioned different verifying utilities reloading keyserver reference passwords broadcast multicast 115200n8 continue installs internet username displays seperate whatever language keyboard prompted followed timezone standard glitches dialogue complete commands directly tutorial sysvinit original selected manually modified provided filename hostname imported favorite leaseweb detached profiles loopback lower_up previous contents default follows changes console pkg_add already replace address machine reloads gateway monitor earlier pakcage showing noqueue unknown restart editing picture netmask without support desktop setting archive whether glitchy package manager cronjob another methods warning switch0 trusted fingers desired instead updated vmlinuz crontab openbsd easiest primary sudoers columns belongs october cancels service virtual session cropped options attach choose scheme finish effect mirror others system static guided values entire reboot router repeat before buffer quotes scroll bashrc should editor launch export opened chance simple typing cursor window stable initrd survey marked ignore bottom starts device record master second memory lladdr unless number public ubuntu images locked domain covers topics until proxy enter there shell while after press shown write using login ttys0 entry usage later setup owner might gmail ralph shows going works pings above scans error found below match needs vmctl gonna cdrom texts still qcow2 yours 1024m which tasks again stuck linux lines video since where https gnupg clock small group state qdisc guest inet6 iface total every 65536 siva note path sbin sure only make have ipv4 done want ipv6 this type must jpeg root xxxx 2021 into save nano step then that just from stop take unit doas exit find ctrl eth0 home same also disk like look dhcp mode next qlen 1000 link ends recv 1500 tmux true good made upon fine kill dive some quit tiny case else grep once list more than will menu wait used when okay give base size 162 dns see 255 brd asc vim iso gpg run ftp usr new bit rrq yes dvd etc ssh was cdt via fri rsa vda any get apt won mtu vmm isn yet too img var vps tmp few b3 b2 07 by 09 38 12 87 19 i5 22 27 30 29 32 31 aa cc wq
+Ngircd.RecentChanges:1634152980:  : recentchanges bejelentkezni february install october ngircd link 2021 jrmu oper may ssl 10 am 03 11 by 09 at 05 26 pm 16 04 37 44
+OpenBSD.ResetPassword:1633578967:  : resetpassword automatically recommended immediately hypervisor lecturify following passwords bsdforall operation finished username existing hostname progress shutting accessed machine without already virtual openbsd reading probing replace example loading command booting console message usually because perhaps ircnow retype failed minute reboot vmname forgot lostpw cdboot serial select passwd unable escape should easily again mount start vmctl shell amd64 means delay 1022m https error title first using your com0 this disk 638k real then from fsck want stop root were need time have wait down once same html faq8 get see any vmm www tmp usr var can etc has not net two urw cd0 hd0 ssh a20 mem pc0 e0 53 9
+Hopm.RecentChanges:1633306320:  : recentchanges miniontoby september install telnet hopm 2021 mkf at 27 10 06 13 am 07
+Openbsd.Install69:1632765554: Openbsd.Buyvm Vps.Intro Openbsd.Bsdrd Openbsd.Staticnet Openbsd.Netmask Openbsd.Unbound Openbsd.Fdisk Openbsd.Disklabel : automatically installation verification dynamically information nameservers reconfigure cloudflare substitute unverified guaranteed particular installing formatting networking eventually megabytes available sometimes install68 addresses described allocates installed interface hopefully selecting staticnet install69 disklabel specified otherwise purchased username enabling manually packages timezone location password internet physical headless hostname properly replaced pathname matching security download keyboard probably software continue disabled autoconf accident possible includes careful correct warning openbsd drivers forever without instead default netmask gateway subnets connect coconut example causing benefit windows routers unbound opennic special hundred process reading present mistake seconds nothing consult concept options because before change layout reboot please attach ircnow verify domain number length prefix inside manage either unable google during should bootup guides cancel virtio simple always though needed system panel which press buyvm email enter disks intro wrong erase would bsdrd fdisk https below given amd64 right after waste start later twice often power flash about trick there login allow needs title first worry check bring chose users quick fruit short leave note ftp4 will make else sets ipv4 want like type sshd they your that skip then dhcp root wait ctrl just very data have done vio0 lack hole base risk from used each back huge faq4 2605 6400 0010 over html when safe ipv6 this same last hard sure must long only may png org few run vps and www vmm web off iso dns usa its 111 any cd0 but 255 ips 127 em0 168 192 had see 48 15 14 66 37
+PmWiki.LinkVariables:1632736037: PmWiki.LinkVariables PmWiki.Links PmWiki.PageVariables Cookbook.PagePaths PmWiki.BasicVariables PmWiki.InterMap Cookbook.DotsInLinks PmWiki.PageDirectives Category.PmWikiDeveloper : enablelinkplustitlespaced makepagenamesplitpattern enablelinkpagerelative linkpagecreatespacefmt makepagenamefunction makepagenamepatterns enableredirectquiet linkpagecreatefmt linkpageexistsfmt wikiwordcountmax pmwikideveloper linkcategoryfmt qualifypatterns linkpageselffmt pagedirectives createlinktext basicvariables intermapfiles pagenamechars pagevariables linkvariables documentation categorylink replacements dotsinlinks fmtpagename referencing imaplinkfmt pagepathfmt conversions currentsite encountered defaultname crossgroup cb_toupper characters expression containing consisting samedomain addlinkcss wikigroups othergroup urllinkfmt additional pmwikilink occurrence capitalize categories attempting different including currently following wikilinks pagepaths parameter redirects advisable resources httpslink cookbook examples elements existent absolute httplink sequence standard settings converts defaults advanced selflink publicly audience nofollow included shortcut existing various linkurl control linkalt display formats schemes styling classes applied disable instead linking enabled maximum entries rewrite strings regular another allowed written summary pageurl already itself number output custom action allows listed change remove likely letter secure unless spaces quotes single admins loaded title_ causes common edited limit array which valid words below times wikis ideas strip lines added after begin first lists order looks value fixed basis local break each this keep html used that zero with from note href sets urls when free only into such most work they have some will way are don one phd two you may can 1st see etc ftp has via 000 non php but by 5 2
+Site.Site:1632736037: PmWiki.Skins Site.Site SiteAdmin.SiteAdmin Site.SideBar PmWiki.PasswordsAdmin PmWiki.GroupHeaders PmWiki.Forms : administration passwordsadmin administrators administrative configurations includefailed titlesummary groupheaders pagenotfound information pageactions preferences individual directives protection attributes sitegroup siteadmin templates displayed necessary pagelist intermap contains localcss included changing tableend reading editing sidebar default control version content footers certain website pmwiki access except locked assist entire change cellnr output border search across common create pages width entry style forms apply links skins other quick those name only used some here note then wide need with find menu your and one all are fmt may add new set any 100 php see can by of if
+Site.Search:1632736037:  : searchinfostart searchinfoend searchresults configuration cellpadding punctuation cellspacing insensitive characters containing including beginning sitegroup searchbox quotation contains searches examples omitting enclosed followed special content default summary pmwiki string border phrase double single equals quotes groups accent apple words those width slash enter pages marks whose limit colon tasty sign with than less food that find more need will some case name text list also your both same the all pie and for but one use not 100 are to of ù by
+PmWiki.Search:1632736037: PmWiki.WikiTrails PmWiki.PageLists Site.PageListTemplates Site.LocalTemplates Cookbook.PagelistTemplateSamples Cookbook.Cookbook PmWiki.PagelistVariables PmWiki.Search Site.AllRecentChanges PITS.PITS Group.Name : pagelisttemplatesamples enablepagelistprotect searchboxinputtype pagelistvariables allrecentchanges pagelistrequest onegroupdescend searchpatterns pagesearchform localtemplates documentation automatically searchresults incorporating searchboxopt permissions description customizing customized parameters directives summaryend restricted determines wikitrails specifying documented targeting pagelists according different predefine backlinks available reordered generates clusters cookbook searches ordering specific returned filtered disables advanced examples searched function required anywhere criteria targeted relevant elements together tracking directly tableend instance provides addition readers certain authors recipes numeric instead message neither another regular smaller powered strings entered italics default formats tweaked content produce options appears display visitor exclude maximum defined control whether editing pmwiki action reveal 3dname exists typing simply border anyone create remove styles layout select number capped normal groups sorted engine 300pcx rframe allows if2end equal until title width based while false shown basic about these above using issue their count boxes below cases ifend value names pits expr that this from cell size also each only used sets site will text font uses view such many more than data with ptvs note into work are and fmt can 100 see has try etc but run top by of 20 35
+PmWiki.UploadVariables:1632736037: PmWiki.Uploads PmWiki.UploadsAdmin PmWiki.UploadVariables Cookbook.Attachtable PmWiki.PathVariables PmWiki.LinkVariables PmWiki.AvailableActions PmWiki.BasicVariables : makeuploadnamepatterns uploadredirectfunction enableuploadoverwrite enableuploadgroupauth enabledirectdownload enableuploadversions linkuploadcreatefmt uploadprefixquota imaplinkfmtattach availableactions uploadnamechars uploadblacklist uploadvariables unconditionally uploadprefixfmt uploaddirquota createlinktext administrators basicvariables pathvariables configuration uploadpermadd alphanumerics linkvariables uploadmaxsize uploadpermset uploadextsize automatically installations replacements uploadsadmin authenticate uploadurlfmt attachtable attachments permissions overwritten recommended overwriting information underscores limitations insensitive characters additional impossible attachlink everything containing downloaded previously wikigroups successful expression determines overriding definition cb_tolower uploading displayed extension downloads wikipedia timestamp directory forbidden stdconfig depending pubdirurl webserver increases different organized normalize currently lowercase arguments groupname protocols operating converted addresses otherwise password defaults sitewide uploaded together htaccess location attached directly cookbook obtained requests writable conflict meanings disallow strongly filename stripped override executed sequence pagename callback trailing contains software included charater overall linkurl because changed 1000kib instead present usually browser renamed derived already maximum process initial various systems unicode setting special defined letters markups regular hyphens example allowed protect summary applied website account mistake strings should custom bypass causes apache delete pmwiki unless spaces called dashes values exists posted allows stored common 100kib script before unable forget octets danger digits cannot return which doing newly files 25mib using links array local order means error names first those these where could alnum being style needs since class still after bytes 50000 delta given users pages occur such line this when 2004 wasn 0444 with full test unix href sets true move dots note your 0604 nbsp last part same have will also only some from 2013 know used save must else that ajax what 1024 2mib 1mib 2gib edit come deny than even copy may php see one cgi and txt zip try but why old ssh ftp via don 403 any xff x80
+PmWiki.SitePageActions:1632736037: Site.PageActions Cookbook.Cookbook PmWiki.AvailableActions PmWiki.BasicEditing PmWiki.Skins PmWiki.WikiStyles PmWiki.LayoutVariables PmWiki.AccessKeys Site.Preferences PmWiki.Internationalizations PmWiki.Links PmWiki.PageVariables PmWiki.SitePageActions PmWiki.ConditionalMarkup PmWiki.DocumentationIndex PmWiki.MailingLists PmWiki.PageDirectives : internationalizations documentationindex conditionalmarkup markupmasterindex availableactions layoutvariables sitepageactions settmpldisplay pagedirectives defaultactions administrator corresponding conditionally htmlstylesfmt pagevariables pageactionfmt ak_backlinks translations druckansicht translatable basicediting mailinglists information diagnostics essentially differently preferences permissions explanation corresponds bearbeiten authorized ak_history overridden particular substitute conditions properties wikistyles difference accesskeys controlled background unindented convenient displayed including languages explained unordered depending ak_attach whichever following ak_logout siteadmin generally currently statement otherwise questions hopefully locations attribute formatted shortcuts fullname noaction historie defaults commands replaced cookbook explains actually elements together wikicmds nofollow attached succeeds multiple browsing generate bulleted pmwikide property sections contains brackets audience pointers normally security displays keyboard profiles ak_print answered applied complex example ak_view already feature context require defined defines because opposed artikel browser closing loading working between follows locally instead summary phrases prompts setting support scripts markups perform shipped targets ak_edit sidebar include enabled version helpful consult viewing comment english allowed unusual expands authors xlpage upload notice entire appear easily inside starts rights people source places causes hiding sooner number exists divend allows viewed either tables leaves others inline second simply recipe handle simple marked enough itself things delete search output authpw should tells tasks first would above since pages later about mouse block skins shows found model drawn makes given being ifend noted using names group lines prefs empty finds named build items color class float apply where apart shown below there brief gives enter with they that this both will been used like http from them size says wish your more what easy very some lets only look test ends just take many thus user true next also good most each have lots even much span word case blue then see css are org top rel can has www way php bit may by 0 2
+PmWiki.OtherVariables:1632736037: PmWiki.OtherVariables PmWiki.FmtPageName PmWiki.SecurityVariables PmWiki.PageVariables Cookbook.HttpVariables Cookbook.MoreCustomPageVariables PmWiki.PageTextVariables PmWiki.PagelistVariables PmWiki.Forms : defaultunsetpagetextvars defaultemptypagetextvars enablerobotcloakactions morecustompagevariables enableinputdataattr somecomplexfunction pagetextvariables securityvariables markupmarkuplevel pagelistvariables pagelistcachedir maxpagetextvars formattablerow othervariables substitutions corresponding httpvariables implications pagecachedir conditionals handlebrowse fmtpagename replacement permissions previewpage interpreted pmwikiauth apparently accidental particular critically attributes processing classified handleedit addslashes parameters frequently expression subsequent definition evaluation injection recursive passwdvar providing otherwise generated reference efficient directory beginning determine depending evaluated different following something displayed functions forbidden internal possibly explicit cookbook instance contents defining actually accessed rendered replaced positive sanitize avoiding prevents linkimap elements controls changing contains intended writable displays disables examples thousand _request strftime insecure problem warning effects formats varname produce created defined execute nothing caching integer enables endless whether correct finally several setting capture globals summary pattern allowed greatly current rebuild quotes should single mytext inside server escape values places robots system during string output either stored config making faster simple passed change engine accept reduce allows simply having anyway always please better recipe which doesn today myvar fmtpv there again frame added folks array 10000 entry could above means pages cases where loops these green being times block valid speed would forms index extra links work this that than from each fmtv need when note used code with they make like stop zero down null have then must load near html many thus blue same very will once user also most hide gets urls date read what yyyy yet php one see key can how 500 you won don its may has was had new due of by
+PmWiki.EditVariables:1632736037: Cookbook.NotSavedWarning PmWiki.EditVariables Cookbook.EditHelp Cookbook.EditTemplates PmWiki.SecurityVariables PmWiki.Drafts Cookbook.FixURL Cookbook.PreviewChanges PmWiki.BasicVariables Cookbook.ROSPatterns Category.PmWikiDeveloper : enableuploadauthorrequired enablepostauthorrequired enablenotsavedwarning enabledraftatomicdiff enablepreviewchanges enableguieditfixurl draftactionspattern enablerevuseragent enableeditautotext defaultpagetextfmt autocreatetargets securityvariables postrecentchanges enablepublishattr deletekeypattern edittemplatesfmt enableguibuttons editredirectfmt page_parameters newpagetemplate pmwikideveloper handlebrowsefmt enablerosescape saveattributes basicvariables automatically editfunctions handleeditfmt editvariables array_unshift customization authorization configuration replaceonsave contributions functionality applications diffkeepdays enabledrafts ispageposted pagenotfound replacements array_splice pageeditform specifically intermediate preg_replace highlighted conjunction rospatterns pageeditfmt draftsuffix unpublished diffkeepnum flexibility roepatterns information recommended previewpage distinguish autocreated restorepage subsequent selections expression publishing characters manipulate array_push redefining categories surrounded javascript customized predictive additional definition specifies revisions displayed translate sitegroup otherwise determine graphical specified something uploading examining homepage optional defaults pagename suppress existent handling versions contains possible contents existing sequence pressing standard fullname postpage cookbook prevents complete attempts handlers actually disabled inserted edithelp replaced browsing uploader requires rendered examples category whenever signaled tracking creation previous encoding identify history 0beta45 removed between request elapsed initial escaped enables deleted editing minimum defined related authors instead browser entered whether toolbar provide feature without changed specify another current posting recipes element process setting scripts special leaving notably bullets regular similar missing summary visible editors records smaller include addons loaded writer called edited latest pmform useful please saving little rather spaces update single allows output exists entire should causes length string cancel appear number before inside regexp markup happen syntax those which sends pages every blank files older using empty edits after below value built first since until level saves still newly where years based least unset links about turns above dates their leave names added ctime diffs limit clear will them than need just from used more sets that this adds near 2000 bugs html show disk like list they code icon area note done kept part 3650 main into many lost only less want have skip your thus word true tell sent next such 117 php top see gif 5th may nor isn now non has few by of 30
+PmWiki.InterMap:1632736037: PmWiki.WikiWikiWeb Site.InterMap PmWiki.Variables Cookbook.RelativeUrls Cookbook.RelativeLinks PmWiki.LinkSchemes PmWiki.WikiFarms PmWiki.Upgrades PmWiki.LinkVariables PmWiki.BasicVariables PmWiki.PathVariables : customincludeend startingpoints basicvariables administrator relativelinks intermapfiles linkfunctions linkvariables pathvariables installation substitution localization relativeurls intermediate wikiwikiweb linkschemes definitions performance substituted distributed pmwikihome stonehenge somepathto precedence controlled considered following sitegroup converted markupend mapprefix directory wikipedia reference shortcuts different wikifarms frontpage interwiki developed megaliths currently scripturl supported sensitive localmap meatball official prefixes includes produces cookbook document anything matching pagepath linkimap audience upgrades defining possible directly thiswiki thispage bracket achieve england entries scripts article mapping changes feature partial defined example farmmap penalty however pageurl various sources checked highest follows special summary default becomes between usemod format syntax stands lowest called jargon system create eadmin pml10n common tricks ensure effect actual method exists within double author middle modify period famous based https takes there place above entry colon doing names order which break farmd cause extra where aware would first wikis ifend about usage other horiz class sites creep after these space like will that into text also just your ones want html when catb edit tips lose line more pics what says over then word main note than else thus pits have host case used txt org can esr see yes php was nor faq cgi bin www via set own get by c2 mb
+PmWiki.Blocklist:1632736037: Category.Spam PmWiki.Security PmWiki.Passwords PmWiki.PasswordsAdmin SiteAdmin.Blocklist PmWiki.PageHistory PmWiki.WikiAdministrator Cookbook.SharedPages PmWiki.PageVariables : blocklistdownloadrefresh enableblocklistimmediate blocklistdownloadfmt blocklistmessagefmt automaticblocklists blockedmessagesfmt wikiadministrator blocklistactions enablewhyblocked blockbyipaddress blocklistpages siteadmingroup countermeasure administrators passwordsadmin automatically inappropriate customization wikivandalism pagevariables configuration unfortunately intermediate difficulties blocklisting distributed expressions sharedpages information passwording interpreted downloading pagehistory permissions insensitive editability maintaining downloaded counteract controlled compatible badcontent moinmaster containing specialist attractive ultimately determined recognized experience capability relatively particular legitimate specifying unblocking explicitly impediment configure following addresses downloads sometimes operation directory arbitrary character overeager refreshed offending available protected installed described formatted filtering processed offensive performed unwelcome effective currently automated generally developed prevented replacing cookbook external spammers routines existing category response provides interval contains elements specific followed wikispam managing security original toughref unwanted features boundary nonsense hovering publicly standard location rankings multiple ignoring possibly postings anywhere retrieve excluded restrict whenever simplest measures detailed postdata defaults chongqed increase updating audience incoming regular entries phrases created against problem neither instead usually various changes editing through checked follows systems traffic setting targets comment tedious several reasons exactly pattern letting authors attempt another recipes example visitor viewing assumed enabled omitted summary applied however helpful website seconds defines updated sources causing version looking request leading pmwiki engine basics search longer ranges listed effort allows checks simply number become groups common copies should string adding higher really moinmo matter itself except values blocks twelve others manual entire nature saving harder widely markup larger anyway delete middle stored ignore locate accept tells 86400 regex might being array built every above 43200 local hurry entry terms which their given these after below force input sites known hours since saved moved order links added doesn there cases mouse often posts plain match flood shown drive taken slash occur bcial makes been text farm also ends that only into from with type each work must find keys same they will line perl http told tend pcre zero then like uses says this wish scan plus most more read name many such have well used once upon just your note made them open easy next deal file else pose week past best 2013 php org new too see won day don has raw url may one isn net via 10 7
+PmWiki.BackupAndRestore:1632736037: Cookbook.Cookbook PmWiki.Uploads Cookbook.BackupWithRsync Cookbook.TwoWayMirroringWithRsync Cookbook.BackupPages Cookbook.BackupHTMLZip : twowaymirroringwithrsync backupandrestore backupwithrsync your_user_name customisations backuphtmlzip configuration pmwikiuploads alternatively your_password miscellaneous introduction installation distribution periodically directories attachments sourceforge permissions limitations information public_html accordingly backuppages everything accessible attributes procedures background myp4ssw0rd directory following archiving snapshots filezilla appending ownership restoring explained your_host installed download separate cookbook packages normally restored executed complete gnuwin32 yourhost megabyte simplest probably software archives slightly dictates filename writable obtained contains uploaded december commands explains automate publicly practice yyyymmdd connect project details minimum created address letting monthly mylogin running seconds account enabled keeping simpler summary systems include replace machine backups verbose windows mailing scripts recipes similar folder 200512 secure method called assume thread proper client either easily select before making parent unique server finish myhost supply better visit named doesn chmod local group build whole other using where large users space daily gmane stamp 20317 skins title start above under files about small since world mdash basic along xargs comes avoid these both each data site will want from like http find type zxvf move home tahi date zcvf that them just only bare plan good also this list some 7zip wget hard disc line have when lftp path uses give once test made 2777 more wary cron css nix 755 can see net via was www put 123 234 now php had has web usr gz rf if 30 np nv 56 67
+PmWiki.ContactUs:1632736037: PmWiki.Download PmWiki.Installation PmWiki.MailingLists PmWiki.HowToGetAssistance PITS.PITS PmWiki.Petko PmWiki.PmWiki : howtogetassistance collaborative mailinglists 20disclosure defaultgroup installation disclosures information downloaded developers objections publishing 20security management questions installed wikititle contacted webmaster community contactus scripturl contains software tracking starting reported pmichaud directed website current patrick someone powered primary content summary editors subject please pmwiki public mailto system author should around owners source server petko https pobox visit about yotov their asked which other pages equal issue reach pits than path talk look only that them open need with this else read core have nbsp also expr bugs ways www org and not you can who see via 5ko if be dr cc fr by
+PmWiki.PageHistory:1632736037: PmWiki.LayoutVariables PmWiki.WikiAdministrator PmWiki.EditVariables PmWiki.SpecialPages Cookbook.ExpireDiff Cookbook.LimitDiffsPerPage Cookbook.ViewDiff Cookbook.TrackChanges PmWiki.PageFileFormat : restrictpagehistory wikiadministrator limitdiffsperpage removepagehistory enablediffinline layoutvariables pagefileformat administrators recentchanges automatically editvariables diffkeepdays trackchanges specialpages highlighting restriction information diffkeepnum differences corrupting expirediff permission particular handleauth additional individual revisions specified discarded directory histories clipboard exercised contents possible behavior material specific previous cookbook viewdiff displays audience clicking elements preserve required download manually rendered creating opposed disable default elapsed viewing removed minimum editing summary restore deleted changed options authors people config editor action markup values source adding before pasted upload pmwiki select number edited button access during simply called output recipe marked normal after enter shown level until those which older clean using shows avoid first lines added still below there these files given minor final local edits allow basic hides want farm your this with case each read will also when open link from over save them text area into care must that done time such make both note mode word than next site thus some have kept cut php can set any box see faq way isn ftp has two was of by 13 0 2
+SiteAdmin.AuthList:1632736037: SiteAdmin.AuthList : groupattributes administrative passwdupload placeholder cellspacing cellpadding permissions authlistend passwdedit passwdread passwdattr characters protected displayed pagecount siteadmin template pagelist fullname defaults password displays settings request signify summary pageurl indent action exists submit method fields pmwiki filter access pages first class login equal order input false nbsp have that each view text this form with last them type need mean all get fmt say any use may you to of go 0 1
+PmWiki.WikiGroup:1632736037: Main.WikiSandbox Main.HomePage PmWiki.MailingLists PmWiki.Links PmWiki.CreatingNewPages PmWiki.PmWiki Site.Site SiteAdmin.SiteAdmin PmWiki.Search PmWiki.WikiGroup PmWiki.SpecialPages PmWiki.RecentChanges Site.AllRecentChanges PmWiki.GroupHeaders PmWiki.Passwords PmWiki.WikiAdministrator PmWiki.LocalCustomizations PmWiki.GroupCustomizations PmWiki.BasicVariables PmWiki.HierarchicalGroups Cookbook.SubgroupMarkup Cookbook.IncludeWithEdit Cookbook.LimitWikiGroups Cookbook.NewGroupWarning Cookbook.GetRidOfMain Cookbook.RecentChangesDeletion : recentchangesdeletion localcustomizations groupcustomizations hierarchicalgroups wikiadministrator stgilesandstjames groupdefaultpage creatingnewpages allrecentchanges includewithedit limitwikigroups newgroupwarning resolvepagename subgroupmarkup basicvariables administrators administration configuration documentation unambiguously functionality automatically grouppattern subdirectory specialpages getridofmain defaultgroup installation groupheaders mailinglists distribution contractions abbreviation approvedurls defaultname definitions wikisandbox pagepathfmt interpreted restricting specialized contributed preferences individual developing consistent attributes considered organising additional identified directive blocklist passwords wikipedia markupend overrides searching prepended groupname precisely siteadmin described important therefore installed protected subgroups including structure templates following solutions separated eliminate pipermail yourgroup organized cookbook pmichaud homepage fullname profiles pointing existing creation contains usefully subpages required followed identify standard simplest pagelist anything assigned requires audience normally although appended possible trailing destroys optional keywords disrupts changed shouldn authors linking forward wikilib omitted located summary current defines without content utility entered setting feature 3dgroup finally related sidebar variety periods removed enables recipes placing another example grammar reasons because provide written display between instead adding format pmwiki appear delete within making method footer server access shared before accept cannot thinks create syntax simply having ensure points inside folder listed script spaces become letter 024838 number called those array horiz saves class where links which shown could found holds makes value named being would often order title doesn occur names start noted above upper slash comes pipes valid these click march their whose cross shows users added allow every basis rule more will 2006 then type only this help want like good into down from have http must look some that rely code text html work post same easy need read also each many used farm when thus most why see has php may try dot was its yes faq by eg 2f uk 1
+PmWiki.Images:1632736037: PmWiki.DocumentationIndex PmWiki.Links PmWiki.Uploads PmWiki.InterMap PmWiki.WikiStyles Cookbook.Images Cookbook.RelativeLinks PmWiki.LinkVariables : enablelinkpagerelative documentationindex redistributed imgextpattern relativelinks disablemarkup linkvariables specification tableandimage exercitation uncompressed immediately adipisicing percentages attachments consectetur information paper_clips definitions surrounding description incididunt immediatly subsequent vertically directives thumbnails background displaying extensions formatting wikistyles identifier acceptable generating unsuitable underlines markupend happening behaviour lightblue following displayed alignment groupname embedding galleries automatic consequat alternate paragraph qualified beginning filesizes formatted specified separated wikipedia continues pmichaud floating resizing location websites external division cookbook uploaded disallow obtained shortcut captions fragment lossless tooltips whatever possible browsers transfer directly creative addition contains attached pagename included filename enclosed centered fiddling multiple headings supports original coloured keywords brackets graphics pictures disabled intermap redefine normally standard replaces wrapping gallery affects resized eiusmod commodo aliquip specify laboris ullamco nostrud example bgcolor defined stacked padding setting failure aligned comment placing helpful margins summary instead already request retains flowing beneath another uploads resizes section putting strings credits commons follows because element default locally license further bolding general opposed without desired correct floated convert address dolore effort forces pmwiki dashes having unlike aliqua border lframe rframe cframe veniam images tempor bottom labore config rather single reduce honour future append itself effect around bubble method should height newwin before window frames ticket within rfloat server client change flickr photos cannot quotes simple double breaks cursor placed inline figure hovers create lfloat either fully https width 10pct while ipsum right lorem below saves 100px horiz magna class wraps above minim being shown pages block title front added using false lacks notes about where query burst 130px 30pct visit after types clear which think hence would match paths apply their times there solid usage basic quite lossy heavy 300px misc wish side that into them left elit have also made well text from svgz thus jpeg amet open rock more test this were work long just find some your same 2003 webp such nisi fake when enim quis 50px 20px does core than want 25px then part used make need both stop only faq www php yes gif jpg are any org try css may url see png pub bar bmp way fun yet why off 3px gem via tux my 32 by 60 fx 4
+PmWiki.GroupFooter:1632736037: PmWiki.DocumentationIndex PmWiki.Variables PmWiki.GroupF : documentationindex localisation groupfooter trailstart background commentout variables pmwikiorg improving trailend fullname included smaller ontrail bgcolor version summary headers footers divend substr recent border links ifend solid black right style clear float have more page http size talk this else font ffe 8em eee top 1px and ddd www may for 0 5
+PmWiki.DebugVariables:1632736037: PmWiki.DebugVariables Cookbook.Stopwatch PmWiki.AvailableActions PmWiki.BasicVariables : enableimscaching availableactions enablemarkupdiag enablestopwatch debugvariables basicvariables stopwatchhtml administrator abortfunction automatically begenablediag endenablediag priviledges recognizes debugging requiring displayed activates including passwords replacing customize permanent generated declaring reloading meanwhile separate multiple internal disabled composes patterns browsers template refcount everyone authuser settings possible condauth pagename modified cookbook default phpinfo without needing locally include timings leaving someone sidebar subpage scripts details windows letting summary numbers ruleset allows normal anyone indent either render easily values config adding before layout recipe pmwiki cached always update useful access format coming header needs total early tools valid files clock their usage since after which shows built takes other equal pages wall will from have that list only help this work them more line when also else long such your near each null sure just note off etc and old can see are get cpu its won faq by 1 2 0 7
+Site.PageListTemplates:1632736037: Group.Group Group.Name Site.FullName Group.Namespaced Site.LocalTemplates PmWiki.PageLists PmWiki.PageListTemplates PmWiki.PageVariables PmWiki.PageTextVariables PmWiki.ConditionalMarkup Cookbook.PagelistTemplateSamples : pagelisttemplatesamples simplenamespacedend pagetextvariables conditionalmarkup titlesummaryend descriptionend localtemplates titlespacedend documentation grouphomesend simplenameend includefaqend pagevariables concatenate defaultend includeend bygroupend especially pagelists markupend specified expensive optimized directive simpleend pagecount operation fullname defaults requires titleend includes countend contains cookbook sections problems creates without outputs between allowed display created spaces bullet number pmwiki normal ridden append groups causes anchor exists adding nested inline pages ifend there false horiz class loops store order first words that site note nbsp from this also each just only will wrap over html self last used dash when have work org can 103 and are fmt for but don isn of 5 6 8 7 2
+PmWiki.PageDirectives:1632736037: PmWiki.Uploads PmWiki.UploadVariables PmWiki.BasicVariables PmWiki.LayoutVariables PmWiki.GroupHeaders PmWiki.Skins PmWiki.Links PmWiki.IncludeOtherPages PmWiki.LinkVariables PmWiki.TableOfContents : enablepagetitlepriority enabledirectdownload enableredirectquiet includeotherpages nospacewikiwords nolinkwikiwords tableofcontents layoutvariables uploadvariables enablewikiwords pagedirectives basicvariables nogroupheader pageactionfmt corresponding linkvariables configuration nogroupfooter automatically nolinebreaks descriptions groupheaders htmlpnewline attachments insensitive descriptive essentially nonexistant redirecting permanently encountered apostrophes messagesfmt wildcarded attachlist identifies components equivalent characters associated redirected separated something directory placement available extension markupend locations filtering redirects important different supported goodgroup otherwise generates parameter displayed depending organised currently anywhere instance noaction keywords displays newlines disables required requires examples noheader pagename badgroup thispage nofooter external security occuring matching original multiple override settings resolves browsing patterns filename listings uploaded various portion noright notitle uploads permits another version without however actions specify default enables showing options helpful instead summary control prevent caption private opening browser entered element anchors engines contain section spacing similar special reasons initial recipes whether editing pmwiki titles appear server having return allows exists locate target marked status number change should bottom output method always within entire search result really limits useful noleft honors along shows links comma word1 turns still files names skins ifend these word2 again using visit moved horiz first there works notoc cause class about being after that used into does urls text from want then sets only than when uses back wins also form type same http code part case last note side such full join upon meta will your thru must adds each very 301 php can faq see and are but top jpg off bit may pdf xxx yyy by
+PmWiki.InitialSetupTasks:1632736037: PmWiki.Installation Site.Site SiteAdmin.SiteAdmin Site.SideBar PmWiki.LayoutVariables PmWiki.PathVariables PmWiki.SecurityVariables PmWiki.UploadVariables Cookbook.ChangeTimeFormat PmWiki.BasicVariables PmWiki.Variables PmWiki.PmWikiUsers PmWiki.EditVariables Cookbook.Cookbook Cookbook.CleanUrls PmWiki.UTF-8 Cookbook.UTF-8 PmWiki.Security PmWiki.PasswordsAdmin PmWiki.Upgrades PmWiki.UploadsAdmin Cookbook.PerGroupSubDirectories Cookbook.CookbookBasics PmWiki.LocalCustomizations PmWiki.WikiFarms PmWiki.MailingLists PmWiki.WikiAdministrator : uploaddirectoryconfiguration date_default_timezone_set enablepostauthorrequired pergroupsubdirectories localcustomizations initialsetuptasks securityvariables wikiadministrator changetimeformat defaultpasswords layoutvariables uploadvariables administrators passwordsadmin cookbookbasics basicvariables administrative compatibility recentchanges substantially pathvariables editvariables international enableupload mailinglists uploadsadmin installation uncommenting defaultgroup distribution improvements organisation pagelogourl defaultpage alternative pmwikiusers environment immediately overwritten potentially diacritical identifiers recommended contributed customizing participate discussions operational dontmodify customized characters signatures difficulty particular appearance performed wikifarms siteadmin arguments secrettwo different alphabets sitegroup onesecret beginning wikititle upgrading histories following reachable pubdirurl scripturl timezones installed accepting istration populated operating requested preparing specifies sometimes cleanurls examples audience cyrillic new_york messages prepared download software mismatch contains starting supposed deciding choosing upgrades seamless function designed changing maintain mysecret attached optional defines located enables working browser summary setting timefmt placing strings wrapper include recipes command sharing sidebar version shouldn pmcrypt editing chinese meaning because details without provide closing scripts strange symbols est5edt defined correct america running systems scratch special options already common putenv please french server remove number stamps begins forget manual online others voilà single sample review adjust writes easier simple create always during rename either detect except locked entire mylogo making secure called corner before spaces being could found gives where pages these links index image files skins there goals often value newer lines about large blank sites point fails never first fresh paste store https exist email error after might steps tells needs makes older czech upper track above order greek guess when your done best wide this have that from once many want will upon else text docs must uses more same sets been send made exit save into used most sure only left they such look feel than fear icon well menu aren them note what help join know then also does copy wish php can utf css see may hlt ftp via its www net off try has gif tag by tz 8 1 0
+Site.EditQuickReference:1632736037: PmWiki.BasicEditing PmWiki.TextFormattingRules PmWiki.DocumentationIndex PmWiki.Tables PmWiki.TableDirectives : textformattingrules editquickreference documentationindex tabledirectives basicediting preformatted nolinebreaks _subscript_ cellspacing superscript cellpadding references signatures definition separators horizontal paragraphs monospaced emphasis override numbered bulleted advanced displays headings inserted tableend homepage colspan hanging another italics summary prevent smaller deleted example comment cellnr pmwiki cccccc bigger _blank anchor target family indent groups border define simple tables weight align solid right class style width links arial pages lists nbsp join name size font date term http bold site and use 100 new 2px 1px 80
+Site.Preferences:1632736037: PmWiki.AccessKeys Site.Preferences Cookbook.UserConfigurations : insert_your_name_here userconfigurations ak_recentchanges corresponding ak_backlinks ak_savedraft preferences ak_saveedit enableprefs ak_textedit components containing ak_preview ak_history accesskeys preferably emphasized preferred indicated ak_strong somewhere ak_attach ak_logout customise location editform textarea personal ak_print keyboard fullname cookbook template profiles disabled setprefs settings entirely default editing parsing columns browser created summary control firefox ak_view ak_edit trigger windows select cookie revert pmwiki e_rows italic e_cols xlpage action source unset focus shift green newly below which local ak_em tells about that with note used site find also sets this hold show bold keep make copy the can and see add php tap mac alt end 70 20 by
+PmWiki.PagelistVariables:1632736037: PmWiki.PagelistVariables PmWiki.CustomPagelistSortOrder PmWiki.PageLists Cookbook.SearchPatterns PmWiki.PathVariables Site.LocalTemplates Site.PageListTemplates PmWiki.IncludeOtherPages PmWiki.PageListTemplates : enableundefinedtemplatevars custompagelistsortorder pagelistsortcmpfunction enablepagelistprotect fpltemplatepagefmt searchboxinputtype pagelisttemplates pagelistvarfoldfn pagelistvariables includeotherpages pagelistcachedir enablepageindex pagesearchform localtemplates alphabetically searchpatterns searchresults recentchanges international pageindexfile significantly strnatcasecmp insensitively pathvariables authorization defaultgroup searchboxopt considerably exclamation fmtpagename permissions characters directives customized strcasecmp categories historical sourcefrog subsequent displayed attribute according maintains currently including functions backlinks directory otherwise protected sitegroup searching delimited parameter regularly processed specified specific previous behavior searches versions cookbook included fullname required excluded searched disables includes displays defaults controls ordering location writable indexing listing declare example section earlier removed caching workdir prevent summary reasons numbers general sorting compare strings browser checked because setting natural natsort action global points causes pmwiki became unless delete simple target create always itself exists format values relied github strval readme speeds appear sorted empty unset which where needs array html5 html4 valid https first found field write terms print latin sorts match setup until means also well used with same will when look have this from zero that does were text your skin must like keep word note kept how and raw xyz 116 any sdv 115 php see net has 13 by of 2 0
+PmWiki.UrlApprovals:1632736037: Category.Spam SiteAdmin.ApprovedUrls PmWiki.IncludeOtherPages Site.AllRecentChanges PmWiki.LinkVariables PmWiki.Blocklist PmWiki.Security : unapprovedlinkcountmax approvedurlpagesfmt unapprovedlinkfmt includeotherpages allrecentchanges whiteurlpatterns administrators configuration automatically linkvariables occasionally approvesites approvedurls include_once urlapprovals permissions appropriate disapproval transcluded previewing urlapprove othergroup authorized preventing discourage googleblog urllinkfmt othername customize displayed siteadmin australia following mechanism including technical activated requiring whiteurls whitelist sometimes blocklist multiples separator attribute described external exceeded password requires handling sidebars apprlink whatever directly included existing limiting sections pagelist original normally spammers browsers probably nofollow linktext followed modified blogspot blocking postings security securing spamming category explains rankings displays internet allowing vertical because default current scripts initial engines example release without authors message defined comment creates created zealand content address setting editing general pageurl linkurl footers headers allowed tooltip totally usefull feature xes_url summary improve against purpose already number forbid search pmwiki beta20 hovers always combat please action adding cursor needed enable before should become reason linked hidden supply cannot links think local order class their which title about click saved large array needs write these works lists added farmd where visit setup after notes green using files based place first your href only were that must also http rare show them when want this omit blue like 2005 long html tips line help hide been they from wish will have code case next see php via try jan may has uuu won end say new org 30 by 01 nz
+PmWiki.I18nVariables:1632736037: PmWiki.Internationalizations Site.Preferences : enablexlpagescriptload internationalizations defaultpagecharset corresponding i18nvariables documentation dictionaries accidentally identifiers preferences translation definitions varpagesfmt essentially processing performing attributes dictionary containing describes currently pagenames correctly parameter modified contains language encoding changing handling mappings required website scripts include english timefmt xllangs lingual loading summary missing enabled prevent disable editors rfloat pmwiki active handle phrase loaded trails vardoc during config should lookup string markup hashes which value lists finds e_row ifend given where multi array equal pairs named wrong thus into some with used from also that this when only user text maps blue will note each the you php see utf are one can fix key by of eg 0
+License.Ircnow:1632736037:  : contributors responsible permission whatsoever distribute absolutely copyright following warranty yourname license damages content granted offered without purpose ircnow modify author result submit audio under other agree using video work this that from code text 2021 for and any not org fee use all by as
+Team.Vps:1632736037:  : eventually additional mentorship sustained operating community proposed filtered address 100mbps support include pricing backups systems openbsd subnet 40mbps 20mbps videos plans linux first burst month wikis 100gb costs email live 20gb free 40gb will only ipv4 ddos 10gb bsds ipv6 each team for 4gb ram and 2gb 1gb but irc ssd vps hdd of 64 we 16 8 5
+Team.RecentChanges:1632736037:  : recentchanges february august policy team jrmu 2020 2021 vps by at 04 03 36 01 08 pm 12
+Freedom.Censorship:1632736037: Freedom.Software Freedom.Militia Freedom.Fork : documentation infringement pornography censorship impossible compliance individual meaningful guarantee decisions safeguard amendment necessary establish copyright peaceably countries arbitrary marketing welcomes congress provides software petition official religion exercise powerful freedom however retains content violent because threats network illegal servers control digital example militia without becomes debates against ircnow speech gather policy rights 100pct rfloat attach ensure source cannot users first their there words other allow title width press order state staff rules shall bill stop also this ages that fork does make have wide each must code many and own png as
+Code.RecentChanges:1632736037:  : recentchanges formating better code june 2021 mkf 08 05 24 pm by
+Bouncer.Hexchat:1632736037:  : automatically instructions information registered abcde12345 connecting connected newserver graphical username selected password download anything followed network servers hexchat bouncer example uncheck address windows replace message details command attach ircnow should github source client rename saying global quick click 31337 close might slash title money linux while works https field start once real free open list will nick want fine your this type does menu john cost fill that then edit says 6667 with not znc org ssl get yet app can mac → png bar if by 10 go up
+Shell.Shell:1632736037: Vhost.Request Shell.Applications Shell.Tutorial Terms.Terms Terms.Privacy Unix101.Unix101 Unix201.Unix201 Unix301.Unix301 Unix401.Unix401 Unix501.Unix501 Unix601.Unix601 Shell.Faq Shell.Bash PowerShell.Connect PuTTY.Connect PuTTY.PuTTYgen OpenSSH.Connect OpenSSH.Keygen Dropbear.Connect KiTTY.Connect Termius.Connect Terminus.Connect ConnectBot.Connect ConnectBot.Keys Termux.Connect JuiceSSH.Connect GetConsole.Connect Blink.Connect ITerminal.Connect Shelly.Connect WebSSH.Connect MacTerminal.Connect SerFISH.Connect Sshwifty.Connect Shell.Sshfingerprints Shell.Termux : sshfingerprints applications simpletable macterminal libertybell programming connectbot powershell getconsole understand community interview bandwidth processes knowledge currently iterminal tutorials computers requires dropbear sshwifty learning juicessh terminus sortable puttygen creation software proclaim designed offering prepared accounts filtered quickly novices openssh reading command unix201 unix301 unix101 network unix601 unix401 unix501 termius service privacy serfish clients license android windows hosting 100mbps request running through thereof openbsd provide started support script border ircnow termux shelly webssh abused shells shared attach civics keygen useful create please vhosts policy unique charge kitty blink terms linux class users title about setup ethic free with will help sure more make cert bash perl real from time keys then ircs gain very agpl must chat live want over line some have that name join what each ddos disk ipv4 ipv6 32mb you for ✓ png all lan org ssl php one faq see our mit ask ios not but
+Freedom.Federation:1632736037: Servers.Rights Ircnow.Constitution : unitedweserve constitution established independent development government governance federation principles strongest community governing marketing together software thirteen provides services policies internet interest networks outside against freedom servers liberty himself governs manages threats another justice modeled promote rights attach ircnow rfloat public person itself divide future exists writes common desire effort money after 300px bound width among joint staff where every feels power trust their with they will many user each this have fair part but jpg all and own has aid by
+Vpn.RecentChanges:1632736037:  : recentchanges vpnmac vpnios 2021 june jrmu at 04 by am 34 05 52 40
+File.RecentChanges:1632736037:  : recentchanges linking file june 2021 mkf 22 at 07 43 pm by
+Ircbots.RecentChanges:1632736037:  : recentchanges ircbots august 2020 jrmu 03 at 01 15 pm by
+Grape.Grape:1632736037: Grape.DonateUs Irc.Guide Terms.Terms Grape.Guide Grape.Todo : administrators infrastructure monopolization documentation configuration communication collaborative registration instructions surveillance connections effectively proprietary application environment development successful maintained generation miniontoby interested additional available computing languages connected comprises volunteer donations unlimited favourite materials services accounts networks provided includes platform innovate feedback register features channels multiple donateus official retrieve minetest training unstable building everyone android website windows openbsd players details contact through request located bouncer control improve eggdrop members hosting english russian bangali welcome shelter devices shortly servers clicked ircnow mobile client custom source number allows access easier crypto please assist reduce create guided accept people system useful grape their terms where block 30003 30002 error agree which vhost doesn exist added 30000 linux links keeps speak dutch 30001 group learn shell opens local index https chats topic coins libre time make free help only also them this more real that team upon port view will your when with have live used text well read sign farm take part good fizi todo list wiki from game next name urdu such too org but are mac can aim who how gry new fun say ios may any run bot ask log php if
+Orange.Orange:1632736037: Orange.Ru Orange.Nl Orange.Todo : ██░░▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒░░▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ████░░▒▒██▒▒▒▒▒▒████ ████▒▒▒▒▒▒▒▒▒▒▒▒████ ██░░▒▒▒▒▒▒██ ██▒▒▒▒▒▒▓▓██ ████▓▓▓▓▓▓██ ████████████ administration administrators documentation surveillance centralized programming application connection structured maintained languages volunteer connected available favourite comprises education services metacpan feedback innovate features platform training includes capacity unstable included monopoly internet overcome multiple increase initial courses network request support welcome improve storage develop openbsd hosting testing russian english devices bouncer citizen orange server ircnow exists useful easier system number arabic french search lookup plugin speak keeps games their email https dutch write hindi after live them chat used file size list time free make with beta also perl more sign team todo will your that text sftp read bots like have well see org via and who can 1gb php aim new by of nl 20 if
+Freedom.Unix:1632736037: Debate.Dogfooding : configuration livefreeordie documentation dependencies unnecessary interactive dogfooding developers philosophy permissive guidelines integrate marketing languages standards learnbchs interface software sensible internet defaults program freedom openbsd written tightly another license audited feature rfloat widely simple follow native choose prefer clause easily forked needed better debate design attach output https stack style title creep thing shell write ethic width input avoid 300px party keep used that with code over unix when korn well text perl work one can mit 3rd our own jpg org web man gpl by to 2
+Openbsd.IPv6:1632736037:  : unfortunately hexadecimal increasing compatible everything addresses subdomain available backwards hostnames necessary separated providers designed messages contains internet accepted connect special without servers hosting tunnels becomes openbsd devices correct written shorten between records getting support humans colons digits subnet result single rather planet losing groups unable custom needed unique order stack given price zeros earth takes worth money older costs there match based vhost eight means email often major newer avoid users which 7334 well 0370 0db8 0000 8a2e that from 2001 aaaa rdns each than this ipv6 more ipv4 just have both four will dual must only deal lack work irc you can are was web far now and 128 bit but all two not by so 64
+Bouncer.MIRC:1632736037: Bouncer.Bouncer : alternatively remotescripts description proprietary abcde12345 originally commandssl connection supported installed connected bitbucket graphical addserver password username network3 networks network4 network1 supports software multiple network2 consider sslready example address version replace details kindone include message minutes bouncer protect options privacy freedom ircnow select should attach saying actual window return inside public master source remove method finish client adding during paste 31337 using https later above where press users start click these there false title added that this with your real then want mirc file type john wait save make plus sure sign have does fill load from hang will time must beta ssl2 ssl1 echo open true menu ssl3 copy text yet znc not few for org tab bnc cap req see png ack mrc end etc txt www → bar yes put can raw bug fix src to ok 38 if 41 by 6 0
+Ircnow.Finances:1632736037:  : finances ircnow title 2020 fy
+Shell.ShellPutty:1632736037:  : shellputty powershell connecting necessary username sgtatham greenend versions download password windows default example details replace opening address account install button server ircnow recent attach config select bottom latest chiark win10 press built right click start title https after enter your then host type fill with john real port html ssh2 come not org www and png for of is uk 22 by so if
+Openbsd.Dokuwiki:1632736037: Openbsd.Openhttpd Openbsd.Php : post_max_size certificate connection subdomains fullchain directory 104857600 openhttpd challenge location dokuwiki request fastcgi openbsd example uploads preload private socket larger listen server vendor please htdocs block index match allow first alias known strip well read 100m data file edit hsts port body drop root acme conf etc php ini com bin www 443 and tls pem key ssl run fpm inc kb 2
+Openbsd.Oscommerce:1632736037:  : cryptocurrency databasename permissions currencies previously privileges identified oscommerce installing localhost following correctly accepting initially function payments settings password command created follows flushed section applies oscuser openbsd listing example default resolv should erased server prices chroot module globee grant which mkdir there after coped first order with your sure make when also only that conf been cert must done into move type said many fiat both for are usd etc www sql ssl var pem can not has 127 up cp by 0
+Www.RecentChanges:1632736037:  : recentchanges august 2020 jrmu www 16 at 06 07 am by
+Relays.RecentChanges:1632736037:  : recentchanges february relays 2021 jrmu 22 at 04 pm by
+Gazette.Gazette:1632736037: Openbsd.Slrn NNTP.Claws NNTP.Evolution NNTP.Thunderbird NNTP.Seamonkey NNTP.Sylpheed : communicator newsleecher thunderbird newswatcher simpletable newsreader newslazer evolution groupwise seamonkey freepress marketing explorer sortable easynews sylpheed turnpike windows arachne browser newsbin gazette sabnzbd spotnet openbsd bintube network macsoup license newsnow android alpine attach python lgplv2 border groups lfloat google novell grabit usenet unison ircnow nzbget beonex forté mplv2 lotus agora knode claws https arena index notes title class xnews opera agent gplv3 linux width 300px argo mail nntp wire slrn wiki name gnus mutt lynx mode line ✓ 100 png php the – pan web ios org ms mt
+Openbsd.Squirrelmail:1632736037:  : sqsession_is_active php_session_active sqsession_start session_status webmail_access compatibility webmail_error squirrelmail applications challengedir environment configuring certificate sourceforge attachments letsencrypt installing configured generation fullchain directory functions subdomain location creating redirect projects include already fastcgi request restart contrib uploads openbsd virtual example started private service unbound listen return locale htdocs server global client socket create master system readme ircnow hosted stable chown touch index rcctl mkdir httpd zones where chmod again certs block https known files strip class 2605 data doas work exec type find aaaa root faa1 6400 xvzf wget well acme port wiki help sign must with will net zip www the var 644 755 fix nsd 451 bin new ssl tls log etc key crt pem set 403 fpm 443 run and you 700 cd 22 10 be 30 gz rm fv cp 80
+Orange.Notes:1632736037: Openbsd.Ngircd Openbsd.Hopm Openbsd.Openhttpd Openbsd.Acme-client Openbsd.Znc Openbsd.Relayd Openbsd.Oidentd Openbsd.Eggdrop Openbsd.Nsd Openbsd.Opensmtpd Openbsd.Vhost Openbsd.Dovecot : configuration bash_profile troubleshoot directories preferences components configured opensmtpd openhttpd subdomain correctly installed cpanminus overrides services username yourself outcomes hostname personal commands openbsd detects manpath someone assumes connect publish receive dovecot without message address easiest channel oidentd navarro compile bouncer eggdrop manuals account modules plugin second custom course relayd mytest create saying bashrc change ngircd simply export mlocal server client editor orange method errors vhost brian would users email after named perl5 check found notes learn files world panel https which hello names other basic cert make join that them have same acme root imap wget this read send page need such work link once from hopm show like echo chat home bans text eval line will 2010 were juan else lib znc log nsd set web foy may way are can etc for vps tcl any app non far up if by be
+Shell.ShellSSHKEYS:1632736037:  : authorized_keys authentication shellsshkeys instructions applications passphrase configure important including directory generated clipboard requested procedure otherwise passwords assuming yourname detailed puttygen username starting specific platform creating directly creation discard whether editing looking account changes without command android windows instead program guessed present created having cannot public copied notice should folder __make access unlike keygen second insert ircnow termux during actual prompt begins appear either editor select cursor moment found click users right press might https linux added close paste empty leave again there chmod items shift title since order links which based first those using guide file text into copy sure once many this want ctrl that back were will home data need show mail open time nano from just safe asks unix used pair save part next such more also all git log end see are rsa way lot let row new yes www one mac set who 700 600 of up go pc cd 1 2
+AncientWisdom.RecentChanges:1632736037:  : ancientwisdom recentchanges august 2021 bio 30 at 10 51 pm by
+GrapeTeam.RecentChanges:1632736037:  : recentchanges grapeteam tracker august jrmu 2020 gry 24 by at 10 13 16
+Shell.Putty:1632736037: Shell.Sshfingerprints : openssh_install_firstuse authorized_keys sshfingerprints administration connecting powershell invisible microsoft necessary puttygen download username generate versions password greenend sgtatham replace address example private windows account consult default running records button server select attach latest ircnow chiark public client verify recent config bottom cause after paste https win10 right click ready start title press check sshfp fruit login built your need real with file into host type this pair fill ssh2 john then that have know port page docs here when come html and ppk set fun don one org hit isn www png for can dns are not fpr by 22 be go uk
+Openbsd.Netadmin:1632736037:  : responsibility technically mindlessly netadmin networks blogspot belongs openbsd repeat howtos https based paste bsdly there heart other users after 2011 mine like will many this none from with code care html just not com but lot for and me my we
+Debate.Bncnow:1632736037:  : intelligently connections disconnect intuitive multiplex plaintext warnings security verified networks succeeds timeouts greater openbsd instead logging chooses written repeats bouncer minutes psybnc debate client chroot glined glines pledge handle unveil bncnow single future friend access hacker issue users times every using again retry onto like this that only have over does best once unix more then than one don znc can non ssl 200 all for has irc lot of we so 5
+Orange.Ru:1632736037: Orange.Orange : совершенствовать предоставляем производится пользователя подключаться регистрация принимаются французском английском пожаловать обращаться апельсином добавлена индийском друзьями арабском помогает запросы датском хостинг руснете слышать баунсер русском сервере создать прямого языках отзывы сейчас услуги группы режиме погоду разных хотите доступ одного просто пишите можете помочь группу почте будем нашем будет вашей через добро почта эфира позже текст также можно много чату есть свою если сети ника бета рады файл боты игры дают metacpan наши ваши support для или ircnow orange вас нам search веб plugin https 1гб мы sftp эл пк size perl org bot php ru 20 q
+Ircweb.RecentChanges:1632736037:  : recentchanges october ircweb 2020 jrmu 05 at 01 10 am by
+Stopm.RecentChanges:1632736037:  : recentchanges january stopm 2021 jrmu 31 at 12 36 by
+Mango.RecentChanges:1632736037:  : recentchanges december packages january mango 2021 todo jrmu 2020 nix 31 by am 48 10 at 30 12 pm 04 01 06
+Jujube.RecentChanges:1632736037:  : recentchanges february january jujube 2021 todo jrmu fizi team by pm 04 01 at 06 13 11 22 05
+Opernbsd.RecentChanges:1632736037:  : recentchanges opernbsd december buyvm 2020 jrmu 04 at 12 06 pm by
+Debate.Zoomdanger:1632736037:  : arstechnica zoomdanger encryption debate policy users years https about lied 2020 says end for ftc com to 11
+Debate.Uberdanger:1632736037:  : uberdanger california business nytimes economy workers ballot debate https 2020 lyft html com www gig 11
+Debate.Matrixflaws:1632736037:  : matrixflaws development safeguards wikipedia developer project outside getting process control donors really source ensure debate place money https their users jrmu from that look have they what team but org you put are to 03 36 26 20 24 58 is of 25 54
+Tutorial.RecentChanges:1632736037:  : recentchanges tutorial january 2021 jrmu 01 at 03 25 am by
+Openbsd.Stable:1632736037: Ircnow.Servers : scrollback 2020123100 timestamp procedure collision separate username changes example another sending support members channel editing servers advance openbsd actions number backup entire ircnow emails assign should leader serial stable config report logged notify avoid every check major daily pages tasks taken fruit copy need with work team that each sure doas make your save must read wiki when all org for and day by of to cp
+Guava.Todo:1632736037: Openbsd.Acme-client Openbsd.Botnow Guava.Guava Openbsd.Newdisk Openbsd.Team Openbsd.Stable Openbsd.Znc : background attempting donations procedure tableend practice changes openbsd upgrade version perhaps coconut collect deleted newdisk patreon country correct client botnow please paypal 32ff7e remove skrill stripe 0a3d62 limits cellnr update before ircnow adding stable server ffaf40 color guava style setup money check payza title users major certs files these httpd first todo conf need team rate skip make your sure acme note list test done page any hit znc all org and are ssl way etc out fix if of 8 1
+Fig.RecentChanges:1632736037:  : recentchanges january march chewy 2021 jrmu todo test dima fig log at 31 by pm 06 01 10 11 15 am 07 23
+Users.RecentChanges:1632736037:  : category_mirrory categorymirrory recentchanges january users wrong caps 2021 12 by pm 01 08 10 03 04 am
+Debate.UnixPhilosophy:1632736037: Debate.Debate Users.CategoryMirrory Freedom.Unix Freedom.Software : category_mirrory categorymirrory implementation unixphilosophy centralization implementatoin implementaions significantly documentation modifications understanding coding_style counterpoint dependencies interactive differences familiarity unnecessary integration perspective impossible developers permissive dependency guidelines management technology extraneous habituated interfaces internally networking simplicity openhttpd opensmtpd principal learnbchs naturally languages operating malicious recursion standards proponent combining ecosystem including cognitive otherwise disagree provided databses software reliable suckless programs together original upstream specific opposite approach yourself endorsed platform attitude licences required sources opinion freedom effects complex focuses instead license trivial history problem aspects protect dynamic debates fosters linking centric details audited current project feature another without suppose openbsd achieve changes because written towards unbound similar behind static prefer google easily master branch making native ircnow secure crypto author intent action nature domain design follow things client modify reader rights forked should public better factor output become revise pinata people allows rather stable needed simple itself choice clause avoid https trust input often creep users party techs shell trend being ships types major forks tight makes title going small about stuff build works which worse there calls tools index click linux text well repo does when what from they mean that must back list send this long over edit push copy wiki have apps tmux acme much perl korn wide lack deps apis rest next flow 0bsd fast side than mind upon meta code such fail etc org say but 3rd try any how nsd cc0 don gpl add php run toc mit has web by 2
+UsersCategoryMirrory.RecentChanges:1632736037:  : userscategorymirrory ircfreehomesteadvps category_mirrory recentchanges statement pioneer january 2021 test july 17 pm 03 by 26 08 am 44 06 12 22 04
+OpenBSD.Perl:1632736037:  : permissions libraries incorrect importan required created default execute s_iwgrp openbsd s_iwoth before access custom result during value wanna write users other owner umask those share usage cause perl will only some dirs cpan with need have man 022 you set if
+OpenBSD.CPAN:1632736037:  : permissions libraries incorrect importan required created default execute s_iwgrp openbsd s_iwoth before access custom result during value wanna write users other owner umask those share usage cause cpan will only some perl dirs with need have man 022 you set if
+Openbsd.Slrn:1632736037:  : installation configure compiling download releases connect extract support jedsoft example pkg_add openbsd version latest server ircnow create export attach prefix local usage ports slrn1 first snews user home path make http nntp wget doas with find xjvf from you ssl png the bz2 tar 563 org and can bin to 3a cd 0
+Debate.Ipsec:1632736037: Openbsd.Iked : implementation administrators unnecessarily compatibility configuration certificate censorship impossible wireguard authority companies configure somewhere literally sometimes operating protocol obsolete although paranoid security software business hundreds openbsd systems changes agility clients warrior upgrade connect conduce process laptops imagine matters unable server phones cipher normal middle people ipfire needed reason weaker import bypass native debate deploy months using ipsec https their tried those would doing sales years sized which title world today allow lacks there users force this have many will that like same shut down iked easy from blog post even your very were case road next with out and cut etc off job org why not has vpn 200 who ssl be
+Ircnow.OpsofLiberty:1632736037: Ircnow.Goals Third.Third Freedom.Freedom Ircnow.Howtoask Freedom.Unix Ircnow.Servers Marketing.Marketing Ircnow.Roadmap : documentation opsofliberty commitment philosophy experience optionally marketing questions sysadmins reporting software networks familiar policies stations customer training internet howtoask roadmap hosting freedom servers improve connect support minimum channel ircnow duties invite rfloat mentor become attach reward resume gaming coding would goals third hours users abuse tasks their other party title using power apply wikis blogs radio learn smart rosie 300px width with help bots much your team week unix such read oper must more chat will they like join and for get one can png new add own non cv if 5
+Openbsd.Audit:1632736037: Openbsd.Ddos Openbsd.Phishing Openbsd.Shellinjection Openbsd.Rootkit Openbsd.Backdoor Openbsd.Dos Openbsd.Spamming Openbsd.0days Openbsd.Rootkits Openbsd.Chroot Openbsd.Pledge Openbsd.Unveil Openbsd.Pf Openbsd.FilePermissions Openbsd.Databaseperms Openbsd.Passwords Openbsd.Ssh Openbsd.Secureweb Openbsd.Ids Openbsd.Trust Openbsd.Defaultdeny Openbsd.Sshkeys : vulnerabilities filepermissions shellinjection untrustworthy databaseperms compromised filesharing impersonate defaultdeny configured constantly mitigation reputation signatures exploiting everything impossible protecting vandalized interested relatively passwords attackers backdoors important thousands determine computers affecting perfectly verifying expressly obscurity secureweb databases operating intrusion improving switching disasters detection difficult teammates discussed extremely rootkits security reducing intruder changing customer services internet firewall phishing personal advanced consider download software hundreds supposed spamming planting yourself sections attacked crackers spammers approach properly standard kiddies sshkeys openbsd require thieves product planted systems because someone logging pretend upgrade version hacking windows towards execute attacks through private similar surface assured offline servers another enabled connect becomes example network illegal defense isolate improve prevent profile website denial pledge unveil public chroot should access manage called number stolen emails ddosed amount stupid simple ircnow moving notice effort simply active script harder credit skills except easier source reduce placed permit latest policy loaded leaked please there small steal could using 0days going hopes block write hosts means known users warez fixes never linux title audit being types doesn might chats spend steps basic taken state harm thus will this that card more fake nick info what them best hand they with safe stop have much from like when aren code make must good high next read used name just each mind tech apps bugs fail try can don may low won has ids out too non add bad lie him who set mac any tls pf by pc
+Openbsd.Setuid:1632736037:  : login_lchpass login_passwd login_chpass traceroute6 temporarily privileges themselves executable developers lockspool interface essential operating programs normally shutdown security binaries designed packages executed allowing probably libexec network packets example massive exploit command because created keysign openbsd warning serious trusted audited delete setuid allows access server setgid become authpf detect listen system files ping6 would above could these other guess those badly watch title users owner group staff short owned than more send lprm doas have must sbin chsh flag chfn 4000 perm find that pppd part your risk want then with same lets this root noip here will only such when but non usr for any run can are may see ssh bug has to by if of
+JuiceSSH.RecentChanges:1632736037:  : recentchanges juicessh connect august 2021 jrmu 13 at 04 pm by
+Freedom.Press:1632736037:  : infringement pornography uncensored censorship individual necessary establish copyright marketing amendment decisions peaceably congress religion petition official exercise welcomes illegal freedom servers network applies however content retains service threats example control violent 100pct debate ircnow gather rights policy ensure rfloat attach speech first title allow users their terms local there press staff rules width order shall make stop this only also each ages will that wide with must and own for its set any png not
+Freedom.Openforeveryone:1632736037:  : openforeveryone shadowbanned accountless privileges persecuted religious neglected clueless internet whatever platform language yearning services culture english outside network provide country freedom accepts connect welcome newbies attach walled rights ircnow belief rfloat people refuge common become world might users savvy title store these 50pct torch width linux those tired have they give race this your part from safe goal hard send that rich tech only also poor hope whom chat and png but not app are of
+Freedom.Selfadmin:1632736037: Freedom.Unix : administration professionals corporations proprietary administer themselves controlled understand philosophy configure dangerous knowledge investors strongest corporate platforms selfadmin marketing educated networks software recruits maintain hardware training powerful provides install liberty freedom without ensures defense trained quickly vendors sharing depend simple follow coding system insist ircnow entire rfloat attach normal always rather highly govern unlike users learn where after brief 300px width among staff their other rosie hands class elite guard title cloud being never have code only well that unix will this easy fork rest need upon does than from host uses able can own png not our by
+Servers.RecentChanges:1632736037:  : recentchanges february servers rights 2021 jrmu 28 at 12 37 pm by
+Freedom.Firstamendment:1632736037:  : firstamendment infringement pornography censorship uncensored individual necessary peaceably marketing decisions establish copyright congress religion petition welcomes exercise official redirect illegal freedom applies network control however example violent servers retains content service threats ensure debate attach ircnow rfloat speech policy gather 100pct rights users rules press local allow terms width shall staff title their order there each make will only stop with that must this also wide ages set not png its own any and for
+Unix.Ethic:1632736037: Debate.Dogfooding : livefreeordie documentation dependencies unnecessary interactive developers dogfooding philosophy guidelines permissive integrate marketing standards languages interface learnbchs software internet program openbsd tightly license another written audited feature choose follow debate native rfloat attach forked needed design prefer output widely easily better clause https avoid party write style stack title shell input ethic width 300px thing creep with perl unix work korn that well code used text when over gpl mit org our jpg can 3rd one own man web to by 2
+Unix.Workethic:1632736037: Debate.Dogfooding : livefreeordie documentation dependencies unnecessary interactive philosophy permissive dogfooding developers guidelines integrate interface languages learnbchs workethic marketing standards internet software program openbsd audited tightly written license another feature needed choose clause follow native widely prefer better output attach rfloat easily debate design forked party stack thing style https width avoid 300px write title shell input creep well over used code unix with text when that korn perl own jpg our 3rd can one mit org gpl web man to by 2
+Freedom.Startupdream:1632736037:  : startupdream oregontrail billionaire opportunity connections monopolies regardless willamette neutrality marketing corporate business special network created country through freedom anybody highest welcome rfloat attach become elites valley online answer center degree build staff title clear users 300px width equal hard back have both rich poor what ceos from need next this new for the you png can are don how of to
+Ircnow.OpofLiberty:1632736037: Ircnow.Goals Third.Third Freedom.Freedom Ircnow.Howtoask Freedom.Unix Ircnow.Servers Marketing.Marketing Ircnow.Roadmap : documentation opofliberty commitment philosophy experience optionally marketing questions sysadmins reporting software networks familiar policies stations customer training internet howtoask roadmap hosting freedom servers improve connect support minimum channel ircnow duties invite rfloat mentor become attach reward resume gaming coding would goals third hours users abuse tasks their other party title using power apply wikis blogs radio learn smart rosie 300px width with help bots much your team week unix such read oper must more chat will they like join and for get one can png new add own non cv if 5
+AndroidEmail.AndroidEmail:1632736037:  : androidemail security username password incoming optional starttls outgoing account setting server ircnow attach prefix width 480px enter type smtp imap path port step your open sign org the png tap 587 app new 143 add up 2
+Freedom.Independence:1632736037:  : category_mirrory likegrapefruit representation thor_of_angels compatibility independence corporations unreasonable development competitors competition manipulated destructive advertisers independent obstructed themselves protection extremists punishment committees deplatform violations oversight arbitrary submitted networked pretended different establish pretenses lovelyred appealing therefore computers prevented institute platforms excluded declared software networks superior solemnly accounts absolute transfer invasion whenever deriving allowed without process created consent becomes tyrants against supreme evident publish benefit servers protest service silicon threats bgcolor leaving abolish tyranny freedom banned powers rights ircnow admins exists secure ruined locked profit giving stolen across united valley candid attach should factor lfloat center define direct truths sturtz signed yellow black users prove equal facts techs their error alter false death terms these under title taken rules break staff unfit judge world ought trial width 100px alone spied being align based they well that hold jobs self nate data show code have away jrmu text down just sold this from jury ends will any god png new aim our its has let not who by
+Achurch.RecentChanges:1632736037:  : recentchanges february achurch install 2021 jrmu 10 at 04 33 pm by
+Marketing.Republic:1632736037:  : constitution_we_the_people united_we_stand constitutionus wikimedia marketing wikipedia republic commons images source upload change serve https users thumb 640px file this org let jpg 0d en to
+Marketing.Opportunity:1632736037:  : this_land_was_made_for_you_and_me columbiaamericasgreathighway040 bierstadt_albert_oregon_trail new_colossus shadowbanned opportunity accountless wikipedia wikimedia marketing clueless firewall yearning newbies commons upload those ports https users linux tired give open your send from chat free poor door org png jpg the tor net 70 6e my
+Oidentd.RecentChanges:1632736037:  : recentchanges february oidentd install pylink 2021 jrmu znc by 27 pm 25 01 at 12 am 32 08 33
+Congress.RecentChanges:1632736037:  : recentchanges procedure documents congress august march jrmu 2021 am by 41 06 07 at 04 50 01
+Minutemin.Training:1632736037: Irc.Irc101 Shell.Shell Unix101.Unix101 Unix201.Unix201 Unix301.Unix301 Unix401.Unix401 Unix501.Unix501 Unix601.Unix601 Ircnow.Goals Ircnow.Roadmap Freedom.Freedom Ircnow.Constitution Minutemin.Code Openbsd.Doas Openbsd.Syspatch Tcpip.Overview IPv4.Overview IPv6.Overview Openbsd.Ngircd Openbsd.Hopm Openbsd.Netcat Openbsd.Ping Openbsd.Dig Openbsd.Openhttpd Openbsd.Acme-client Openbsd.Php Openbsd.Pmwiki Openbsd.Znc Openbsd.Relayd Openbsd.Oidentd Openbsd.Dns Openbsd.Vhost Openbsd.Host Openbsd.Unbound Openbsd.Nsd Openbsd.Staticnet Openbsd.Opensmtpd Openbsd.Spf Openbsd.Dkimproxy Openbsd.Dmarc Openbsd.Mailopenproxy Openbsd.Dovecot Openbsd.Team Openbsd.Stable Openbsd.Testing Openbsd.Ongoing : decentralization troubleshooting congratulations discrimination aliendata_josh vunerabilities deplatforming authoritative investigation mailopenproxy republicanism independence constitution surveillance shadowbanned verification connectivity applications deplatformed indifference fundamentals dependencies independent development advertising description established centralized certificate presumption netizenship customizing configuring declaration simpletable serverwoman arbitrarily integration splinternet opportunity chewbakka85 programming accountless understand networking monopolies nameserver websockets principles blackbeard torrenting cryptobank miniontoby censorship dissidents javascript passionate harassment federation plantation cloudflare immigrants campaigned controlled installing jefferson ecosystem staticnet minutemin modifiers openhttpd advocated anonymity elections publisher arbitrary procedure political dedicated ircitizen configure homestead providers innocence marketing dkimproxy character resistant publicity opensmtpd addresses inventors supporter encourage religious searching exclusion anonymous mayflower abolition fediverse exploring unpatched violation languages copyright interpret webserver referral practice requires backdoor protests security cesspool insecure projects personal minetest frontier suitable governor williams disaster movement software merchant smuggler plymouth sortable dealings spammers brewster telegram religion settling congress licenses defender facebook indecent champion negative benjamin almanack children subpoena diplomat hamilton bullying dictator lawsuits training criminal censored services accounts yourself increase explorer pioneers sysadmin improved overview syspatch declares protocol continue password politics bootcamp unix401 openbsd privacy servers setting discord melting chamber liberty roadmap whitney hancock freedom unix501 unix601 raleigh captain ircians detects monitor bangcat dovecot youtube startup seizure divided orderly harmony sharing ongoing copying testing unlocks blocked purpose limited unix301 oidentd unix201 patriot unbound authors eggdrop command unix101 ethical abusers promote caching sheriff reports outlaws culture process partial silicon founder storage message bonuses outlook sending default systemd senator records madison private bouncer drafted effects warning acquire subline special hosting prevent justice federal reverse firefox virtue cancel border longer matrix strong always policy bridge mostly danger beacon seized faster clones unruly revoke chrome filter remote uptime domain heroes client coding powers police writes valley stable please skills voting attach issues lawyer resume ircnow ensure halfop double rfloat irc101 civics pmwiki relayd ngircd psybnc lesson netcat recite social needed orator nodejs samuel leader signer pirate walter assets native factor argued daniel dennis papers python walled gossip easily united garden rights thomas paypal tyrant accept vhost fewer tcpip staff dmarc reuse local email basic using gmail panel learn which about goals 300px setup shell width check linux title privs dream civil riots proud comes major judge honor fines coppa their voice these press total rtalk party adams libre owner henry smith wrote error first james chief roger reset class decoy boone early posts brave bible topic such fear also fizi nsfw from xmpp acme safe rust some bdfl life imap mass poor type have with fair john seas ipv6 file tech ping nntp dump ally oper folk penn hopm team that bans risk root 0day rush doas echo n00b read give real ipv4 isps fork take code perl gdpr none agpl bill tlds news when join 100 gry dns how znc jay due max dig lvl old php png ops vpn spf vps nsd ssl not bot eye quo pot fan any god who sms 3rd get 2x 3x 25 gb
+Minutemin.Code:1632736037:  : professional disciplined minutemin integrity marketing teammate selfless guardian loyalty respect service courage abandon warrior network trained freedom accept attach values ircnow rfloat expert defeat member middle system fallen honor tough title users width 300px serve admin code will chat with well quit here duty live the png not job way my
+Tcpip.RecentChanges:1632736037:  : recentchanges overview february tcpip 2021 jrmu 14 at 11 am by
+IPv6.Overview:1632736037:  : unfortunately hexadecimal compatible increasing everything necessary addresses providers backwards hostnames separated subdomain available contains messages accepted designed overview internet connect devices records support between servers hosting getting shorten correct becomes written tunnels special without unique unable custom subnet result single humans digits rather colons planet groups needed losing eight users avoid worth stack takes money order costs newer zeros older given title earth often price which email based major match means vhost there well ipv6 7334 8a2e 2001 ipv4 0370 0db8 from that 0000 each rdns than more this lack deal aaaa have just both only will dual must four work are you bit can far irc 128 web not and now was but two all by so 64
+AppleMail.RecentChanges:1632736037:  : recentchanges applemail february connect 2021 jrmu at 04 38 pm by
+Thunderbird.Connect:1632736037: Thunderbird.Pgp : authentication thunderbird02 configuration thunderbird05 thunderbird06 thunderbird07 thunderbird01 customize encourage configure manually starttls password username download settings complete security address account connect actions bottom server switch ircnow attach corner normal select click inbox tools email your once done left menu from open port fill imap smtp for png org ssl 587 → pgp and tab top new can 143 is we
+AppleMail.Connect:1632736037: Freedom.Freedom Email.Email : chooseprovider addaccount02 addaccount01 proprietary selectapps connecting applemail consider gpgtools outgoing software incoming details specify freedom encrypt protect appears sending server attach ircnow unable client should source charge reason longer click begin using inbox https title login with then this done sign menu fill from your open help need type imap will want for but org can use png and may →
+Outlook.Connect:1632736037:  : following outlook01 outlook03 outlook02 anything settings password username options account connect attach please server adress corner change button press steps first check after email ready buggs error open test join send have kind will know this then next left seen file new jpg for you and let too all don of if go
+Outlook.RecentChanges:1632736037:  : recentchanges february outlook connect 2021 jrmu at 03 23 pm by
+PSFTP.Connect:1632736037:  : psftp01 connect attach png
+PSFTP.RecentChanges:1632736037:  : recentchanges february connect psftp 2021 jrmu at 03 57 pm by
+User.Welcome:1632736037:  : intellectual shadowbanned opportunity accountless oppression oppressed religious corporate blessings preserve dedicted software economic internet business freedoms welcomes assembly language yearning clueless liberty outside worship network variety newbies invites online settle walled openly ircnow nation attach thrive rfloat legacy speech among enjoy store start every users creed title these 150px tired linux torch parts those width four from give your like help home poor will send type hope chat own and png god app for is by
+Vim.Vim:1632736037:  : whatuwanttoreplace newkeyword experience anything navigate replaces document commands keyboard specific keywoard install without pkg_add console disable bottom syntax insert search change enable saving single escape delete number please triger cheat sheet shift enter first write lines apply whith sents known right save quit jump type just last that show full mode them most exit this undo down left vim you for but set off can use 20 go up gg wq
+Leafnode.RecentChanges:1632736037:  : recentchanges leafnode february install 2021 jrmu 25 at 10 56 am by
+Ln.RecentChanges:1632736037:  : recentchanges february intro 2021 jrmu ln 25 at 12 pm by
+Minutemin.Game:1632736037:  : decentralization discrimination vunerabilities torrenter2010 republicanism search_social deplatforming investigation shadowbanned independence indifference dependencies verification surveillance deplatformed constitution independent splinternet programming integration description accountless simpletable presumption opportunity arbitrarily established advertising development chewbakka85 centralized declaration campaigned federation immigrants websockets censorship javascript miniontoby monopolies passionate cryptobank cloudflare controlled charitable dissidents harassment unpatched modifiers publicity innocence ecosystem advocated character fediverse dedicated abolition providers anonymity homestead exploring elections ircitizen supporter resistant political minutemin sanctions interpret arbitrary inventors copyright protocols encourage jefferson publisher exclusion searching mayflower anonymous violation languages religious complain indecent projects licenses children sortable security defender personal negative requires software diplomat shooting generous increase religion criminal lawsuits password politics subpoena cesspool congress movement disaster backdoor sysadmin regulars frontier minetest protests brewster censored commerce telegram pioneers referral explorer settling facebook bullying patriots plymouth accounts insecure dictator dealings suitable williams governor smuggler merchant improved champion firefox liberty reports network justice seizure startup divided sheriff raleigh openbsd hosting privacy abusers whitney freedom ircians systemd captain bangcat limited drafted madison warning promote storage partial service purpose youtube founder outlaws copying special sharing netizen bonuses default melting chamber eggdrop orderly process discord culture servers harmony subline attract hancock ethical senator effects blocked bridges authors danger mostly factor domain virtue seized gossip filter policy strong beacon tyrant border unruly walled garden united remote cancel longer revoke easily resume ircnow donors accept orator signer matrix faster dennis pirate paypal skills powers police coding writes voting nodejs python custom assets halfop chrome always papers daniel walter leader samuel thomas native clones uptime rights shell coppa boone dream vhost press reset their linux posts party voice fines total width class brave comes libre staff privs judge adams email first evade owner james bible proud early civil chief error major roger smith these reuse fewer wrote about agpl nsfw risk real tlds with take xmpp when fork name rust game 0day ally news bdfl some fees mass nntp file oper cert life fizi isps fair folk hero john bill unix seas dump penn more safe none code gdpr rush have n00b devs type echo send from data and fan mif eye quo 100 old jay bot bnc gry any vps due max vpn znc ssl odd 3rd pot god sms gb 2x 50 25 3x
+Almanack.RecentChanges:1632736037:  : recentchanges september almanack august 2021 jrmu alt at by 14 07 52 am 27 08
+Immigrant.Welcome:1632736037:  : intellectual shadowbanned accountless opportunity oppression blessings religious corporate immigrant oppressed yearning welcomes economic preserve internet business language software assembly freedoms dedicted clueless liberty newbies worship outside network variety invites walled rfloat attach nation settle thrive ircnow legacy speech online openly among enjoy creed users every store start title tired these width linux 150px torch those parts from your home poor give hope four will chat type help send like own and png god app for is by
+Mail.RecentChanges:1632736037:  : recentchanges openrelay march jrmu mail 2021 test by pm 03 04 at 07
+EthicalSource.RecentChanges:1632736037:  : holierthanthou ethicalsource recentchanges april 2021 jrmu 04 at 01 56 am by
+User.RecentChanges:1632736037:  : recentchanges welcome march user 2021 jrmu 05 at 07 34 am by
+Rbldnsd.Install:1632736037:  : documentation portscanning installation lightweight permission researcher zonefiles different debugging shortened providers sometimes combined download globbing remember manually response commonly websites scraping delegate probably assuming realtime infected spammers criteria finding certain rbldnsd naughty example written meeting restart manpage listing account frowned ip6trie service banlist hosting easiest pkg_add reverse verbose section useradd support command listed custom ip4set daemon enable rc_cmd listen record should output normal google octets shodan making linode simple chroot zones rcctl local dnsbl space fails might every https above proxy works lists would names using after socks since title there below email block mkdir based like read bind than with open note that this upon many html sbin 1017 also made ipv4 3600 aaaa 2602 fccf test have from just sure they make your echo home more bots ipv6 used subr pexp doas else idea into does lets edit line give boot turn sent etc 214 142 166 ips www for its run are bit txt ksh usr org 183 how ns1 irc too 102 105 bad dig cd by 76 45 48 41 20 37 15 46 40 q
+Ircnow.Chatforce:1632736037: Vps.Vps Ircnow.Goals Freedom.Freedom Shell.Shell Ircnow.Howtoask Openbsd.Openbsd Openbsd.Training Openbsd.Ongoing Ircnow.Roadmap Third.Third Ircnow.Finances : administration documentation references commitment experience optionally chatforce marketing tutorials questions interview improving homestead minutemin following software howtoask websites salaries projects training customer familiar sysadmin progress applying finances warriors recruits internet ongoing freedom improve include someday roadmap promote openbsd request require account friends willing network minimum support joining ircnow before finish report coding become please number worked system invite duties resume attach cannot afford deploy rfloat reward phone track title legal email elite staff corps seems basic party after third write hours goals while weeks would learn shell proud smart width 80pct help this must that time user your with team code unix hang good have lead name full like take and the png vps way few but out pay org new add by cv if 6 5
+Abuse.Code:1632736037:  : penitentiaries infringement misdemeanors correctional simpletable pornography screenshots punishments accusations reformation monitoring suspension themselves principles community libraries offenders probation copyright sortable evidence provided swatting networks warnings hardened gambling felonies required phishing stalking content minimum account illegal threats obscene service abusers hacking dealing heavier lighter connect evasion periods cloning include allowed months defend prison habits better forced mentor rights should judges attack border doxing minors fiends repeat years penal trial small theft crime death other width weeks teach books class bible first chat then help fine drug code case with pair like time ddos away take spam oath must have jury made logs plus ban are own irc ops and one fee may not fit 100 by 3 2 6
+License.Publicdomain:1632736037: License.Ircnow Gpl.Flaws : unfortunately publicdomain collectively restrictions requirements furthermore responsible development practically shakespeare simpletable information trademarks permissive definition television opensource encourages copycenter innovation permission distribute whatsoever absolutely agreement certainty ownership identical important generally copyright paintings difficult creations countries computers temporary essential preserve licenses millions copyleft software referred formulas whatever purchase sortable official possible yourname writings included creative equation features released attached practice provides leonardo predates printing achieves warranty liberty strings neither purpose recipes offered cooking popular reshare openbsd imagine similar granted without society deserve damages freebsd another combine however pleases covered entered ideally freedom science forbids belong ircnow should author simply harder result policy reason modify freely anyone longer future notice spirit copies common border around rights parody follow newton better credit wanted before asking works users today flaws using which their would place based there these known extra avoid quite close legal width class force https truly piece group reuse title solve build every quote study vinci words radio thing press isaac those less good this lets from fork must halt just slow list they most that have make many them type sell like down life math even give sign take html time hand uses true used into some code than were repo also 2021 case org few www who nor art 100 see gpl far non gnu had mit isc end can don sue fee may add too by
+NewsNow.Install:1632736037:  : newsnow_update_checker miniontoby following copyright download install command ircnow needed unzip https short grape admin only then this doas long curl says make your wget 2021 org vps how can run ksh it cd if
+NewsNow.Browser:1632736037: NewsNow.AppName NewsNow.ExtensionName : extensionname simpletable extensions utm_source sortable download webstore launcher newsnow browser example mozilla firefox appname website border addons chrome google https width opera class link apps com 100 ntp org us gb hl
+Gpl.RecentChanges:1632736037:  : recentchanges flaws april 2021 jrmu gpl 24 at 04 56 pm by
+Linux.RecentChanges:1632736037:  : recentchanges linux flaws march 2021 jrmu 14 at 05 13 am by
+Bsd.RecentChanges:1632736037:  : recentchanges march labor jrmu 2021 hope bsd am by 12 06 at 14 11 05 pm 15
+Vhost.Freedns:1632736037:  : likegrapefruit configuration chickenkiller personalised destination lovelyred subdomain verifying completed bgcolor support through clicked example address section contact captcha freedns account ircnow chance marked change create attach yellow center please server inform define afraid public picked bellow hosted system online cannot vhost image which after admin found valid black steps visit https email there names doing side will grab need with your fill plum ipv6 2001 easy page link just send open list that them take user save huge find ivp6 3402 type note mind tons rest want this site aaaa keep have and 130 all get org are png got has one its 550 any bnc but put few of my 8 7
+Ifconfig.RecentChanges:1632736037:  : recentchanges ifconfig march 2021 jrmu at 11 15 am by
+IPv4.RecentChanges:1632736037:  : recentchanges overview ipv4 june 2021 jrmu 10 at 13 am by
+EthicalSource.HolierThanThou:1632736037:  : holierthanthou discriminatory ethicalsource unenlightened marginalized surveillance slanderously headquarters homelessness interpreted executioner opportunity misogynists demonstrate independent circumvent submission developers homophobes executives laundering exploiting minorities monopolies themselves publishing kinggeorge providing corporate enriching blackmail certainly employees coworkers courtroom criminals including rewarding righteous business licenses vultures software ordinary ableists defining provides unfairly powerful slanders lawmaker yourself designed kangaroo pretend without silicon benefit cronies ensures lawyers denying putting purpose racists sharing freedom silence against bankers stopped boycott tyrants defend ethics access anyone valley attach living voices rfloat trying elites define system sleazy banned donors bigots coders series owners rigged street groups patent trolls always stands demand trial equal these lynch legal their users files small truly label nazis favor trust money gives where title drive twice thank serve basic other https while being width smear about 300px today what that away mean take will same even week like this over care call then open just from they mass fool seek wall jobs earn have jury real sole let why for but not mob may jpg has who can far if my by
+Weechat.RecentChanges:1632736037:  : recentchanges september weechat relay 2021 mkf 11 05 46 pm by
+Vim.RecentChanges:1632736037:  : recentchanges monaco april 2021 vim 11 at 14 pm by
+Minetest.Economy:1632736037:  : professionals improvements constructing experienced technicians unrealistic lumberjacks possessions freesociety blacksmiths practically replenished expeditions underground harvesters amusements purchasing production wilderness government carpenters irrigation publishers terrorists aesthetics simulation resources naturally expensive specialty dangerous unlimited buildings fishermen worldedit processed beautiful politics drinking sleeping everyone requires minetest property valuable teachers required exchange physical explorer crafters consumed planting increase division depleted foragers soldiers scarcity scenario economy refiner coinage quickly markets builder sailors doctors smelter creates driller virtual satisfy hunters diggers farmers instead players ensures sellers promise plowing allowed savings enforce forests ditches factory capital voting guilds scarce admins should miners cannot points policy labour decide assets bakers cattle actual offers buyers rarity barter escrow blocks makers yields novice remain damage owning barren reward hunger thirst energy metals inside little desert tundra order needs great other users which owner labor items grain paper wages where house money their water death based might trade mined wheat using clean risky value mese gold post food paid will land with vote must kill game that they role form like only also rent mint more boat rare easy turn rate time gain this than most 10x bed any rob oil law few fun its 500 by up
+Vmm.VoidIso:1632736037:  : githubusercontent sha256sum voidlinux 20210218 packages voidiso release signify current srcpkgs x86_64 master alpha https files live repo keys vmm pub raw org com ftp de
+Pmwiki.Simpleurl:1632736037:  : enablefixedurlredirect resolvepagename initialization configuration grouppattern makepagename preg_replace defaultgroup query_string redirecting defaultpage namepattern request_uri certificate defaultname pagepathfmt preg_match containing pageexists normalizes fullchain reference pagenames http_host redirects challenge condition disabling directory simpleurl isenabled location cookbook requests solution settings ext_addr function variable normally fastcgi disable without private slowcgi rewrite uploads openbsd invalid problem current comment missing partial include working encript leetio listen server htdocs pmwiki ircnow solved return egress header global socket static change during found based files abort httpd setup clean order https block strip known types index share check acme root from html stop used hard well 2018 cgit port reyk exit misc mime loop this fpm dev don ssl run php not 404 key etc pem 443 exp usr tls the 302 bin let any pub and was for css get png sdv 13 06 15 08 of 24 80
+Bgpd.RecentChanges:1632736037:  : recentchanges configure bgpd 2021 jrmu may 03 at 06 26 am by
+Dig.RecentChanges:1632736037:  : recentchanges sarah usage 2021 dig may 04 at 36 am by
+Bitlbee.RecentChanges:1632736037:  : recentchanges bitlbee install july 2021 mkf at 07 12 pm by
+Ircnowd.RecentChanges:1632736037:  : recentchanges ircnowd 2021 jrmu may 07 at 01 46 pm by
+Census.RecentChanges:1632736037:  : recentchanges census 2021 jrmu may 07 at 06 pm by
+Tmux.Share:1632736037:  : sharedgroup sessionname sharegroup howtoforge lightgrey different accounts sessions assuming terminal shareds running bgcolor members already between sharing border attach please called socket access screen chgrp https width chmod start users tmux note only have that with rwx the tmp new and may you two add com www do 80 is
+Pf.RecentChanges:1632736037:  : recentchanges bejelentkezni guide 2021 may pf 17 at 03 37 am by
+Freedom.Freenode:1632736037:  : everything themselves separation marketing community defending petitions ancestors madeonirc religion exercise imperial freenode messages networks internet protocol arrogant governed property silenced servers monster freedom natural tyranny cruelty pursues embrace royalty mankind silicon suppose enslave records created belong common mother admins refuge tender ircnow rfloat groups others subdue absurd valley prince source honest reigns friend pleads things family secure attach banned users power cause havoc above sense needs tells which cries tries drove crown where right still first title birth these times equal https 500px width quite chat from data does code that same open make upon room fled this like duty even look have been obey born grow soon part not has out tis and you set png org for men few are but who yet day of by if
+Freenode.Takeover:1632736037:  : themselves everything separation community corporate takeovers petitions madeonirc marketing defending ourselves ancestors protocol internet imperial exercise religion property messages arrogant networks silenced governed freenode freedom monster cruelty royalty embrace tyranny created mankind records silicon suppose natural enslave pursues servers valley common absurd subdue belong others admins mother refuge groups tender prince source banned honest attach friend reigns ircnow family things rfloat secure pleads cries sense tells power https which drove tries right cause first havoc above crown where still users title needs birth equal times these 500px quite width like code upon make data look chat from part duty that same does room even fled this grow soon obey open been have born set not but you and has out are png for men few org tis day yet who of by if
+HostServ.RecentChanges:1632736037:  : recentchanges hostserv rules june 2021 jrmu 01 at 08 11 am by
+Fiche.RecentChanges:1632736037:  : recentchanges install august almajd fiche 2021 25 at pm by
+Vpn.VpnMac:1632736037:  : authentication administrator certificate preferences underneath available interface password username settings keychain download congrats triangle category connect network address service working opening trusted changes select search should always double bottom button system ircnow window attach access vpnmac mojave legacy engine circle remote unique server please using ikev2 https users close local yours visit click green there ipsec enter where title first macos items right that will side iked turn file from when pane what type left next save this says site png old org put crt for and not see tap app all 03 02 10 14 04 of 06 up be 01 my 05
+Dkim.Dkimsign:1632736037:  : _dkimsign groupadd private useradd nologin openssl public pubout genrsa mkdir chmod _mail empty chown doas 1024 sbin etc var key rwx mv
+Pipes.RecentChanges:1632736037:  : recentchanges redirection august pipes 2021 jrmu 23 at 03 50 am by
+PowerShell.Connect:1632736037:  : openssh_install_firstuse administration powershell microsoft necessary invisible password versions username windows example running replace default account connect ircnow attach select server button recent title https putty press start win10 click right come with your type then ssh2 real here docs org png can and not are if by
+MacTerminal.RecentChanges:1632736037:  : recentchanges macterminal connect august 2021 jrmu 10 at 33 am by
+Termux.RecentChanges:1632736037:  : recentchanges connect termux august 2021 jrmu 11 at 05 28 am by
+MIF.RecentChanges:1632736037:  : recentchanges nsturtz test june 2021 mif 25 at 12 42 pm by
+Openbsd.Sic:1632736037:  : installation community messages suitable examples natively suckless commands setting scripts pkg_add channel support default clients openbsd ircuser joining written leaving sending stdout making prints ircnow unlike common access simple needed target usage doesn which place quick where using stdio lines reads with used than they work nick code from sent into doas most sic are for org ssl tls 250 of by is
+Host.RecentChanges:1632736037:  : recentchanges usage host july 2021 jrmu 28 at 01 57 am by
+Syslogd.Remote:1632736037:  : fullchain authpriv example private syslogd client daemon notice remote 55106 debug rcctl flags host tls4 none conf doas cron user kern info cert mail set com the lpr ssl etc pem ftp key
+Openbsd.Matterbridge:1632736037:  : troubleshooting configuartion configuration matterbridge 10012345678 telegateway supergroups matterbrige telebridge afterwards ircchannel ircgateway ircbridge sometimes protocols currently supported botfather telegram messages segfault download disabled programs releases privacy replace example require openbsd botnick connect account chances defined defines running version written another second create server before enable editor author choose github binary inout which newer token first 64bit 42wim lines three guide https their plain chmod needs from chat that note your with then file come many 6667 have send help name true next will toml sets only text last lead used this fire adds make and are ftp won but can due bug 20 if v1 of go
+Rcctl.RecentChanges:1632736037:  : recentchanges august rcctl 2021 mkf at 03 pm by
+Rbldnsd.RecentChanges:1632736037:  : recentchanges rbldnsd install august 2021 wiki mkf ish 22 at 07 58 pm by
+Texlive.RecentChanges:1632736037:  : recentchanges texlive install august 2021 mkf 03 at 01 51 pm by
+Medals.RecentChanges:1632736037:  : recentchanges medals august intro 2021 jrmu 04 at 08 34 am by
+Sshwifty.RecentChanges:1632736037:  : recentchanges sshwifty connect august 2021 jrmu 06 at 05 00 pm by
+License.IrcnowV2:1632736037:  : distribute permission copyright yourname ircnowv2 license without granted purpose modify work this 2021 and use for any fee org to by
+SerFISH.RecentChanges:1632736037:  : recentchanges serfish connect august 2021 jrmu 06 at 05 pm by
+Gazette.RecentChanges:1632736037:  : recentchanges polishing gazette august 2021 mkf bit 15 at 01 14 am by
+ConnectBot.RecentChanges:1632736037:  : recentchanges connectbot august keys jrmu 2021 12 by at am 04 34 pm 58 06 11
+Termius.RecentChanges:1632736037:  : recentchanges termius connect august 2021 jrmu 14 at 04 42 am by
+Squirrelmail.Connect:1632736037:  : squirrelmail connect install august jrmu 2021 mkf 10 by am 22 at 04 14 46 07
+Asterisk.RecentChanges:1632736037:  : recentchanges asterisk install august 2021 jrmu 14 at 06 03 pm by
+EmailTray.RecentChanges:1632736037:  : recentchanges emailtray connect august 2021 mkf 15 at 12 11 am by
+Tls.RecentChanges:1632736037:  : recentchanges august 2021 jrmu tls ca at 11 10 am by
+Mariadb.RecentChanges:1632736037:  : recentchanges mariadb install august 2021 wiz 23 at 04 42 pm by
+Tmux.Shortcuts:1632736037:  : session_name shortcuts sessions length substr attach myname xargs print named start kill with tmux grep list awk new the all to ls f1 0
+Wraith.RecentChanges:1632736037:  : recentchanges september wraith chroot 2021 mkf 10 at 06 11 am by
+Cvs.RecentChanges:1632687018:  : recentchanges miniontoby september guide 2021 cvs 26 at 28 pm
+Cvs.Guide:1632666521:  : sourcefolder versionname commitmsg reponame checkout remotely yourname username firstly changes allowed checked depends profile execute cvsroot inside needed cannot import localy making export start steps files guide quick move some home note only wait more time then into host make have done once stay will init help that are add lot way and org set if cd
+Vmm.Router:1631621478:  : forwarding 0xfffffff8 0xffffff00 indicates hostname separate properly function machine virtual warning subnets router sysctl maxlen mygate inet6 1024 2602 fccf conf same echo 3402 1008 arpq 2001 will must mask vio0 the etc em1 and 162 ip6 two are em0 vmm 163 550 not 48 41 87 38 if be 81 42 64
+Weechat.Relay:1631382405: Acme-client.Configure : whatever_password specification certificate interfaces listening configure document generate protocol instance connect clients glowing program network openbsd weechat enabled disable openssl server follow moment ircnow detach before secure mostly plugin allows keyout remote newkey setup nodes relay using start issue binds after would mkdir title means which those steps https need 8001 x509 this 2048 with your ipv6 bear note data only acts used days well acme from will then tmux org and add 365 req are rsa can pem has won own run off web cd
+Gry.Bio:1631328571:  : administration communication experienced interactive volunteer education software capacity internet champion combines interest servers bouncer system shell title libre since linux time wiki home 2010 user free with real and irc gry bio the
+Hopm.Telnet:1631254412:  : lookup_branded established information simpletable connection statistics 1786317200 localhost connected character ge954b59d displayed openbsd6 referrer hostname internet download viewport sortable newnick content allowed network newuser example running version dronebl unknown proxies welcome initial minimum doctype address charset newname testing geonode foreign prevent device server telnet myhopm trying escape ngircd x86_64 listed socks4 socks5 notice closed client length policy border hidemy method users https nick5 index abuse proxy class relay width error title visit user5 scale html scan spam your mode more free 2001 6667 meta 3300 lang have line jrmu 2021 text pong ping 1598 date from the 168 192 org 443 190 185 184 www 002 url utf get 396 db8 405 gmt mar sun kb to 50 by of ip 07 nc 32 10 80 26 25
+Wraith.Chroot:1631254291: Openbsd.Dns Openbsd.Backup Openbsd.Netcat : 6e8e5b2448356bb48f642dd18115aaaaca7b6dcb d2312f8fcd9de09574d7370e8de058d91322686c nuulsail2tydzzhwox9paz1l6sbovlvx thtqf8ifeee5ox0i documentation configuration automatically alphanumeric yourpackname abcd3fgh1jk1 instructions networkname yourhubname explanation controlling compromised information packconfig configured recognized officially binarypass afterwards protection administer wraithpath connection additional reference confusing providing dccprefix connected timestamp generated character somewhere something different libcrypto supported channels yournick contains software undernet specific chanmode password terminal accounts matching separate username creating unhashed directly enclosed optional replaced hostname settings continue security choosing updating hostmask services groupdel cherry07 chaninfo stronger yourself versions requires warrning oaijmnop powerful hubnick openbsd reasons botpack written warning urandom complex botnick fruit02 fruit01 nologin several because fruit03 portmin install libstdc comment libexec specify include without updated portmax eggdrop dynamic address homedir cookies private records working disable provide chanset patched command userdel however pkg_add useradd default release joining should ircnow ircnet script libssl delete source stable tested github create resolv ignore chroot fastop ensure secure leaves limits chattr client sample server backup netcat giving before botcmd fruit2 fruit1 manage handle botnet manual access autoop unable values hashes public better stolen entire salted flood nodes shell print three setup mjoin press enter chown users front vhost mkdir user2 means manop 12742 their flags whois efnet there paste 64100 suxsc valid 64000 durt8 owner lines keyed these salt1 salt2 wrote doesn since saved above waste takes voice sends https state opped first build gmake which while twice forth begin track store title guide newer leaf each both bots echo this safe that must more than will much same want data bot3 fill like look then ipv6 pick fold head show free quit have hubs goes bot5 bot4 bot2 such 1025 kick deop mdop help ctcp type find into used last easy cons pros sha1 once need dest copy done read keep wiki html note very them file repo doas xvzf true null been sbin chsh libm uses code gets hung ctrl ops ntk usr dev but org tar 10a awk run ssh hit scp may bad ksh dns can yes mop tmp ftp any won put za by gz 29 43 45 v1 47 z0 30 28 16 pc 46 96
+Seamonkey.RecentChanges:1630155336:  : recentchanges seamonkey connect august 2021 mkf 28 at 11 56 by
+Email.EmailAndroidEmailApp:1630075032:  : emailandroidemailapp
+Vmm.Haiku:1630068795:  : _zl24kernel_debugger_internalpkcs0_p13__va_list_tagi _zl20kernel_debugger_looppkcs0_p13__va_list_tagi kernel_debugger_internal__fpcct0pcl arch_debug_call_with_fault_handler kernel_debugger_loop__fpcct0pcl reserve_io_interrupt_vectors stack_trace_trampoline__fpv vfs_mount_boot_file_system _zl19common_thread_entrypv common_thread_entry__fpv mark_page_range_in_use arch_debug_stack_trace kdiskdevicemanager 0xffffffff81e84000 0xffffffff81e7f000 initialdevicescan ffffffff81e839f0 ffffffff81e83fd0 ffffffff800aad8e ffffffff81e83a40 ffffffff81e83f60 ffffffff81e83fe0 ffffffff81e83b30 ffffffff8010bd0e ffffffff80062799 ffffffff800ab0f7 ffffffff81e83fb0 ffffffff800aaa91 ffffffff8014510c ffffffff81e83990 ffffffff800a9108 ffffffff8008b5b6 ffffffff81e83940 ffffffff81e83928 extended_family extended_model _devicepresent _adddisksystem kernel_x86_64 write_overlay file_systems genuineintel information framebuffer patch_level _zl5main2pv 0x82613000 0x8260f000 devicemask partitions hypervisor controller main2__fpv haikuports 2115485744 available debugging disabling pclmulqdq hrev55181 microcode packagefs selection currently directory connected installed presence repeated 82612f64 features starting reserved stepping 826129a8 returned 8013a3b6 commands topology ignoring bootable 800a89d7 826129e4 826129d8 provided 82612a14 80103af4 revision packages 82612fb4 function 80067cb1 800a8d4a 82612a84 80088d2e 800a6f33 82612ab4 826129c8 800a713f 80148aa2 82612a54 800a74e3 welcome running message pdpe1gb enabled invalid syscall checked iso9660 getting support perhaps however syslog target failed caller offset popcnt sse4_1 sse4_2 before vendor output 115200 server useful number suppot kdebug string paging 0x3ae amd64 speed error panic ttyp5 times _scan pse36 clfsh ssse3 xsave 0x100 image doesn 30ghz since there 0x207 might using fixed basic quite never cmov long name sse2 fxsr free hard core this xeon type done cx16 from 2630 0xb7 some 0x88 0xf1 didn 0x6e 1072 tail them 0x99 i386 0x36 0x16 0xa0 find apic land qemu such last will 0x0b 0x1b only 0x77 1200 0x80 0xad 0x12 logs aes vme vnc smt rdp cpu 240 bfs fpu sep ata tsc pge msr pae cx8 dma are gui not vmm any avx yet mmx v1 98 32 nx os e5
+Openbsd.Mailopenproxy:1629922775:  : mailopenproxy openbsd
+Openbsd.Two-FactorAuth:1629747572:  : ___________________________ authenticationmethods corresponding distributions alternatively youruserhost capitalizing sshd_config traditional capitalized id539922062 interactive configuring passphrase factorauth challenges screenshot initialize characters proceeding whitespace disconnect encrypted functions calculate user12446 otherwise following connected something somewhere user41451 publickey terminal password skeyinit generate directly keyboard sequence defaults properly otpdroid download supports skeyinfo security although standard disabled assuming response without details android sshkeys improve account caution desired combine qb8h6yp entered command openbsd require another include restart follows profile changes already current instead working creates minimum numbers 8bryndv channel however window retype system secret enable server secure rmd160 logged telnet incase should select echoes kindly before iphone ircnow google simple passwd mobile adding random better forced login index using users again https under based setup might their vaild above wrong steps wanna needs rcctl paper words print write press store below shown image first apple after tried when this that doas nano done asks will exit save next went apps ub0r sha1 note only redo want have test fell well find ends eros days cook play both hoof rill bulk heal cowl hash each part edit used once more time must wiki guys make can try six vps md5 get are org two ibb gas see php tap 100 ios tab new any way won etc 97 by pc if
+Vmm.DragonflyBSD:1629747113:  : meltdown_mitigation 0xffffffff817a4f90 0xffffffff806b91ef 0xffffffff80c2cfb7 0xffffffff8061d9c0 chips_per_package threads_per_core siocninit_fini bboooottiinngg cores_per_chip x86_64_generic shiningsilence initialization cninit_finish i8254_timer2 dragonflybsd ae_not_found genuineintel virtio_pci3 virtio_pci1 performance virtio_pci2 motherboard calibration cryptosoft0 virtio_pci0 macaddress initialize networking california bootloader srat_probe madt_probe structured university 1048164352 negotiated fadt_probe 0x00000000 mi_startup bootprompt 2299750485 0x96982203 interrupts maxsegsize 0x24100800 sdt_probe disabling swi_taskq supported operating automatic copyright returning invariant 980262912 features2 assertion 0x793a97f beginning pclmulqdq features3 cputimer stopping stepping md_clear debugger topology 0xbd14e9 padlock0 20210331 software extended tbxfroot reserved firmware 20971520 disabled watchdog impacted enabled page1gb syscall warning adapter stopped release display vtscsi0 sectors 10240mb spectre entropy rdrand0 kbdmux0 protect machdep 0x206d7 booting against project regents freebsd latency vtblk0 locate pcibus justin aesni0 0x4fff either failed rights serial loaded malloc kernel 0x1000 mplock system mostly device things apicid ioapic memory 0x1fff simple vendor 0x0b5d 0x0777 0x3fff 0x3000 vtnet0 needed 0x2fff 0x2000 0x4000 130378 120208 origin popcnt 186676 bring pse36 cdrom panic twice class valid cpuid ssse3 comms pcib0 frame makes block trace worry clock lapic 30ghz xsave table reset error ticks evdev these using press avail 1986 1983 2630 real 1988 cpus acpi each sse4 1980 1989 cx16 1993 1992 home 1991 2003 1979 byte will host from movb then xeon type sure 0x7c show sse2 null fxsr cmov more logs rsdp 1994 this 0x77 none uses 0x9f lahf cpu0 next fast wdog like disk kbd0 0xa0 freq 3141 find vga edt vmm usr see old vme www irq fpu min 512 999 934 can don rip was mhz but 6_0 obj you amd xts cbc md0 try avx 369 msr fri b20 mmx pge sep vmx mds cx8 may pae esc pat cv db e5 v6 k8 nx 8f 0h 0s
+Vmm.NetBSD:1629745281:  : pci_msix_count communications rbus_min_start miscellaneous configuration interrupting cmd_per_lun max_target foundation management initialize acpi_probe university 0x40000000 california configured 0x14507d0 somewhere supported copyright selection mainbus0 function 20971520 size_max features 18072260 ethernet reserved firmware selftest vioscsi0 20190405 scsibus0 tbxfroot warning virtio0 regents viornd0 0000030 mkrepro generic invalid running handler already entries 0xf3f40 0xfefc2 missing 1551000 entropy compile 0x206d7 product virtio1 letting package address virtio3 instead virtio2 loading sectors modules seg_max verbose console consdev max_lun network vendor smbios device vioif0 bios32 failed tables remove evmisc colors before netbsd cd9660 522816 849344 892624 prompt systbl pushed itself rights serial exists system loader memory 940937 could 10240 61432 bytes error power intel these stand 17766 30ghz total 1024k debug block boots qsize press needs turns pchb0 avail 0x00 clip pci0 logs 1993 i386 arch 1991 stop 1982 2021 1986 will 1989 2002 2005 2004 kmod 2003 2001 2007 2000 1999 1998 1997 1996 from 2006 2008 5201 2020 head 2018 2017 2009 2016 2015 2014 2013 2012 2011 2010 cpu0 rsdp 0b5d more mode drop prep core isa0 page type xeon path 2630 0666 com0 done 0777 cyl 512 not 312 sci irq ld0 xts vmm rev eof efi 64k set aes 256 was len 261 cgd all inc wed may use far utc org 128 usr src off mac smt you 963 b2 aa 4b e5 8f
+DNS.Ipv6rDNS:1629719716: Nsd.Configure Openbsd.Nsd Openbsd.IPv6 Dns.FQDN Host.Usage Dig.Usage Openbsd.Netcat : t_dnsreversenameresolutionusingtheinaddrarpadomain troubleshooting authoritative configuration installation interpreted configuring terminating 2021082301 configured references yyyymmddnn 2020070701 scientists tcpipguide 2020112906 nameserver delegated checkconf confirmed necessary secondary protocols checkzone resources describes qualified original hostname probably intended reported zonefile appended ipv6rdns properly overview required internet records reading include openbsd example between periods suppose further command helpful forward request without missing coconut project pattern 1209600 working warning connect divided primary replace follows results restart address provide section sprintf consult already assumes service minimum refresh subnet inside create master digits substr actual scalar length should number values enable ircnow cherry issues lookup errors daemon reload before expire 604800 serial rocket netcat orange banana jujube marked zytrax notify would split user2 guava block peach usage nokey mango ifend false about rcctl admin means lemon grape slave user1 write along bring files zones 86400 fully first retry 10800 final tools denic inet6 https debug allow these there ahead title being books zeros pages match email comes vhost avoid 1800 3600 step fccf fill next spam 2602 free 0001 vio0 grep your test then know doas this pear echo part 2001 nast they have must fqdn like docs imap that save will smtp note news need mode base from what good join 032s real both 0db8 into many plum find type been once line www org xfr nsd dot ptr ttl hex can ip6 ask are htm put var soa ns1 04s sed awk had ns2 my of mx by 16 5
+Pipes.Redirection:1629690655:  : redirection pipes
+Netcat.Smtp:1629658738:  : netcat smtp
+Openbsd.Npppd:1629553422:  : authentication authenticated interface keepalive authproto abcd1234 protocol pppoedev interval hostname 12345678 authname timeout default retries openbsd servers authkey tunnel pppoe0 method sysctl listen enable route users npppd local pppx0 cpsw0 eui64 inet6 pipex pktin retry found debug conf sbin dest none dump ipcp type file bind fe80 from ifp isp add pap etc not 255 lcp yes max dns idk 19 up 30 60 40 by
+Openssl.Imap:1629518750:  : configurations orderedsubject authentication permanentflags hasnochildren authenticate capabilities uidvalidity multiappend 1106186941 capability references successful connection yourserver gracefully responses completed referrals permitted namespace predicted character dependent condstore describes connected imap4rev1 searchres i18nlevel s_client outlined extended catenate unselect starttls username answered password features hostname savedate literal deleted flagged dovecot depends example details uidnext session display uidplus partial snippet openssl section preview mailbox special foreign working correct process logging context qresync esearch logged telnet notify logout escape enable recent closed exists method differ thread syntax status either binary follow trying within inbox draft login check shall fuzzy esort title other below issue write enter logon ready plain secs uids type exit seen list they sasl test fast once have idle from wait note size move ting into refs this 000 and 143 001 any may url bye how ok of ir 5 2
+Ircnow.Todo:1629189699: Ircnow.TeamSecurity Ircnow.BusinessBusiness Ircnow.VpsVps Ircnow.TeamShell : good_free_ssh_shell_accounts businessbusiness free_irc_bouncer question2answer inconsistencies underprivileged fedoramagazine infrastructure resourcelimits specification delphinusdnsd stackexchange smartmontools documentation livestreaming functionality competitions registration teamsecurity rpl_isupport unregistered cloudmounter blinkenshell commandline permissions masquerades flaviocopes utilization unixporting speech2text registering enterprises controller management competitor freeshells compliance oscommerce learnshell filesystem callwithus discussion lowendtalk suggestion servicectl transcribe protection handicraft restricted anycasting redundancy connection ostechnix tutorials questions ircnowctl available softphone blacklist providers receiving hardening openrsync pasteserv undesired messenger implement specialty configure community interface marketing voicemail automated unlimited reference currently telephone usernames platforms honeyserv searching processes teamspeak advertise parameter teamshell services minetest irccloud creation cronjobs priority software provides asterisk breaking accuracy fileserv netsplit commands memeserv trapserv telegram research everyone products eggdrops comments undeadly aruljohn purchase approval messages natively nickserv chanserv outbound flexible clicking disaster approved honeypot portlane recovery dokuwiki outgoing sysutils globally squirrel properly hosting discord include content records clients malware bitlbee improve twitter install disable organic privmsg suspend servers network keyserv virtual interop daemons egghelp monitor backups premium stopped emailed waiting contact failure android scripts scanbot restore testing bridges numbers tempted privacy foreign replace charset problem achurch pubkeys updated request migrate patches license ircdocs aliases openbsd because details convert cumulus website filters abjects sshfuse packets errors hidden reddit vpsvps identd within cvsweb charge across stagit result ngircd wraith module psybnc finish pylink import access prizes custom upload listed matrix switch juping quotas syslog should signal single ircnet public define resort ilines atheme ffmpeg verify mibbit medium dnssec issues defcon remote censor policy emails create deploy gamers modern enable output locked failed better mumble normal agreed people domain easily typing trough cannot mobile asgaur invoke widely phones gaming chroot played those https write fdisk block elist being times goods setup flood slack again child could check might offer repos wikis money house abuse twice sdfeu build horse audio video plans added apple users index title final clean terms terns fogle lists hosts snmpd opers train basic calls world skype fight after large stays 29511 whole xbjfg using never leave space major 20511 games there their sbin like have into bake join that todo plus make then high want spam secs feel nsfw dids this bnc3 turn stun year send easy ipv4 hopm pstn page ipv6 head sets sent upon ldap info acme bots carp used anti voip shop food more aaaa porn h5ai sftp safe pill find post 8bfx each pipe they sure last cgit doas grex only both swap html vote lysy iops ban fix old atw get way sip new www ads ssl own ips src usr gry see cpu ssd hdd dcc mx2 ios url few ksh nyx php var znc mac ask dev run don pf 50 13 mh 39 10 wp by
+Vmm.GuixIso:1629133951:  : 27d586a4f8900854329ff09f1260e46482e63562 savoirfairelinux fingerprint keyserver signature cournoyer installed download already pkg_add primary expired guixiso x86_64 ubuntu verify system create maxim gnupg using gmail title https 2021 made note this good from recv doas aka org com vmm gpg and ftp has for tue may rsa cdt 11 18 30 41
+Openbsd.Gophernicus:1628993186:  : configureation autogenerated configuration public_gopher installation gopherspaces internet’s gophernicus development description application compatible accessible throttling especially completely connecting conversion university gopherroot gophermaps beginning following gophertag filesizes directory detection localhost minnesota arguments execution numerical available developed attempted conceived debugging selectors protocols extension separated filterdir parameter personal hostname combined transfer filetype directly disabled pointing featured detected expected publicly provides location checking network extract default example logging strings charset options content mapfile tagfile however testing machine openbsd display working locally license ability address changed command userdir haproxy various scripts logfile maximum virtual hosting seconds timeout libexec session pkg_add 4194304 rewrite specify servers filters result output kbytes shared memory status unveil cgidir header footer apache number format syslog parent typing mascot school daemon secure stream nowait nobody modern actual enable client remote create admin which using email later paths under inetd rcctl start users until width cheap colon fixed style query named value wrong after first menus might there dates links title layer build help some caps view page this that 1991 doas data 4096 1800 many only them load text most hits full need list line http lynx home just keep port your will fqdn when from also post have know fire then not can but one txt vps tcp was web run top etc ssl tls usr utf new old of nm 67 up nq np 70 nr nh 2
+PmWiki.DeletingPages:1628921167: PmWiki.WikiAdministrator Site.AllRecentChanges PmWiki.EditVariables Cookbook.DeleteAction PmWiki.BackupAndRestore Cookbook.CleanUp PmWiki.WikiGroup PmWiki.RecentChanges Cookbook.RecentChangesDeletion PmWiki.Categories Category.Maintenance : recentchangesdeletion wikiadministrator backupandrestore allrecentchanges deletekeypattern editvariables alternatively configuration deletingpages deleteaction periodically maintenance explaining references categories wikigroup different 123456789 timestamp sitegroup extension directory something malicious highlight explained category cookbook retained removing creating separate textarea recorded restored commands possible activity default changed erasing cleanup deleted editing related setting obscure created renamed example uploads suspect summary feature comment replace usually server select unused recipe exists saving danger unique pmwiki access remove number single safety update counts former modify causes which where there fully files added occur since found could these field shell below those purge still lines allow above idea word just into also have from type them good note find that with more look sure aren been were they then same can log may via ftp how has but isn faq see one why you way php ssh of by
+Ircnow.RecentChanges:1628921167:  : sshfingerprints recentchanges vicepresident opsofliberty constitution pioneertldr opofliberty pentesters ambassador federation censorship sysadmins partners2 ircitizen chatforce codeforce minutemin howtoask finances training february projects hardware november networks december roadmap january netizen sheriff servers contact removed helpers testing coders ircnow course august allies ilines stable march april goals jrmu 2021 2020 ally self july left team june todo may mkf mif gry by 04 36 17 55 09 05 11 01 06 03 10 35 18 12 48 57 pm 19 16 15 my 30 58 52 28 29 33 49 08 00 42 07 47 50 13 53 37 24 31 32 26 54 14
+Debate.Zncdefense:1628921167:  : addtrustedserverfingerprint clearallchannelbuffers multiple_clients module_name_here setuserbindhost troubleshooting distinguishing abovementioned simultaneously specifications idiosyncrasies notifications nonresponsive documentation fingerprinted configuration instructions reconnecting verification controlpanel registration significant proprietary repolishing understands recompiling negotiation development improvement connections explanatory abandonware independent implemented capabilites throttling customized negatively introduces sensitivty acceptable straighten respective duplicates elaborated benchmarks experience developers themselves requesting zncdefense explaining philosophy improperly disconnect impossible restarting unfeasable capability preferring integrated lackluster supporting complained apparently subjective configured documented nontheless objectives critically reference otherwise necessary therefore following different statement secret123 essential connected regarding confusing passwords sensitive available inelegant requiring catlinman resources debugging protocols sysadmins sometimes blockuser partyline willingly difficult throttles providers certainty instantly requested throttled attempted supported knowledge interface chrooting something qualified multiplex practical potential reproduce currently intuitive obtained manually separate programs interest polished webpanel networks services everyone declared channels nickserv identify messages possibly secondly requires designed bouncers pastebin personal operates commonly problems although horrible webadmin clicking examples verified connects security parallel freenode serially register userhost observed solution studying supposed uniquely adapting download citation strongly followed stupidly optional confuses extended updating improved language bypassed labeling assuming fallback memorize username software actually versions terrible perceive absolute yourself category changing stubborn invented usually testing because falsely cleaned forking perhaps modules however greater removed default instead appears without aspects openbsd chooses chghost hosting crashes bundles majorly pirated command insists against matters useless regular spelled nothing working worries options written account realize aliases dropped managed logging strange exploit failing hivecom suspect remains seconds android feature counted chroots depends talking despite startup complex neither reading through several hideous whether changes minutes further address becomes blocked someone upgrade handled bahamut nowhere causing entire access making single debate stores hosted psybnc should closed likely anyone sticks around unable delete unless simply ngircd elapse simple prefix indeed dalnet manner system notify pledge forced always unveil rather ircnow infact needed mobile allows nobody issues almost better shared degree easier fixing friend glined easily cannot relies refuse plenty status suffer typing worded foolow occurs casual devies people stated harder hacker author jargon normal useful themes causes behalf squery course switch repeat loaded enough really exists points wishes github before reason needs users tries which while blame after worse first fixed crowd value badly never error ircv3 chose older would being takes certs fixes sided doesn slows lacks quite ircds fully names weeks adopt still flaws until could phone https wikis setup shows opens alone order guide given gives about buggy often think these today goals makes least going proud shown efnet wants wrong field mercy since their years hours spent weird quote pages shell email fetch offer delay cases more they logs true push than good form that into this edit when ipv6 ipv4 both seen also chat once what lead even many each path thus disk team mold unix best onto mirc have over told used send 0day ugly care join been from keep goes turn easy same upon code then copy bias idea must else well 1000 john such deal just play 5000 much text site wall help adds days apps rely done zero life bugs task was msg yet has may but via too its fit lag 200 him lot far get did ssh due ssl 2nd heh mac few vs 30 70 v7 41 33 v1 2x 15 90 my 60 pc cs 8
+Shell.RecentChanges:1628921167:  : sshfingerprints recentchanges shellsshkeys applications permissions shellputty tutorial december february unix101 august march added jrmu 2020 fizi 2021 lynx bash mac gry may 11 06 12 pm 16 by am 24 42 08 55 45 07 19 09 04 05 14 13 00 25 36
+Openbsd.Pf:1628921167:  : fingerprinting loginterface certificate connections workstation diagnosing determines indicating acquiring localhost certainly necessary different addresses diagnosis whitelist available generally external existing matching properly outgoing incoming needfrag blocking firewall accurate although arriving network minimum openbsd because running packets replace emptied traffic ruleset disable default seconds servers simple attack accept policy useful tables should ext_if system reject edited action needed filter enable access signed https proto state empty again icmp6 pfctl avoid since inet6 allow where while under 1000s those other times port from also very drop conf code that this will pass type ipv6 with many keep skip doas your show only once came last load user want then for 128 tcp can 192 168 em0 web ssh don lo0 etc ssl and mtu few see had now are not of sr by my 4 3
+Openbsd.Shell:1628921167: Guava.Packages : internationalized synchronization minpasswordlen authentication implementation configuration multithreaded specification decompression manipulating unencumbered manipulation memorylocked customizable libunistring continuation multilingual asynchronous repositories documenting interpreted programming replacement permissions lightweight enumerating downloading sshd_config requirehome imagemagick localcipher accelerated intelligent pkglocatedb management minimalist processing components additional exceptions vmemoryuse accounting compressor collection conversion typesetter eventually subversion expression extensible postscript 20150318p1 libunbound forwarding libchewing validating installing libarchive manipulate javascript newsreader compatible directory structure formatted openfiles documents installed bandwidth reference character libraries interface companion detection zstandard algorithm processor processes providing mirroring patchsets generates php73_fpm microsoft utilities xdefaults geomyidae multitail transform scripting stacksize compliant djvulibre profanity subdomain mercurial symlinked converter resources fetchmail coreutils retrieval terminals computing extension _dovecot packages abstract revision extended settings language features security notation routines embedded inspired newsboat database services username location sendmail powerful stopping displays compiler oriented 20171017 resolver problems desktops licensed platform libtasn1 creating portable symlinks flexible programs td309339 lossless reviewed blowfish designed fallback berkeley complain protocol function phonetic discrete blake2bp blake2sp xlsx2csv retrieve libiconv converts antiword idna2008 japanese 20171227 docx2txt runtime purpose gettext mariadb utility clients general command storage control history working graphic library fourier console mcabber nghttp2 entries reading parsing causing strings checker unicode hashing request foreign libidn2 9100hp2 libwebp jsoncpp privacy browser 9rel1p0 servers caching hicolor modular sorting jbigkit libjpeg garbage support weechat extract sqlite3 manager threads pkg_add changes chinese toolkit correct openbsd hosting python3 prevent edquota profile adduser maxproc copying deliver domains regular openjp2 modules minimum decode encode method system argon2 create update tclsh8 daemon simple editor aspell prompt passwd folder window htdocs rights no_x11 banner msword pixbuf lookup mailrc libffi apache gopher ledger jasper filter ircnow images vusers 21p7v0 making hiding binary export bourne whoami ispell member neovim groups giflib owners nabble kernel double ngircd inside jabber object libxml plugin chroot quirks quotas second parser common syntax alpine libraw figlet useful google screen listen shared mkdir chown guard gmake gnupg posix httpd guava fftw3 ascii allow glib2 wheel tools shell strip seems login names input unzip clone pager based https fonts 09p20 rules rhash while rsync libuv slang print libb2 pkzip trees theme irssi umask guest icu4c chmod cache troff groff codec cshrc cvsrc there stick entry lcms2 fixed build hosts cvsps smtpd cyrus layer email cmake anthy again block boehm first boost bzip2 rcctl emacs elvis doas like 20v1 mawk hide from over sure sbin 7691 ruby fast sums wtmp this sasl into mutt slrn utmp mime 10p5 only logs love also free rust sacc 1024 lynx html info each 03p0 with need many pico tiff perl 41p2 pcre pkcs wget sock 77p2 xmpp 2061 0p12 test 2000 nano step feed atom zstd 15p0 next real node wide totp hotp 16p1 oath 00p1 lzma tcsh 05p2 turn 24p0 31p1 curl simd 4000 they 27p6 peer leak that 12p0 2222 suid 27p1 23p3 find game know will zone line 16p0 1p10 have acme 21p3 26p3 self 128m more pop2 pop3 kpop imap 37p0 bash want gawk usr w3m www var cgi trn 3p8 sic 0p2 uim dns 2p1 8p0 you 2p2 don 640 750 32m 512 64m way 022 nsd 3p1 via org ftp 700 ps1 600 git tty 2v3 1p4 rfc 0p4 pgp p11 dot 3p2 nvi apr 3v0 1p5 7p3 1v0 9p0 api 4p2 0p3 0p7 lz4 got lua gtk was 0p0 py3 its art gdk pip 182 png fdm ln n7 rx 34 25 98 66 62 14 29 19 uw 38 gc xz zh v8 jq
+Vps.Intro:1628921167:  : yvkispem7vkus5qfosqaeu connectivity installation convenience fingerprint interfaces afterwards statically background networking brzkpyqmho systemctl reinstall configure operating different outlined username shutdown assigned hostname loopback password unpause coconut gateway execute address console default openbsd follows running replace machine service restart account netmask primary crontab alpine forget inside mygate reboot ensure source ircnow create serial please access enp0s2 debian losing sha256 escape right below extra while iface vmctl there qcow2 intro given ecdsa a0lir guest first usual linux based found tmux ping once done inet this vio0 sbin true stop runs your away auto then will note with from type case that make well 255 vps 129 usr 20g 163 new log put ssh any dig can set but how etc xxx and tyc key 38 81 i5 rm up ip by
+Openbsd.Pf-bnc:1628921167: Openbsd.Ilines Openbsd.Pf Openbsd.Ddos Openbsd.Tcpdump : configuration loginterface optimization flushstrict submission syncookies afterwards filtering flushudp badhosts adaptive needfrag overload profile servers openbsd tcpdump packets warrior ruleset persist spoofed random intip4 global domain ilines isakmp source failed tagged create folder sample stable states wraith gopher proto quick 16697 16667 block ipsec https allow imaps smtps 31337 extif 21314 29173 roadw match scrub title nodes mkdir start added 10000 track pfctl shell guide 069d 0010 port pass 2605 6400 also ddos faa1 0030 0bb8 0020 9999 7000 from 6660 6669 doas 6997 00fe 05cc then 071b f8de enc0 inet list will icmp 1290 fc15 05bf 00b4 iked 0434 conn keep rate ipv6 urpf 1440 type code skip here op3s pop3 this auth vio0 2001 209 251 130 198 183 ip6 out 141 184 228 etc non ssh 240 you ntp end max src pkt any db8 can new 168 192 see for use not 137 229 119 lo0 bnc mtu nat vpn esp mss irc 127 rdr 53 be 80 89 39 81 38 50
+Grape.Guide:1628921167:  : repos_manager configuration user_manager instructions successfully create_repo development delete_repo description initialized repository colleagues additional repo_name attentive creating manually remember deleting document contains creation underway working libexec creates deleted created finish please ircnow public remote gotweb folder grape local found clone https loyal empty users guide 2020 sate pass doas will this tool only need tree with your that and its git new the tmp usr bin cgi org ssh 09 10 03 06 51 of 05 49
+Third.Directory:1628921167: Third.Dillo Third.Basilisk Third.Surf Third.Gnomeweb Third.Palemoon Third.Kmeleon Third.Konqueror Third.Midori Third.Netsurf Third.Waterfox Third.Falkon Third.Qutebrowser Bouncer.Adium Bouncer.Atomic Bouncer.Colloquy Bouncer.Hexchat Bouncer.Icechat Bouncer.Irssi Bouncer.Kvirc Bouncer.Kiwiirc Bouncer.Limechat Bouncer.Pidgin Bouncer.Quassel Bouncer.Revolutionirc Bouncer.Simpleirc Bouncer.Smuxi Bouncer.Thunderbird Bouncer.Weechat Bouncer.Yaaic Bouncer.Xchat Bouncer.XChatAzure : cryptocurrency revolutionirc postmarketos squirrelmail thunderbird openindiana qutebrowser simpletable centralized proprietary libreoffice xchatazure censorship onlyoffice multimedia connectbot openoffice replicant processor lineageos slackware filezilla konqueror corporate emulation spicebird macfusion cyberduck messaging directory simpleirc computers companies operating limechat gnomeweb software colloquy palemoon blockade password textedit sortable waterfox basilisk etherpad calligra mulberry dropbear sylpheed gnumail weechat icechat kiwiirc windows net2ftp trojita bouncer android license fireftp clients quassel hexchat instant storage manager dragora openbsd systems reactos control freedom protect against abiword texmacs desktop editors netsurf sharing calling kmeleon qualify capable heavily assault apache atomic pidgin falkon midori source gopher writer rclone winscp trelby border devuan mageia elinks alpine gentoo netbsd around switch waging third phone video kword irssi words jwpce claws ncftp geary kmail tnftp balsa rsync class latex width putty email fully groff kvirc linux adium their users break smuxi yaaic world dillo mailx gplv3 gplv2 list need this must over that name mutt lynx gftp sftp fugu lftp curl cone gnus wine ✓ 100 nmh far own w3m ios lyx not ssh 9
+Openbsd.Install67:1628921167: Openbsd.Buyvm Vps.Intro Openbsd.Staticnet Openbsd.Netmask Openbsd.Unbound Openbsd.Fdisk Openbsd.Disklabel : automatically verification installation dynamically reconfigure information nameservers eventually substitute formatting guaranteed installing networking particular unverified hopefully installed described allocates megabytes addresses install67 staticnet disklabel interface selecting available sometimes purchased password hostname manually headless pathname security enabling autoconf username replaced properly packages download timezone matching physical location internet includes accident software keyboard continue disabled probably possible default special coconut warning openbsd example gateway careful forever drivers routers unbound opennic causing without benefit connect netmask correct windows instead subnets options nothing hundred mistake process consult present seconds reading because concept guides please change attach unable before domain number length prefix inside manage either verify ircnow google should reboot during bootup cancel simple virtio layout needed always though system press which wrong https enter buyvm panel erase intro fdisk would disks flash waste right after given amd64 later twice trick below often start about power there login allow needs title other first check users short fruit leave bring chose worry quick sshd vio0 hole type have then want done your sets base lack root ipv4 dhcp that risk each very will data like else from back over only long html must faq4 safe huge make sure hard this note used ctrl ftp4 skip they wait just 0010 when 3402 2001 6400 2605 last ipv6 same any org its png 111 run few dns usa 255 iso cd0 550 off had and www 192 vps 168 but web may vmm 129 see em0 127 ips 14 48 6c 6d 66 37 6b
+Openbsd.Install68:1628921167: Openbsd.Buyvm Vps.Intro Openbsd.Bsdrd Openbsd.Staticnet Openbsd.Netmask Openbsd.Unbound Openbsd.Fdisk Openbsd.Disklabel : automatically installation verification reconfigure information nameservers dynamically networking eventually guaranteed substitute unverified particular formatting installing install68 described interface purchased addresses sometimes selecting allocates staticnet available disklabel megabytes hopefully installed security pathname headless packages hostname disabled possible probably manually keyboard continue accident password location physical timezone username enabling properly includes software download internet replaced autoconf matching concept connect default gateway openbsd instead consult subnets benefit drivers hundred present coconut netmask without windows nothing reading special example correct forever because causing careful warning routers process opennic options unbound mistake seconds either ircnow unable should verify change cancel during always attach inside virtio simple length number bootup layout guides before though manage prefix google reboot domain please system needed press needs enter buyvm disks title start given would twice https below trick right allow wrong intro fdisk erase login about first after waste worry fruit chose later amd64 often other quick panel short check power flash bring users leave bsdrd which there that sets this safe risk must will make from type sshd sure root your else hard done want over ftp4 like hole have note used each ipv4 just faq4 then long only base huge html skip very they data 2605 6400 0010 ipv6 2001 last 3402 when wait lack vio0 same dhcp ctrl back web png iso few vmm usa org but ips and www may 255 cd0 em0 dns 111 run 550 127 any vps 168 192 off had 129 see its 15 14 48 37 66
+Openbsd.Upgrade67:1628921167: Openbsd.Bsdrd Openbsd.Sysupgrade68 Openbsd.Upgrade68 Openbsd.Dump Openbsd.Restore Openbsd.Vmmuser Openbsd.Cu Openbsd.Buyvm Openbsd.Pkgadd Openbsd.Ssh Openbsd.Top Openbsd.Syspatch Openbsd.Fwupdate : configuration automatically installation sysupgrade68 downloading filesystems proprietary substitute particular networking installing bootloader optionally everything ramdisk_cd interrupt upgrade67 something succeeded correctly operating signature installed upgrading fw_update recommend installer directory probably messages tutorial shutdown verified existing sysmerge downtime location possible firmware required syspatch skipping fwupdate packages continue external openbsd console assumes servers signify closest pkg_add restore missing advised advance vmmuser replace seconds careful details process version default generic patches updated because reading running however should bootup within serial amount proper during normal repair sha256 attach ircnow either number typing happen reboot before verify mirror pkgadd screen follow guides switch choose notify issues booted buyvm enter press https later drive media using login flash boots other there fruit clean check uname point vt220 which force after amd64 order leave error bsdrd above steps cores proxy allow title first users need sure note that sets doas will your make root from this have done then over html show dump back view want none base just list such must find type does else says used hard and org www can fix faq png any see iso top may 179 out etc did ftp pub ssh new vnc usb man get way by of 2b 2a cp 98 3
+Openbsd.PFTesting:1628921167: Openbsd.Netadmin Ircnow.Stable Ircnow.Testing Openbsd.Ilines Openbsd.Buyvm Openbsd.Vmmusers Openbsd.Tcpdump Openbsd.SYNFlood Openbsd.Ntpd Openbsd.Nsd Openbsd.Sshbackdoor Openbsd.Iked Openbsd.Pf Openbsd.Ddos : troubleshooting configuration loginterface optimization intelligent connections immediately whitelisted flushstrict sshbackdoor explanation syncookies submission unfiltered disconnect particular bruteforce substitute optionally afterwards something accepting interfere filtering criminals commented localhost pftesting badhosts synflood problems diagnose overload outgoing external flushudp incoming needfrag vmmusers blocking adaptive loopback netadmin optimize comments services firewall approved properly profile openbsd ruleset persist causing packets address through seconds another entries applies reading tcpdump example warning passing mangled against strange because section attacks enemies routing servers traffic monitor reports warrior provide prevent spoofed matches missing keyword default working applied bouncer without sending present process further exceeds defines intip4 unique ilines single notice isakmp domain sample wraith tables please ircnow tested tagged macros source global defend states subnet secret refuse stable gopher folder sender public limits normal except headed access hidden icmpv6 failed follow random system create issues proto quick based ipsec buyvm roadw extif track nodes allow guide apply known 10000 pfctl added mkdir hours aside proxy scrub every weeks break might wrong sorts 16667 16697 makes entry there 13140 pflog these smtps imaps pop3s start https 31337 29173 occur ident title below basic 6997 than more 7000 skip mail 6660 9999 will stop inet ipv6 6669 iked ipv4 rate auth have from keep same them this code then type ntpd ddos like urpf hard time your 1440 that vio0 view else note left enc0 when doas 2001 sure 6400 2605 0020 05cc 0010 00fe home vpns both also been days each 069d only last f8de done must 0030 1290 0bb8 faa1 fc15 071b 0434 00b4 05bf case etc 500 max src get mtu web faq nsd but mss lo0 dns see www org znc ip6 non esp pkt 127 rdr bnc 192 can db8 168 any are new has 141 119 209 198 251 137 229 130 183 184 228 240 bug vps two yet var 80 53 48 81 39 up 89 by 38
+Openbsd.Newdisk:1628921167: Openbsd.Backup Openbsd.Announce Openbsd.Dump Openbsd.Restore Openbsd.Growpartition Openbsd.Vmmuser Openbsd.Buyvm Openbsd.Ed : buyvm_slab_volume 37deb3c1c30cbfbf a0e97b069eed0743 f433d9e11879420f d40a0cfcd4551ac7 troubleshooting growpartition automatically alternatively inconsistency interactively successfully information root_device everything boundaries substitute filesystem partitions initialize identifier attempting 1073741824 parameters unexpected 1073736341 1073736320 performing 1073736405 formatting particular completely wxallowed disklabel installed following signature currently megabytes operating truncated gigabytes cylinders terabytes utilities purchased formatted kilobytes available teammates directory allocated correctly disknames wikipedia permanent elsewhere including recommend checking starting detected possible geometry accident fsck_ffs manually tutorial creating shutdown commands actually announce defaults pathname downtime mounting mistakes bootable extended numbered 524288mb existing scsibus3 suffixes properly indicate 83886080 probably capacity upgrades scsibus2 programs progress boundary whatever replace openbsd logical sectors unmount changes letters creates without instead offline disable options display already putting nearest console vmmuser mounted writing example numbers highest exactly warning running machine certain another restore entries prepare suppose inspect editors reading storage drivers editing backups destroy forever 40960mb section newdisk careful saving called resize checks second nosuid adding copied bootup unused offset lowest prompt ending unique fstype before notice course around choose export modify reinit 0xaa55 virtio unable toggle update expert header serial reboot string umount delete double server longer happen should values wiping entire groups inside sliced typing failed single inodes loaded setpid return manage blocks master record labels 524285 select sysctl trying disks nodev local fstab https using dmesg 66836 write track first print leave cause these x11r6 error fdisk enter small space vt220 clone again 66837 still faq14 range match going those since point setup users guide looks clear there could typos reset abort clean entry shell given 500gb bsize order which fsize forth steps learn spans 32768 wrong newfs rsd0a 26062 stats super press 52224 extra third units means total title basic blank your swap sd1e sd1f duid home like 863m 820m 913m sd1i will than need free want each 318m have next 238m 378m mode ctrl sd1j dump make into sure then doas they lose exit page 600m sd1g more sd1h 2bsd 44mb 648m quit sd1d this save sd1a also 615m help 232m data sd1k from area none show 352m that same just undo last copy find sd0b only safe sd0k sd0d such view sd0f less text targ 4047 when lack hard case said sd0e fine tune must easy task sd0i flag code sd0g sd0j 40gb list sd0h note html once bios term loss 512g good some done upon made grep says foul been wish mnt var etc usr key src obj can now too had org won tmp fd0 old cd0 was any vnc via ssh way mbr get cpg two 255 lba 254 0x0 chs see but lun 814 644 3mb usb www rw a6 01 my oh uh mg iy 3g hw 59 4g 7g df 98 39 9g 6g
+Openbsd.XTerm:1628921167:  : fxexcxdxbxegedabagacad exgxxxxxcxxxxxcxcxbxbx ksh_history foreground characters attributes executable translated background connection miniontoby following directory originaly ls_colors colorcode copyright different beginning histfile writable commands symbolic multiply language histsize previous standart favorite download lscolors follows default console crontab magenta usually forward colorls program without openbsd execute colored pkg_add special install profile editor export locale exists change lc_all output visual before number custom choose yellow equals others sticky string socket though nearly ircnow setuid setgid bright codes first linux fully check title white where kshrc below light named green xterm there black print brown shows alias looks order block saved chars guide bold case your like want ever esac what rxvt dark even then that 2021 pipe grey blue just find yeah cyan doas line land from grep this link 0006 home 0001 left 0002 next 0020 5000 also gray else used text 0016 work have good best way can ps1 let org 32m 033 sth are __a __b bit env __c see __h odd __d 00m two 34m one not ssh bar get 36 35 31 up 10 93 97 96 95 94 30 92 91 11 90 37 22 39 8
+Tcpip.Overview:1628921167:  : applications architecture transmission represented information subnetworks downloading hexadecimal combination 0xffffff00 physically connection networking identifier acceptable definition interfaces delivering connecting listening basically uploading referring openhttpd addresses depending important protocols different compactly computers something datagrams expensive configure connected calculate sometimes necessary separated described identical starting visiting internet yourself loopback delivers specific requests notation messages indicate 11000000 10101000 00000000 00000001 remotely bitmasks billions software 11111111 valuable hardware actually ethernet responds uniquely identify multiple overview slightly reliable reserved services routing subnets suppose machine example quickly desktop current periods viewing numbers instead packets written another running becomes special clients because usually servers control combine routers meaning gateway quality specify listens default private without locally rewrite smaller install follows include however helpful socket relies device inside public binary losing notice refers common entire dotted reason divide global should itself having easily change stored always letter result center adding choose easier digits using order exact email place first often could tells speed aware which every would where three bound wrong audio video there title phone pages their might never short those right ports group carry helps about added least 65535 calls tcpip files later means world learn these range hurts sound each quad when that used uses they host ipv4 bits will this into once four like only send user bind such find then know make want part need much from smtp same type more have look even chat text wide upon fact fast home test most last rest both word also must loss what 127 168 192 and can web 255 few has any pcs irc 443 etc udp ftp but ssh may 24 by 80 89 1s 0s 23 45 67 48
+Vmm.Debian:1628921167:  : dont_get_this_wrong debian_frontend authorized_keys 159028442625596 “targeted” autoconfigure configuration installation “msdos” information downloaded parameters installing controling controlled autodetect references questions “remove something overshoot important backports priority graceful diskname software archives separate advanced unsigned shutdown nopasswd assigned computer password hostname defaults username reminder packages releases media” console network crashes applies virtual openssl don’t vmlinuz matters booting trusted running netmask without sudoers gateway can’t invalid newline timeout logging sources instead ch05s03 guesses address openbsd choices desktop because initial options version ’bout middle protip reason stable expert static kernel enable select server printf binary 99keep latest reboot switch mkswap should swapon verify easier vmname ircnow anyway domain base64 suffix button pastes system called curses devuan initrd create 115200 making status inside messes screen copied lsblk empty vmctl qcow2 start login mouse shift makes power never times fstab hangs enter setup metal avoid clear think exist reset amd64 egrep owner later furit cdrom uname linux image based above still local “10 11” cache final works stuff takes press https video after speed ttys0 good type tips then ctrl edit html 3” long sort 1024 tail have need from when file here find expr text menu like 2020 your list bare will dpkg lock wake xsel skip tech grub kept marc post hold only 4gib uuid copy save stop char hint rand echo root does none fine link apt etc a10 ssh not see may vmm — gpt vmd yes org dns www mbr 163 bpo got 129 mbt cut bad 4gb var vga low 788 us5 idk 16g vdc awk dig du wc ah 18 81 38 my gz b1 lh
+Openbsd.Pfa:1628921167:  : configuration recommended restricting connections everything connecting sometimes necessary separated basically remember badhosts mistakes whenever examples possible blocking gathered nothing because persist changes allowed trouble default placing located instead certain reading openbsd section someone command protect servers drawing hacking checked prevent advised disable applies specify dropped anyone almost should reload before inside define affect device passes entire marker helper access either really saying common filter loaded packet bottom ilines called folder enable create errors happen tables groups people unless course doers range about cough space quick below would ports words where those place super rules proto https apply makes other wants timmy pfctl might above least occur bulky right after means doesn first upper meany again using that nuts lets then evil your what boot file from like bill whom text list with have this just will also only stop good body know best mind last keep give says skip 9999 6699 deny both type find back loop sure 6697 6669 6667 work tcp udp add boi can put etc pfa but run big new may isn bob lo0 set few ips don irc ssh 443 dns hes get of 22 ok by 53 80 1 _
+Openbsd.Books:1628921167:  : tiltedwindmillpress implementation architectures illustrated programming environment 1642350028 quarterman 1593274769 0132317923 0132317924 1484924471 1484924479 nonfiction 1642350029 kernighan intranets operating tanenbaum obenbsd2e doraswamy networks naganand language absolute nostarch securing computer advanced security standard internet mckusick stevens stephen richard edition michael mastery ritchie nazario openbsd brandon cricket harkins private virtual marshal product design secure system karels bostic dnssec albitz volume domain relayd dennis palmer lucas keith ipsec brian lemon april ralph 21193 droms https books tools httpd 54675 jose with isbn rago 2004 2013 name bind andy paul dhcp unix 4bsd kirk john the 589 tcp 978 for 2nd 130 ssh may new pf3 liu dan 520 www 206 3rd mwl 03 of 10 by pp 66
+PmWiki.SpecialCharacters:1628920394: PmWiki.SpecialCharactersList PmWiki.Characters : list_of_unicode_characters specialcharacterslist illustration application information commercial trademarks interested numerical wikipedia keystroke available important copyright therefore standard instance computer keyboard listings supports document creating utility symbols samples another execute holding spec_13 degrees editing desktop numbers system keying folder pmwiki create across online keypad bottom common umlaut markup while means codes paste https input click these table tools pages some 0176 want that note with text your html word when 0169 8482 nice have 0174 ways find alt w3c use non iso 239 are all map yen 188 198 see org 189 168 www 228 181 tes box 182 165 © 32 by
+PmWiki.PasswordsAdmin:1628920394: PmWiki.Passwords PmWiki.WikiGroup PmWiki.Security PmWiki.WikiAdministrator Category.Spam PmWiki.AvailableActions PmWiki.SecurityVariables PmWiki.AuthUser PmWiki.PasswordsAdmin Cookbook.RequireAuthor Cookbook.ProtectEmail PmWiki.ConditionalMarkup Cookbook.HtpasswdForm Cookbook.UserAuth2 PmWiki.GroupCustomizations Cookbook.LimitWikiGroups Cookbook.NewGroupWarning Cookbook.LimitNewPagesInWikiGroups Site.AuthForm Cookbook.CustomAuthForm Site.AttrForm Cookbook.CustomAttrForm : limitnewpagesinwikigroups settingsitewidepasswords groupcustomizations forbiddenpasswords securityvariables youradminpassword conditionalmarkup protectingactions wikiadministrator bjoidmrn4souusi1 defaultpasswords yourattrpassword availableactions groupattributes newgroupwarning limitwikigroups secret_password pageattributes authentication administrative administrators customauthform customattrform _site_mylevel2 passwordsadmin wikivandalism automatically authorization edit_password configuration requireauthor recentchanges independently tlczutrkhovpm authorisation individually modification additionally htpasswdform passwdsource invalidating protectemail wikisandbox _site_level parentheses controlling potentially permissions attachments unencrypted effectively eliminating combination authcascade inadvertent unavailable compromised development encryptions distributed pageattrfmt information unintended handleauth sufficient internally overridden encrypting themselves optionally authorised everything discovered passwddiff respective separately especially impossible completely wikisource recovering discussion regardless invalidate mechanisms explicitly protection following currently protected tanstaafl userauth2 reference solutions malicious something described describes decrypted cleartext different overheads situation remainder otherwise indicates webserver determine specified formatted uploading permitted providing generates character sometimes siteadmin similarly remembers usernames necessary processes carefully authlevel augments creating authuser required accounts creation cookbook prompted identity question function anything removing entirely asterisk maintain defaults editable audience encrypts pwlocked directly contents returned hmmhcdft allowing mysecret versions controls presents override original category defining revoking in_array reliably somebody prevents supports accepted contains handling normally confused somepage homepage drawback mylevel9 requires unlocked overcome perform feature without summary pmcrypt general gg3j60h allowed persons however example scripts authors several removed already looking quickly someone created another uploads editors specify achieve applies systems because mapping details applied opening concern history creates desired include prepare enabled changed against editing viewing section strings happens machine running sidebar entered overall reading various writing session options pmwiki access sample latest adding within occurs should easier anyone prefix inputs course stores during nopass usable allows except things having please future authpw single basics quotes levels placed cannot oldest target harder actual obtain others easily arrays values screen unless logins unlike simply admins either unable loaded reason update _post which there plain field unset doesn still using their wrong about files wants mzsch local could users below based since those given until known would alpha shows whole lines above dealt being often least small steps error saved comes where means avoid holes empty built hosts areas first apply while seems check older makes might that also only just uses what have this spam from else will such disk when help wish http same more code tell work sets into each wasn note they done must case beta jump both need plan lost than many nubv part says php mcc has via 500 may try faq url non won isn too by
+PmWiki.Troubleshooting:1628920394: PmWiki.HowToGetAssistance PmWiki.MailingLists PmWiki.Questions PITS.PITS PmWiki.CustomMarkup PmWiki.Functions PmWiki.Upgrades Cookbook.Cookbook PmWiki.CustomPagelistSortOrder Cookbook.PccfToPcfOverride PmWiki.DebugVariables PmWiki.SecurityVariables PmWiki.FilePermissions PmWiki.Installation PmWiki.InitialSetupTasks PmWiki.BasicVariables PmWiki.WikiGroup PmWiki.LocalCustomizations PmWiki.UploadsAdmin PmWiki.Tables PmWiki.LayoutVariables : session_write_close_error custompagelistsortorder foundationpupilsin1958 preg_replace_callback localcustomizations move_uploaded_file howtogetassistance session_save_path pccftopcfoverride multiplepwprompts pagelisttemplates securityvariables initialsetuptasks crashwhenediting defaultpasswords htmlspecialchars tablerowindexmax retrieveauthpage groupattributes default_charset create_function error_reporting filepermissions secfilterengine troubleshooting layoutvariables debugvariables blank_sections siteadmingroup sitewideprefix divisionbyzero basicvariables administrators passwdpublish configuration documentation pmwikiuploads parameterized international alternatively automatically inconvenience custommarkup installation mod_security instructions incompatible insufficient uploadsadmin passwdupload defaultgroup architecture e_deprecated successfully replacements grouppattern additionally environments mailinglists public_html definitions reconfigure recommended modsecurity restriction potentially pagetextvar information my_password windows1252 maintainers directories significant programming enablediag configured characters acceptable explicitly intercepts filesystem farmconfig auto_start unexpected developers particular indication forgetting t_variable altogether reasonable restricted impossible completely passwdattr passwdedit repository categories frequently indirectly cataloging underlying triggering diagnostic themselves passwdread attempting dontmodify forbidding permanent sitegroup directory different sometimes functions providers beginning temporary procedure webserver published requested filenames processed elsewhere otherwise comparing prominent appearing incorrect filezilla something validated directive migration upgrading eliminate virtually community disappear wikigroup qualified prompting currently performed necessary including questions configphp connexion inhibited initiated destroyed concerned forbidden depending following displayed typically accepting reproduce warnings cookbook manually mismatch upgrades encoding switched probably homepage starting versions solution recently upgraded language patterns features rejected followed category whatever register keywords properly transfer htaccess creating onscolre reported audience converts pretends browsers required displays problems modifier progress replaced settings provided supplied behavior e_notice provokes suppress included condauth existing possibly defining authuser consider exceeded response clicking instance specific pointing incoming software lockfile searches friendly reactive messages sessions suddenly indicate writable tracking existent handling persists normally internal requests although includes someuser releases somefile official several recipes leaving notepad created denotes pmcrypt resolve edition becomes similar manager another hosting ruleset flagged summary numbers example already updated cookies various endless phpinfo written finally earlier locking causing mistake certain scripts phrases strange allowed entered invalid acquire missing someone changed happens modules present instead disable wikilib percent placing wrapper renamed returns usually writing headers pagevar nothing sidebar easiest closing without shipped visible letting ini_set project nowhere because affects working stopped capital appears variety heavily reports removed assumes trackig contact however quickly actions seeking comment double errors cp1252 editor either before safest should edited locked remedy addons seeing please cannot spaces binary worked likely caused points exists notify verify failed client source string submit always arises advice equals helper single itself faulty longer stream denied things hidden simply delete relies easily newwin latest copies stored common causes others trying rather allows tables define occurs little chance apache horror robust pretty photos sounds effect riding sizes skins sorry since these pages fixes which might their check needs php72 twice being cases calls still would could doesn quota those again often wrong https seems later after worse sites links known least value about posts sess_ fixed gives colon first added below parse older flock right asked owned users fopen image whose scans leave there issue lines sends signs until tools shows visit php74 array green empty pass1 php55 adapt newer pass2 learn among every e_all that sure they also semi keys been have then will plan your look from than this more were even past many down hack make such bugs away last mode aren best asap salt pits hunt type unix most only left goes into find made plus byte tell done talk bits phsc hasn data core jpeg disk fact gets menu copy curl wget loop idea good tags 1929 two isn may run uid 198 www was why faq 406 403 tmp 777 net won ftp non due utf yet nnn 33 71 56
+PmWiki.Security:1628920394: Category.Security PmWiki.PageHistory PmWiki.Passwords PmWiki.PasswordsAdmin PmWiki.AuthUser PmWiki.UrlApprovals PmWiki.AnalyzeResults PmWiki.SiteAnalyzer PmWiki.Blocklist PmWiki.Notify PmWiki.SecurityVariables Cookbook.Security Cookbook.HtpasswdForm Cookbook.SecureAttachments Cookbook.WebServerSecurity Cookbook.FarmSecurity Cookbook.DeObMail Cookbook.SpamFilters Cookbook.AuditImages Cookbook.PrivateGroups Cookbook.OnlyOneLogin Cookbook.RecipeCheck Cookbook.SessionGuard Cookbook.TrackChanges Cookbook.SwitchToSSLMode PmWiki.ContactUs PITS.PITS Category.Spam PmWiki.DeletingPages PmWiki.AvailableActions Cookbook.DeleteAction Cookbook.Captchas Cookbook.Captcha Site.AuthForm Cookbook.LimitWikiGroups Cookbook.LimitNewPagesInWikiGroups Cookbook.AuthDNS Cookbook.PersistentLogin PmWiki.Drafts PmWiki.EditVariables PmWiki.Uploads PmWiki.UploadsAdmin PmWiki.UploadVariables : secure_and_httponly_cookies limitnewpagesinwikigroups enablepostauthorrequired anotherpageactionname enablecookiehttponly automaticblocklists enablecookiesecure enablepublishattr securityvariables secureattachments webserversecurity availableactions defaultpasswords register_globals direct_download limitwikigroups persistentlogin uploadblacklist switchtosslmode uploadvariables passwordsadmin analyzeresults differentiates installations diffchangesum vulnerability automatically authorization secure_cookie wikivandalism deletingpages privategroups editvariables urlapprovals enabledrafts uploadsadmin htpasswdform respectively siteanalyzer diffstartfmt instructions trackchanges onlyonelogin deleteaction farmsecurity passwordless sessionguard distributed recipecheck information distinguish pagehistory remote_addr protections auditimages assumptions spamfilters filesystem connection handleauth publishing vulnerable preg_match technician diffauthor management protecting completely addresses whitelist displayed resources directory following determine september preferred upgrading pipermail thousands extremely advantage neighbour mentioned wikipedia developer excellent executing rationals contactus sitegroup possible versions cookbook replaced advisory deletion pmichaud contract provider creation publicly authform captchas addition approach defacers listinfo nutshell template unlikely spambots uploaded deobmail restrict category htaccess filename difftime anywhere blocking authuser evaluate securing username relabels postings moderate protects turning comment deleted authdns invoked ideally devices content someone pmcrypt network _server setting appears example hosting happens through traffic netbook problem editing blocked tooltip mozilla viewing diffgmt diffbox disable summary denying trusted exploit already recipes storyid release forcing against discuss running mailman htgroup details aspects instead adding people cannot pmwiki config notify random 031793 spaces easily unless foobar markup become others secret authpw making phrase single prefix button newwin should cursor admins issues please apache recent report create behind verify resort entire botnet taking router closed detect logged clear these phone known local theft along allow prior level means cases lines proxy which users _post later https being fills mouse there edits above great newer fixed class about wrote empty based inane point after using found title sites world diary that text html hide your nbsp have with will href them more ways this from wife stop wifi 2006 when note also same make sans risk what span been seen test pits used such want 1672 save take turf adds pull feel over docs free may how php org div www try are off bug don old cgi etc faq isn put 127 xxx by my 21 68 90 5 4
+PmWiki.ReleaseNotes:1628920394: PmWiki.Upgrades PmWiki.ChangeLog PmWiki.Download PmWiki.RoadMap Skins.SkinChange PmWiki.LayoutVariables Cookbook.ToggleNext PmWiki.SecurityVariables PmWiki.Forms PmWiki.TableOfContents Cookbook.SectionEdit Cookbook.RecipeCheck PmWiki.OtherVariables PmWiki.BlockMarkup Cookbook.DeObMail Cookbook.FixURL PmWiki.EditVariables Cookbook.NotSavedWarning Cookbook.EditHelp Cookbook.AutoTOC Cookbook.DeltaBytesRecentChanges Cookbook.RowspanInSimpleTables Cookbook.LocalCSS PmWiki.LinkVariables Cookbook.PreviewChanges PmWiki.PagelistVariables PmWiki.MarkupExpressions PmWiki.DebugVariables PmWiki.Notify PmWiki.BasicVariables PmWiki.WikiTrails SiteAdmin.AuthList PmWiki.PathVariables Site.UploadQuickReference Cookbook.PmForm PmWiki.Troubleshooting PmWiki.CustomMarkup PmWiki.PageDirectives PmWiki.UploadVariables PmWiki.I18nVariables PmWiki.PageHistory PmWiki.Uploads PmWiki.Passwords PmWiki.SiteAnalyzer Site.Site SiteAdmin.SiteAdmin PmWiki.Blocklist PITS.00961 Site.PageActions Site.EditForm Site.PageNotFound PmWiki.PageLists PmWiki.Drafts Cookbook.Cookbook Cookbook.DebuggingForCookbookAuthors PmWiki.SkinTemplates PmWiki.ReleaseNotesArchive : debuggingforcookbookauthors enableundefinedtemplatevars enableuploadauthorrequired enablenotifysubjectencode enablelinkplustitlespaced defaultemptypagetextvars skintemplateincludelevel defaultunsetpagetextvars enablepostauthorrequired enablesimpletablerowspan enabletableautovaligntop enablerelativepagelinks enablepagetitlepriority deltabytesrecentchanges pagelistsortcmpfunction enablerelativepagevars enablexlpagescriptload makeuploadnamepatterns enablelinkpagerelative enabledraftatomicdiff enablenotsavedwarning rowspaninsimpletables enableuploadgroupauth enablecookiehttponly enablepreviewchanges enablerangematchutf8 uploadquickreference pccfoverridefunction fpltemplatefunctions lastmodifiedsummary pagename_unfiltered enableinputdataattr draftactionspattern releasenotesarchive denyhtaccesscontent enableguieditfixurl enableredirectquiet enablecookiesecure enablerevuseragent enableeditautotext enablercdiffbytes tablecellalignfmt pagetextvariables obfuscatelinkimap markupmarkuplevel markupexpressions enablepublishattr pagelistvariables setcookiefunction securityvariables enablepagevarauth blocklistdownload authldapreferrals pagelistvarfoldfn htmlspecialchars enablemarkupdiag magic_quotes_gpc enablediffinline enableoldcharset pagelistcachedir recentuploadslog defaultpasswords allrecentchanges requestvariables retrievepagename sysmergepassthru groupattributes uploadvariables debug_backtrace includetemplate pagelistfilters enablewikiwords unconditionally layoutvariables enablerosescape resolvepagename uploadblacklist troubleshooting authentications tableofcontents vulnerabilities enablehighlight authuserpagefmt incompatibility implementation siteadmingroup othervariables administrators groupheaderfmt grouppagecount groupfooterfmt interpretation enableskindiag wikipagecssfmt currenttimeiso enablereadonly spacewikiwords pagedirectives enablepagelist enablesortable inconsistently configurations matchpagenames pseudovariable customizations basicvariables enablepathinfo formnovalidate debugvariables documentation installations pagevariables inconsistency uploadpermadd linkwikiwords vulnerability allowpassword international uploadpermset automatically independently notifications accessibility normalization ramifications wikiwordcount corresponding replaceonsave unfortunately optimizations diffuseragent authorization editvariables functionality uploadsetvars i18nvariables abortfunction pathvariables handleactions linkvariables alternatively skintemplates substitutions appropriately password_hash passwdvarauth conditionals longstanding diffstartfmt applications highlighting touchscreens constructors experimental difficulties distribution calculations preg_replace siteanalyzer instructions incompatible manipulation robotpattern simultaneous pagenotfound accidentally _site_upload include_once capabilities attachements autocomplete configurable enabledrafts preformatted diffkeepdays approvedurls mailfunction handleupload intermediate custommarkup nohtmlheader relativeurls localization nohtmlfooter attachments changements pageactions recommended replacement stylesheets information temporarily translation defaultname diffkeepnum htmltagattr pagepathfmt definitions identifiers roepatterns rospatterns redirection unavailable integration description permissions differences placeholder recursively investigate transparent smartphones substituted immediately insensitive improvement potentially unprotected obfuscation pmsetcookie unnecessary apostrophes replicating understands translators distinguish comparisons suggestions opportunity sectionedit development fmtpagename parenthesis wikisandbox blockmarkup _site_admin recipecheck appreciated nonexistent enablewspre whitespaces parentheses consecutive pagehistory javascripts encouraged eventually _site_read standalone vulnerable translated discussion previously indicating specifying extensible references skinchange embeddable processing performing developers notifylist refactored formatting togglenext extensions _site_edit displaying capability signatures groupcount wikitrails containing redirected classnames imgcaption recognized openoffice othergroup samedomain addlinkcss namespaced especially simplified customized characters grouphomes validation recognizes parameters responsive wikistyles webmasters documented recovering obfuscated introduced pseudovars additional passwdread transition internally regardless downloaded checkboxes considered deprecated background blocklists timestamps integrates relatively understood resolution optimizing passwdedit stripmagic workaround requesting overridden restricted vandalized explicitly inputattrs enablediag elseifelse encrypting inlinediff publishing subversion remembered attachlist disallowed preserving unapproved frameworks diagnostic descending postconfig updatepage introduces incomplete subsequent repository translates timeisofmt previewing scrollable disruption autocreate assistance concerning discovered matchnames authgroups manipulate following mailposts currently correctly stdconfig concerned questions community optimized consensus beginning searchbox configure displayed forbidden rendering wildcards carefully injection additions excluding appearing pagestore pathtrail specified minnumber malicious relabeled histories performed arguments insmarkup newcomers important changelog supported processed pubdirurl scripturl corrected sitegroup downloads filenames migrating directory conflicts processor wikititle indicates sanitized replacing addresses unrelated treatment contained redirects analytics upgrading filtering according wikipedia technical depending published safe_mode including evaluated negatives auth_form generally migration eachcount hardcoded remaining uninstall locations subtitles algorithm separator telephone redundant otherwise encodings insertion summaries inserting adaptable languages keeptoken remainder revisions interface installed asterisks incorrect operators yesterday clickable released specific rendered reported includes produces carrying captions elements displays affected improves condauth improved slightly external division formerly fullname anything diffshow wrapping _request refcount authlist récents continue launched intermap allowing recoding backtick reversed versions protocol embedded clicking margiani defaults semantic editform upgrades possible disabled scalable pictures absolute graphics included basepage multiple sidebars existing websites provides optional wikitext uploaded settings minimize problems somewhat browsers manifest silently entities designed recently earliest comments strongly november ptvstart redefine separate makelink selected requires somepage replaced together excerpts contains markupid managing behavior provided physical modifies inserted accessed entirely homepage enabling handling generate switches official manually requests creation uploader textarea identify authpage anywhere standard executed features pmwikibg controls publicly tracking pointing blocking computed advanced sections visitors metadata wikileft whatever assuming searches compat1x attempts shipping position suppress combined updating datalist restored warnings lockfile category localcss browsing snippets whenever expected callback markup_e percents switched deobmail produced headings edithelp numbered intended tabindex flexible reverted appeared expanded cosmetic restores anchor_1 examples corrects prevents wikicode bugfixes defining writable critical diagnose because updated editing strings message already michael engelke updates blocked styling earlier without running mention several changed certain reading gabriel recipes windows hosting trusted limited deleted created cleared whether removes anchors applied tooltip exclude greater notices classes checked against exploit trigger imgonly affects notably calling clients simpler exactly welcome ruleset removed flagged numbers respect instead wrapped pagerev reflect receive entries pmcrypt article parsing generic extends tracing accepts toolbar invalid reverts matches storing opposed handles another detects trivial shouldn convert browsed schemes devices fuchsia written showing outdent aligned justify minimum defines removal autotoc ignored variant closing appears treated details command markups spacing greatly through escaped leading various causing phpdiff elseif1 smarter footers headers finding smaller ongoing assumed buttons complex happens testing balloon whereby sending usually dropped returns explain reports acquire contact mistake options regular renames 2001900 ontrail however partial desktop results jumping inspect sources roadmap besides ordered undergo maximum rewrite relies pmform vardoc values latest called commas prefix system letter retain please module output editor longer v22115 future modulo couple v22114 nowrap fourth rushed always v22105 phrase starts filled french exists allows labels fields people modern double helper single adding creole v22116 nodiff arrays admins v22104 except broken needed easier cellnr breaks memory others obtain server limits blocks ptvend v22106 subset headnr lowest worked easily target before points agents v22109 v22118 causes orange active faster images colors hashes v22103 posted v22108 nested v22117 cancel v22128 wishes v22107 simply global v22123 either better pml10n cannot digits parsed nopass isidor passed locale second effect unable v22112 mobile height recode dashes v22127 apache moment beta33 modify copies v22124 v22125 romano edited v22126 caches egidio inside v22101 v22130 center highly v22120 v22129 suites issues builds v22111 visits severe indent v22119 cursor listed v22102 vector quoted google branch v22110 ranges substr refers resets v22113 remote tested prompt signal v22100 v22122 still minor fixed forms html5 added v2269 skins files state v2270 width types based v2268 large leads after taken there until v2266 today which else1 meant v2267 users first https speed codec audio built error shown email edits about calls three v2233 hides raise entry pmtoc v2235 makes newer 00961 iconv while cases those could newly since yours doesn pipes mails fmtpv right above owned radio focus would popen video being their xmlns notoc print lines ctime sizes v2283 mouse v2282 named v2281 items wrong v2286 react years v2284 force blank v2285 colon v2277 glued v2278 v2276 texts versa v2280 olive v2279 cells v2299 major later might comes betax v2298 v2293 ships beta6 needs v2294 least v2295 v2292 early v2297 cross v2288 short parts among xhtml v2287 seems hooks v2290 v2291 false v2289 demos often paste tools aside doing wraps v2272 every ftime v2296 v2274 typed v2271 v2273 v2275 from 2009 this must done 2011 also been that sure want five like such more will adds they bugs were 2010 flac have core disk idea into dots used 8859 1252 v220 pits 2012 copy them runs news easy than didn tags many most tous wins huge grab kept give csum upon 2017 hasn rel2 2014 2016 phsc dial 2018 root 1999 2013 both aims loop logs 2019 made font near zone 2015 gray grey salt svgz aqua lime teal 2020 xlsx pptx docx 2004 lost shtm phtm pcgi opus unix 0444 webp farm was www org rtl ltr few may two had ids xss pqa vtt xyz six mkv isn due 121 fly txt geo jpg 3rd png pdf 403 mp4 odg ogv xcf jsp asp svn 3gp m4v odt ods odp tz 31 h5 h1 32 56 55 58 57 54 53 63 64 62 65 60 51 43 45 37 41 38 39 42 36 48 w3 49 50 46 34 47
+PmWiki.Notify:1628920394: PmWiki.LocalCustomizations PmWiki.Notify SiteAdmin.NotifyList PmWiki.PageLists PmWiki.WikiTrails PmWiki.PageTextVariables PmWiki.BasicVariables PmWiki.UTF-8 PITS.01159 : controlling_notification_frequency enablenotifysubjectencode enabledirectdownloads localcustomizations lastmodifiedsummary additional_headers notifylistpagefmt pagetextvariables notifyparameters notifysubjectfmt siteadmingroup specifications administrators basicvariables notifytimefmt notifyitemfmt notifications notifysquelch notifyheaders notifybodyfmt configuration international recentchanges installations sendmail_from periodically mailfunction acknowledged notifydelay conditional limitations notifyitems operational notifytrail substituted information notifygroup maintaining individuals assignments watchlists considered controlled particular notifyname configured notifyfrom recipients succession frequently wikitrails electronic notifyfile containing capability unreadable infrequent eliminates relatively protected following specified preferred correctly duplicate arguments specifies important generally webserver mailboxes stdconfig unnoticed otherwise directive encodings diffclass wikipedia pagelists regularly formatted necessary arbitrary addresses malicious concealed evaluated quotation disabling substring execution inactive limiting generate profiles homepage probably resolved flooding messages interval manually receives followed restrict minimums standard possible writable untimely posttime combined fullname defaults subjects replaced anything multiple override mailings silently attached whenever selected contains audience outgoing password solution checkbox example regards changed entries posting scratch prevent workdir editing disable privacy feature instead include charset content version persons blocked against reading process pageurl several library sending initial seconds because running however visited matters ignored periods windows between expired ini_set minutes noreply charles setting another history specify mistake section watched options similar usually placing emailed updates xlpage action longer before listed values elapse except passed others inside pmwiki result adding easier author syntax amount script should useful number single base64 simply hourly groups length access within images simple around spaces cannot rather easily allows return system remain really during queued called 86400 alice above times marks least posts about after equal sites might since issue exist could built tells edgar where under green pages edits 43200 hours lines minor rapid below often first false three small 10800 array would wikis _post mails entry apply added build links using avoid major doesn point being plain short 01159 occur which means track keeps extra whole order views given this will more smtp sent need used pits only same like also make that then have want host fail your some http says must just note best gets 2004 type soon zero case wait them each into such easy fred next most five uses less much than good been 3600 cron are bob net php one day www via way utf yet see has may fix abc isn 300 job 123 put ghi foo by 03 17 44
+PmWiki.AuthUser:1628920394: PmWiki.Passwords PmWiki.ThoughtsOnAccessControl Cookbook.QuickStartForAuthUser PmWiki.PathVariables PmWiki.PasswordsAdmin SiteAdmin.AuthUser PmWiki.SecurityVariables PmWiki.AuthUser PmWiki.BasicVariables Cookbook.AuthUserViaMicrosoftLDAP Cookbook.SessionSecurityAdvice Cookbook.AuthUser Cookbook.UserLastAction PITS.00400 Cookbook.HtpasswdForm Cookbook.UserAdmin : authuserviamicrosoftldap thoughtsonaccesscontrol dc8z2vu3uvnixmfocgdon0 quickstartforauthuser sessionsecurityadvice authldapbindpassword internationalization securityvariables defaultpasswords passwordsadmin administrators authentication administration basicvariables authldapbinddn userlastaction authorization configuration vk99sgdv1an6i customization authenticated q1ksenctfwqjs pathvariables mod_auth_ldap recentchanges documentation declarations htpasswdform intermediate include_once session_name restrictions successfully preg_replace interactions intentional comfortably independent maintaining flexibility maintenance wholeoffice memberships description authldapurl controlling information diagnostics individuals auth_groups handleauth identified protection organizing attributes capability configured authorlink restaurant especially filesystem controlled maintained authorized encryption compressed particular moderators definition complexity masterpass approaches registered characters activating farmconfig typically siteadmin performed excluding usernames installed formatted following pagestore xyzsessid sensitive different separated appearing protected directive injection encrypted available wikifarms confusion replacing determine indicated otherwise providing including addresses invisible increased useradmin similarly obtaining specified searching something anonymous activated e_author cknc8zas profiles editform specific accounts multiple settings addition together possible examples htaccess includes provides cookbook sequence creating identity removing external prefixed replaced followed remember creation whatever required relative everyone writable included defaults solution provided graceful directly coexists entering accepted versions actually accessed flexible reminder audience contains commonly overhead managing htgroup history editors simpler sources editing through belongs specify recipes pmcrypt writers summary getting without mailing article phpinfo viewing scripts someone leading feature working closely enables attacks another columns systems against instead follows servers running shouldn calling easiest letters looking treated browser cookies listing command testing inserts matters notably desired entered binding created nothing usually context details correct because apache places adding admins pmwiki newwin number called global define tricks manual barney domain within lookup before unique safest naming please logged except people turned thread secret logins debian caused treats record module rights always saving allows authid anyone simply either assign airius remove choice reason having better linked strstr levels cannot caches edited xlpage merits repeat easily entire equals spaces string beta58 stored sqlite person fields scheme ensure based these carol given still which older users local array farmd alice using prior after makes needs wikis their under signs above false blank entry think would wrong never there valid mysql seems httpd model knows early binds quite class being first value stale force below doesn lines doing could kinds 00400 track match pairs links tools input reset gmane 52420 bring party third about saved colon where debug helps rules might least exact means ifend that urls this same done have when near asks html will each your tell also most they fred keep else from case docs like into i18n more time note tabs tips uses even dave hide self pits type such must made want wide both than clip show load skip left are net has apt web yes bob utf faq why two sub may mix isn top by go 07 cn
+PmWiki.UploadsAdmin:1628920394: PmWiki.PmWiki PmWiki.Uploads PmWiki.Security PmWiki.WikiAdministrator PmWiki.PasswordsAdmin PmWiki.UploadVariables PmWiki.SecurityVariables PmWiki.Passwords Cookbook.UploadGroups PmWiki.GroupCustomizations PmWiki.LocalCustomizations Cookbook.UploadTypes Cookbook.SecureAttachments PmWiki.DebugVariables PmWiki.WikiGroup PmWiki.PageDirectives : uploaddirectoryconfiguration restrictinguploadedfiles enableuploadgroupauth newuploadfiletypesend enableuploadoverwrite enableuploadversions enabledirectdownload localcustomizations groupcustomizations upload_max_filesize otherfilesizelimits uploadprefixquota securityvariables wikiadministrator secureattachments defaultpasswords misconfiguration limitrequestbody uploadprefixfmt upload_versions vulnerabilities uploadvariables direct_download uploadblacklist uploadnamechars uploaddirquota subdirectories sitewideprefix upload_tmp_dir pagedirectives passwordsadmin administration debugvariables alternatively verifications uploadextsize uploadmaxsize specification media_mimeref post_max_size installations automatically distributions alphanumerics uploadpermadd file_uploads subdirectory restrictions uploadgroups disallow_ext consequences uploadsadmin uploadurlfmt corresponds assignments recommended uploadtypes alternately public_html anonymously underscores justifiable possibility information individual extensions management simplifies limitation specifying increasing additional determines associated parameters authorized configured pageprefix handleauth protecting wikigroups explicitly filesystem enablediag containing restricted versioning characters variations attachlist accessible altogether organizing uploadable generated important displayed following unlimited necessary mechanism described filenames disabling stdconfig uploading preserved occurring requested modifying defaulted including paragraph describes increased permitted specified otherwise generally different restarted potential executing somewhere galleries w3schools wikipedia specially restoring disables multiple organize postings writable separate settings cookbook normally properly disabled attached location performs changing required existing defaults prompted approved whatever executed contains anything controls rejected 10000000 supplies involved terabyte included previous function unwanted smallest accessed designed possible somewhat fullname paranoid includes htaccess another allowed usually defined content instead already vitally letters feature through whether example summary hyphens periods similar unicode current picture certain numbers maximum provide relaxes process letting desired without attempt 1000kib utility differs however hazards phpinfo dirconf prevent changed message pmcrypt browser details problem overall 10000kb located factors pmwiki server damage create appear script called recent allows others recipe within simply spaces digits markup pushes syntax stance entire stored before remove 100kib easily locked insert 1000kb adding action entail should newwin apache source 670955 larger single length unable values rights posted affect detect foobar moving unless repeat assume amount second 524288 solves itself always prefer secret trying rather reduce pages issue found which total those first there sizes error above these httpd three linux being place noted whole would units bytes turns asize means 100kb check given named 20000 entry their valid array needs below basic image knows about might since added lower 25mib begin doesn notes title users older could aware until steps using takes along comes that this line each find iana part used thus like when docs hold will home jpeg them yyyy adds also most zero then link many have plan only than 20kb must work same such test last lead 1024 your from seem make sure been says bits risk mind keep 1mib exit made look 2gib edit wish next 512k tend deny seen true tree much into well once 10mb case 200k can has may one was two hlt etc 6mb 2mb yet dot meg gig 50k fly web yes usr lib ask 1mb faq zip off png dxf gif www cgi jpg asp isn txt don zzz xxx go
+PmWiki.PageLists:1628920394: PmWiki.PageListTemplates PmWiki.DocumentationIndex PmWiki.PageTextVariables PmWiki.MarkupExpressions PmWiki.PageVariables PmWiki.WikiTrails PmWiki.BasicVariables Cookbook.SearchResults PmWiki.PagelistVariables Site.PageListTemplates PmWiki.Categories Cookbook.PageListMultiTargets PmWiki.ConditionalMarkup PmWiki.CustomPagelistSortOrder PmWiki.PathVariables PmWiki.Internationalizations Cookbook.PagelistTemplateSamples Cookbook.Forms Cookbook.CustomPagelistSortOrderFunctions PmWiki.PageLists PmWiki.PageDirectives PmWiki.Search : custompagelistsortorderfunctions enableundefinedtemplatevars fpltemplatemarkupfunction pagelisttemplatesamples enablerelativepagevars internationalizations pagelistmultitargets documentationindex mypagetextvariable searchboxinputtype pagetextvariables markupexpressions pagelistvariables conditionalmarkup pagelistcachedir allrecentchanges searchresultsfmt pagelistrequest includevariable pagetextvarname makepagelistopt groupattributes alphabetically searchpatterns inconsistently customizations basicvariables pagedirectives pagelistpasswd administrators subdirectories pagelistorder pagelistcount pagelistgroup pagelisttrail pagelistclass pagevariables compatibility alternatively configuration accessibility pathvariables matchsearched pagelistwrap searchboxfmt pagelistlist pagelistname apagetextvar pagelistlink markuptohtml fplformatopt intermediate modification implications searchboxopt pagelistarg explicitely placeholder searchfound pagepathfmt defaultname attachments translation contributed information groupfooter groupheader pagevarname surrounding pagelistfmt customizing titlespaced parameters definition explicitly grouphomes predefined indicating subsequent processing capability specifying wikitrails especially overridden implements populating displaying determines generating predefines customized wikigroups additional difference categories wikisearch documented farmconfig optionally formatting matchcount pagelistif separators suppresses represents fplbygroup characters equivalent pagestores associated conditions attachlist wildcards cookbooks specified displayed unordered currently backlinks forbidden resulting groupname beginning performed preserves variable1 statement multiples undesired important continued according selecting therefore variable2 providing localized generally different retrieved fplsimple arguments searching markupend paramname somegroup searchfor directory following templated existence matchlist exception basically thisgroup generates separated generated described selection instance audience criteria anywhere possible produced directly recently indicate starting tableend creation restrict embedded likewise sequence reversed versions bulleted creating supplied defaults ordering anything specific consider pmwikizh question asterisk security choosing matching disallow contains examples behavior requires tabtable brackets enclosed executed omitting _request normally fullname override password bothered provided category homepage negative modified included provides allowing redirect contents existing followed pagename defining language browsers validate attached evaluate excluded disables tvarsend excludes messages differs without mailing formats through queries several website instead absence between summary listing certain section reloads chinese because delimit effects regular linking another portion obtains subsets numbers primary returns changed finding related accepts sorting somehow setting authors banners matches reading greatly objects yourptv appears context treated mygroup applies literal earlier shuffle working phrases written initial details onwards created caching wikilib comment usually wikidir exactly already enabled ignored follows assumes prevent biggest cellnr random adding inside before twenty counts thread exists string entire spaces button should remove vspace adjust needle useful value2 ranges quotes allows rather within quoted mydate sorted likely inline second output posted unless either modify mostly submit needed rights encode checks starts beta15 speeds values across braces refers having things occurs commas letter listed square source syntax simply around cannot expect substr abcdef avalue admins xlsdv chars blank using ftime paths pmcal names taken after enter those three boxes which could finds their first array rules label farmd minus saved aware html4 since would field write based apple below lines being works terms html5 skins above xhtml empty shows users doesn gives needs opens forms given yield level width while every these 60970 focus 60968 about paren gmane means carry ctime 58621 added makes apply today rides words simon horiz comes sally myptv items still curly test also than each same more luck note that once sign when ptvs from only will seen last size week into used they must 2009 gray file thus have then zero part http true nbsp them 10th what skip nine look uses long ways hide such five want 2005 edit tags none may php etc div pie key two bad ask now faq yes isn run 123 has new who don via its org 9th 5th 1st was own 99 of ij uv qr pv xy 01 31 gw 40 30 71
+PmWiki.CustomWikiStyles:1628920394: PmWiki.WikiStyles PmWiki.WikiAdministrator PmWiki.LayoutVariables Cookbook.Functions Cookbook.WikiStylesPlus Cookbook.Callout : wikiadministrator customwikistyles layoutvariables wikistylesplus administrators correspondent customization wikistylecss projectentry intermediate underlining mynewstyle properties background equivalent paragraphs predefined underlined decoration additional farmconfig particular definition attribute overwrite functions following condition important describes combining cookbook tabtable specific warnings audience sidehead concerns friendly colorful decimal callout provide checked padding example defines printer getting display comment disable putting browser special summary setting scripts output ffffcc pmwiki worked author easily hovers border second dotted colors window values rfloat lfloat f9f9f9 markup cccccc margin though newwin lframe rframe cframe _blank target silver 00ffcc sample useful groups maroon global purple within yellow action remove unlike index array thumb block using apply vmenu right local pages class mouse space notes image which valid first white would black roman might lower green upper alpha solid setup prior links turns tried view left into your this them then very list item will didn open none noul blue navy gray xxxx text make icon that same wide site want bold from name done when how and can for php pub are faq etc 1px see tag div may img 4px via own top 5em sdv by of dt 6
+PmWiki.SkinTemplates:1628920394: PmWiki.Skins PmWiki.BasicVariables PmWiki.PathVariables PmWiki.LayoutVariables PmWiki.PageVariables PmWiki.PageDirectives Skins.TestPageDirectives PmWiki.Internationalizations Cookbook.HideSearchBar : skintemplateincludelevel internationalizations testpagedirectives findingprocessing loadpagetemplate layoutvariables includetemplate pagetemplatefmt lastmodifiedby settmpldisplay basicvariables htmlstylesfmt customization substitutions automatically corresponding configuration skintemplates pathvariables pagevariables pagefooterfmt hidesearchbar pageactionfmt farmpubdirurl pageheaderfmt particularly translations capabilities translatable modification combinations somefunction pagerightfmt pagetitlefmt directories permissions pageleftfmt pagelogourl appropriate convenience skinlibdirs substituted information encountered consecutive definitions titlespaced htmlfooter collection filesystem translated htmlheader accessible compatible pagexyzfmt mentioning fileformat parameters predefined skindirurl actionskin generating bearbeiten appearance specifying displaying different processed basically directory wikititle available continues inclusion necessary designate arguments something scripturl construct following indicated typically candidate requested specified instances resources functions sensitive processes somewhere customcss otherwise specifies mentioned selectors currently described customize languages designers important describes displays pagetext required multiple included probably somefile provides contents excluded somepage original specific publicly comments embedded editform homepage contains possible pagename cookbook replaced document consults fullname skeleton encoding replaces optional directly executed whenever security noaction disabled criteria sections noheader nofooter default without consist looking failing instead loading another noright styling attempt belongs recipes special skinned allowed phrases sidebar maximum globals example feature summary pageurl notitle charset browser smaller shouldn address enabled limited treated follows between several bgcolor hidexyz version reflect through outputs assumed gathers passing besides complex markups capital usually however padding pmwiki please always noleft starts marked checks simply choose inside change allows begins loaded either easily edited needed number listed second called manner intact tables editer letter nearly french exists having string better looked folder create myskin values useful things insert before sheets images german spaces levels purist writer points margin server client result stored modify effect rframe issues actual f9f9fc border 666666 making skins farmd group tells found first needs names which while array those noxyz doesn above falls using worth steps error based width final finds their 25pct would looks named often pages login refer exact built these split calls might still pairs prior green local colon there blank loads known solid added print block valid urls only then this that even read have into blue site sent like also thus used uses they main such 10px gets each will them been from move next same done both user i18n goes your help note size font what must args made arg1 arg2 arg3 want http line adds meta most body runs root time back once else php see org www but faq 114 tag has try are any its end 2em sdv who yet two key yes 5px was 1px box txt 58
+PmWiki.IncludeOtherPages:1628920394: PmWiki.IncludeOtherPages PmWiki.Links PmWiki.WikiGroup PmWiki.PageTextVariables PmWiki.IncludeOtherPages-Talk Cookbook.IncludeSection PmWiki.LayoutVariables Site.PageListTemplates PmWiki.BasicVariables PmWiki.PagelistVariables PmWiki.WikiStyles PmWiki.ConditionalMarkup PmWiki.PageVariables Cookbook.IncludeUrl PmWiki.WikiAdministrator PmWiki.PageLists : enableundefinedtemplatevars enablepagetitlepriority enablerelativepagevars includeotherpages pagelistvariables specialreferences pagetextvariables pagelisttemplates conditionalmarkup wikiadministrator includebasepage layoutvariables includevariable includefullname groupheaderfmt includesection lastmodifiedby basicvariables includeanchors includefailed pagevariables distinguished someotherpage inadvertently installation templatename errormessage templatepage basepagename intermediate includelines transclusion groupfooter maxincludes firstanchor description interpreted recommended unprotected misbehavior includeself information parameters leftborder everything indication particular whitespace containing accessible guarantees templating generating sectionend displaying specifying definition completely directives farmconfig _site_read situations transclude includeptv wikistyles includeurl passwdread fromanchor character currently displayed markupend paragraph preceding available statement otherwise overrides qualified exploited pagelists variable1 variable2 wikipedia wikigroup inclusion sensitive including delimited according resources evaluated processed delimiter specified datapage designed provided footnote versions possible actually multiple retrieve cookbook separate included contents treating optional approach function toanchor supplied somepage therefor myanchor audience strongly sections straight authuser chapters previous contains achieved infinite keywords outlined ivarsend disabled parallel specific slightly intended comment enabled another default allowed viewing appears earlier prevent ifclass between example without instead sourced whether feature setting anymore several assumes context padding testing already purpose address primary treated maximum styling runaway summary similar details creates newline general options closing missing assumed perform complex authors pmwiki useful syntax engine filled values course single target eerily ignore number insert inside proper should bottom simple things mimics server allows places output abcend starts cannot spaces friend append thread visual group1 group2 though entire inline value2 margin enough screen public nopass refers around stuff makes named ifend newer page1 blank doesn eerie about after still below given page4 maybe betas page3 wraps being page2 ptvar links their loops might these where above would exist using seems notes those green which from1 write extra gmane fails from2 58633 focus 58609 15079 15031 horiz apply solid width quote today usage colon issue taken tells whole exact each same this that then item only have talk into nice grab uses your code also 10px what both ones http them used when like they four hide type want acts stop five will work done such next okay look but two are faq and via was 3px 1px 2px 88f how php say xyz its has org web fix to1 isn to2 of eg 34 48 12
+PmWiki.LocalCustomizations:1628920394: PmWiki.GroupCustomizations PmWiki.WikiAdministrator PmWiki.DocumentationIndex PmWiki.Skins PmWiki.Internationalizations PmWiki.CustomMarkup PmWiki.InterMap PmWiki.PmWikiPhilosophy PmWiki.Variables PmWiki.DebugVariables Cookbook.ControllingWebRobots Cookbook.Cookbook PmWiki.BasicVariables PmWiki.PathVariables Cookbook.SQLite Cookbook.CompressedPageStore Cookbook.PerGroupSubDirectories PmWiki.UTF-8 PmWiki.MailingLists PmWiki.Upgrades Site.PageNotFound PmWiki.LocalCustomizations : collaborativemaintenance pergroupsubdirectories internationalizations controllingwebrobots compressedpagestore groupcustomizations localcustomizations documentationindex wikiadministrator retrieveauthpage pmwikiphilosophy recommendations resolvepagename enablestdconfig basicvariables pagecsslistfmt debugvariables installations customisation arachnophilia configuration contexteditor modifications automatically pathvariables authorization alternatively translations pagenotfound custommarkup additionally mailinglists subdirectory defaultgroup include_once requirements instructions recommended script_name myfunction1 pagetextvar request_uri defaultpage information overwritten defaultname myfunction2 pagepathfmt postconfig scriptfile customizes farmconfig urllinkfmt configured openoffice octothorpe enablediag containing temptation definitive recipefile individual decoration explicitly importance guaranteed underline pubdirurl performed functions attribute important mentioned character configphp operating generally different encodings arachnoid scintilla alphabets languages following scripturl cascading otherwise interface siteadmin pipermail describes according including sequences determine extensive startpage something processed inception linktext cookbook specific releases commonly verbatim authuser external problems nofollow commands compared changing writable required fullname included provided whatever condauth existent accessed download displays pmichaud contains defining freeware probably bluefish intermap homepage notepad2 aquamacs upgrades override localcss possible generate platform whenever behavior strongly designed examples directly simplest software benefit scripts perhaps message editing disable setting recipes certain because symbols already wikidir pagevar removed systems freebsd unicode windows instead editors startup without updated caching explode private snippet wikilib posting follows ordered authors precise summary phpinfo comment greatly another respect feature linkalt through linkurl holding actions should folder almost saving allows values before others change addons rename 058905 called effect bottom result search engine beta21 pgcust sample advice define needed sqlite modify resist single xlpage submit adding simply safely output unless create merely 880000 caches effort levels future styles things titles sheets there files above wikis skins these class which false links their avoid clear linux users early begin after given newer below shown color geany needs makes cross might libre built pound apple scite frame items lines first named about blank parts farmd those could error array then take http that them save also html look your into kate just this than plus even hash used want flos byte true core like will next find from type each more come docs copy time done none dark work href bold many they near 2011 must ansi well 1252 same 8859 been have can yes see may utf lot won try hlt way abc 404 faq its www org vim kde bom 100 iso few gnu via h1 h2 h3 h4 h5 50 26
+PmWiki.Tables:1628920394: PmWiki.TableDirectives Cookbook.RowspanInSimpleTables Cookbook.FormattingTables PmWiki.LayoutVariables PmWiki.WikiStyles : simpletabledefaultclassname rowspaninsimpletables cellcellcellcell2 tablecellattrfmt formattingtables layoutvariables tabledirectives enablesortable tablecellcount wikistyleapply configuration possibilities illustration alternately cellpadding huáscarán gunnbjørn background attributes alignments characters geographic wikistyles specifying individual percentage borderless beginning antarctic markupend following dependent greenland argentina described unchanged different aconcagua indicated temperate cookbook headings centered bordered examples contains commands floating tropical audience absolute contents trailing collapse creating advanced multiple elements expected spanning position requires directly standard distance aligned caption headers present columns leading special spacing borders control closing authors placing feature enabled created complex instead delimit ecuador bgcolor browser firefox cayambe highest summary styling display everest readers reorder country begins either pmwiki define margin double escape detail widths middle custom entire around vinson notice yellow tricky placed obtain vsides extend hsides within denote basics before larger useful appear doesn allow horiz rules right these frame lines first helps scale using wraps works cells there other prior while local space start mount below which after south leave added empty types north fjeld small point 120px value nepal used left pipe this that zone 2009 text only 6960 give cols 5790 peru 4892 6768 8848 3700 sets more none col3 40px lots col1 html next just fact size also page have like such they must when how see two are has css nov via php pub etc can don 100 any way may get faq of my 50 66 by td c1
+PmWiki.UpgradingFromPmWiki1:1628920394: PmWiki.WikiAdministrator PmWiki.Upgrades PmWiki.MailingLists PITS.PITS PmWiki.Installation Cookbook.Cookbook PmWiki.InitialSetupTasks PmWiki.LocalCustomizations PmWiki.CustomMarkup PmWiki.WikiWord PITS.NewIssue : upgradingfrompmwiki1 localcustomizations initialsetuptasks wikiadministrator convertv1wikid customisations configuration miscellaneous htmlstylesfmt linkwikiwords compatibility installation apprehension include_once custommarkup mailinglists configuring discontinue directories comfortable furthermore substantial incorrectly suggestions conversion usev1wikid assistance especially background converting standalone altogether experiment available sonstiges highlight bracketed migration directory following scenarios converted questions corrected templates affecting remaining replacing procedure configure important eliminate previous existing changing problems separate somewhat cookbook standard tracking newissue pmichaud redesign compat1x requires anything software location external manually blogspot disabled properly requests probably upgrades approach working created 0beta42 briefly 0beta43 scripts instead running migrate specify improve replace entries defined nothing uploads through example markups editing without between recipes default setting removed summary because risking methods earlier already either before moving listed enable amount yellow system should easier syntax allows errors couple safely format posted backup layout others edited always normal change intact assume likely making appear decide latest needs farmd pages still saved using above after start links below these enter match ahead lines bring wants forms there those begin going users posed works since beta2 noted howto given files carry uedit gives doing being shall over site well them away into step find just your this such will then that 2011 sure many make same have good 0423 pits call path used bulk span else were aren they idea very copy http uses kept home fair been thus meet disk won php isn can add two had was 221 may see has rid fix etc by my 9 6 7 8 5
+PmWiki.LayoutVariables:1628920394: PmWiki.LayoutVariables PmWiki.BasicVariables PmWiki.PageDirectives PmWiki.PageHistory PmWiki.WikiStyles PmWiki.SkinTemplates PmWiki.WikiGroup PmWiki.Questions Cookbook.RecentUploadsLog PmWiki.CustomWikiStyles Cookbook.LocalCSS PmWiki.TableOfContents Cookbook.ToggleNext PmWiki.PathVariables PmWiki.Tables PITS.00638 Cookbook.RowspanInSimpleTables PmWiki.TableDirectives PmWiki.Skins Skins.SkinChange PmWiki.OtherVariables PmWiki.EditVariables : simpletabledefaultclassname enabletableautovaligntop skintemplateincludelevel enablesimpletablerowspan enablepagetitlepriority enablefixedurlredirect draftrecentchangesfmt enableselfwikipagecss rowspaninsimpletables pagenotfoundheaderfmt groupprintfooterfmt groupprintheaderfmt enableautoskinlist togglenextselector recentdraftchanges enablercdiffbytes tablecellalignfmt customizationfile recentuploadslog allrecentchanges enablediffinline tablecellattrfmt tablerowindexmax recentuploadsfmt customwikistyles pageredirectfmt tabledirectives tablerowattrfmt layoutvariables wikipagecssvars enablehighlight tableofcontents includetemplate wikisimpletable groupheaderfmt wikistyleapply wikipagecssfmt groupfooterfmt enablesortable tablecellcount enablepathinfo basicvariables administrators pagedirectives othervariables htmlheaderfmt compatibility farmpubdirurl tablerowcount changesummary corresponding substitutions pathvariables skintemplates htmlfooterfmt automatically htmlstylesfmt editvariables pageskinlist notification installation htmlpnewline highlighting currenttime pagehistory consecutive skinlibdirs replicating differences htmltagattr pagepathfmt pagelogourl highlightjs messagesfmt information interactive maxincludes application alternating encountered fmtpagename specifying background decoration attempting diffmarkup metarobots explicitly attributes containing processing authorlink inclusions skindirurl additional rclinesmax redirected overridden accessible statements predefined filesystem associated actionskin displaying horizontal skinchange paragraphs performing references htmlvspace regardless superseded linebreaks recursion directory otherwise specifies typically searching configure monospace alignment generated accessing questions reporting stdmarkup sitegroup following available wikigroup overrides displayed wikititle primarily markupend processor repeating alternate scripturl continues insertion somewhere microsoft behaviour something expecting webserver described internal localcss basepage patterns disabled shortcut specific uploaded expected cookbook anything editable familiar internet explorer viewable contains unusable replaced browsers fullname textpage included displays separate document maintain elements applying absolute instance multiple settings advanced intended printing defining existent features publicly provides complete entirely function nofollow toggling packages skinname previous personal preceded commonly normally matching handling prevents defaults adjusted switches controls sections example listing respect allowed changed without editing derived visitor firefox removes matches defines similar because between visible despite notably setskin returns correct scripts several issuing require preview graphic becomes globals details partial address program applied mistake maximum keyword styling options meaning browsed classes indexes usually library version noindex headers closing managed another inside sample images drafts pmwiki center column spaces having output allows number within saving engine logged recipe hidden cannot colors string styled rather edited blocks itself levels refers anchor issues reload bottom others appear spacer before stored single sclass github people family beware either window source sanity unique affect second unless value above skins doesn lists array still every which using scope farmd order given three parts first https along words 00638 xmlns rules xhtml holds point sides there empty below grave extra finds would named looks treat adapt newly added stays could saved pmtoc unset plain valid html5 based right edits about times tells check query limit those shows while never after names built code this sent from have more case easy used when 1999 tmpl many then also that will seen keys lots must they same each left want wins such like pits fmtv most what last work uses make lang than font them your size need none send 1000 mode adds near body note type made href icon zero pose dots item date upon tags php img sdv div 9f9 ff9 9em etc rss 404 123 via 200 faq two way may has off ti1 ti2 tr1 tr2 tr3 png www org gif 50 42 dt w3
+Irc.RecentChanges:1628920394:  : recentchanges federation clients servers bouncer chanop august first guide 2020 jrmu bots edit july 2021 irc may mkf 04 pm 01 13 by 54 03 31 09 22 am 56 08 06 53 19
+Ircnow.Constitution:1628920394:  : cryptocurrencies representatives simultaneously qualifications investigation organizations constitution headquarters transactions periodically disqualifies billofrights unreasonable disciplining impeachments bankruptcies proceedings information cryptocoins netizenship compensated ambassadors accusations exclusively organizing overturned candidates collection permission faithfully absolutely throughout determined businesses disorderly determines amendments penalizing attendance committing punishment government republican proportion guaranteed commercial restricted represents distribute confronted registered preserved minutemin committed president condition honorable competing convicted vacancies mentioned different witnesses excluding remaining according establish elections described excessive forbidden necessary proposals financial standards impeached published peaceably equipping involving decreased religious protocols increased invasions software outreach electors congress approval majority petition officers official services recorded policies hardware behavior multiple external regulate salaries suppress required received proposed breaking punished greatest treasury religion requires networks disputes creative involved senators exercise searched deprived personal searches payments verified approved nominate securing probable bounties salaried informed choosing provided inferior admitted spammers defense article raising archive secrecy between supreme request pirates ddosers members servers promote another uniform removed protect appoint serious without limited foreign boycott attacks welfare against compete revolts recruit bribery treason accused authors subject special elected allowed logging chooses purpose needing private minimum consent granted pardons speaker tempore perfect justice liberty created himself certify fulfill execute recover absence smaller freedom however manages support removes becomes policy courts decide number salary except prefer duties cannot during judges quorum needed thirds senate ballot banned unable active called borrow income status forces charge report within unless direct counts before chosen safety abuses social paying begins defend houses simple joined secure result ircnow effect gather months source compel absent listed modify follow judged speech seized common trials danger groups serves powers handed shall votes least their users times fifth trade issue tried those twice given staff chief years agree these using three money cases where deals taken cause price costs every there flees under split train being while fraud among which debts equal place offer meets after voted gifts cruel still about state above crime world repel parts expel jury will they have most deny must been fair fast them this made 4ths from held same back into that make data when only upon code stop 3rds open copy such five fees once what then days veto both chat mail real hold paid also pass gets sole sign plus more fit yet new any may its has was who ask own six vii non try iii by 10 13 2 9 6
+Freedom.RecentChanges:1628920394:  : lanofopportunity openforeveryone firstamendment libertyordeath recentchanges serversrights denomination startupdream independence vendorlockin serverrights equalaccess centralized experiment censorship dueprocess federation rulebylaw madeonirc education selfadmin christian opentoall homestead republic freenode february december software bearcode finances religion selfhost freedom quality license january network privacy militia destiny october august source refuge checks april union march press 2020 jrmu 2021 july unix fork june may wiz 10 13 09 49 52 06 48 23 01 25 14 12 46 03 pm 26 24 07 19 31 27 55 04 18 28 05 47 45 11 08 43 42 44 35 17 29 39 33 16 22
+License.RecentChanges:1628920394:  : discriminatory recentchanges publicdomain miniontoby february license ircnow april march 2021 jrmu 19 45 am 09 04 10 12 06 15 00 14
+Debate.RecentChanges:1628920394:  : controlcomputer microsoftdanger category_mirror wikipediadanger firstamendment unixphilosophy facebookdanger monopolydanger mozilladanger accessibility youtubedanger recentchanges ethicalflaws searchsocial outreachkids debiandanger ircv3defense googledanger appledanger matrixflaws oldsoftware slackdanger nodejstrap freespeech zncdefense hyperlinks dogfooding uberdanger zoomdanger hatespeech linuxflaws wikistyle september providers december partners zncflaws february xmlflaws openweb january privacy mistera whynotc debate making august bncnow python monero webirc ipsec march 2021 2020 jrmu june july whyc cash mkf dcc 03 16 29 pm 08 by 56 26 06 18 54 27 43 05 10 01 07 11 04 36 15 48 14 45 25 35 12 00 39 13 31 09 49 51 59 57
+Debate.Ircv3defense:1628920394: Debate.OpensoftwareStart : opensoftwarestart specifications confirmations compatibility standardized registration ircv3defense transparent disconnects independent maintaining connections resubmitted elaboration proprietary possibility considered interested background understand frequently supposedly addressing networking incredibly deployable statement community recipient ecosystem processes interface available delivered tunneling integrate committed firewalls backwards necessary existing invented snippets provides messages networks facebook similiar capacity official repeated features properly improved relaying requires changing protocol supports browser without clients outside servers however minutes channel discord because authors writing aspects dialing monitor perhaps uploads session bouncer exactly created average grounds fixable include phones ircnow github likely bypass cannot number mobile please photos simple mature videos handle issues public debate beyond source better reason though beings fixing device people needed still often audio meant calls which wants human might https lists share these their scope today while watch buddy could after apple slack users globe large shuts first since flaws jitsi major free chat your does meet code good apps band file easy only that used much pull what then 1988 team lost 2019 true hard echo sync also make this when over home down from love plan join huge ircs post hasn next into 341 isp 276 non 346 wip gui for 100 any way web why 000 but was did org 95
+Bouncer.RecentChanges:1628920394:  : irccloudandroid recentchanges revolutionirc ircforandroid irccloudios irccloudweb thunderbird xchatazure simpleirc september noxturnix november december limechat turboirc androirc bouncer icechat kiwiirc hexchat weechat quassel textual removed spacing august vision winirc adiirc atomic pidgin mibbit adium irssi kvirc added igloo yaaic smuxi ircex jrmu 2020 2021 mirc home july page june mkf all znc may by 06 pm 54 03 23 am 12 17 16 10 56 45 41 25 36 52 26 09 32 31 00 19 13 15 14 11 24 47 35 34 27 33 43 39 42 53 22 04 58 37 08 59 07
+Shell.Applications:1628920394:  : applications preinstalled wkhtmltopdf imagemagick simpletable pkglocatedb bitmapfont 20150318p1 libchewing subversion coreutils djvulibre fetchmail geomyidae mercurial arphicttf multitail libpinyin profanity newsboat antiword docx2txt xlsx2csv 20171227 software sortable 9100hp2 openjp2 gettext runtime hicolor jbigkit jsoncpp 9rel1p0 mariadb nghttp2 toolkit mcabber desktop sqlite3 account weechat screen giflib alpine no_x11 common figlet pixbuf zenhei python update 21p7v0 border jasper ledger ngircd quirks client shared server aspell argon2 width rsync boost anthy bzip2 irssi icu4c rhash theme fonts shell class fftw3 cache cmake groff gnupg gmake glib2 elvis emacs 09p20 links cvsps cyrus boehm unzip lcms2 comes pcre nano slrn 12p0 23p3 tcsh 10p5 sasl 00p1 tiff jpeg tree 77p2 bash icon info curl 03p0 lynx oath 41p2 20v1 that 16p1 sacc node pico 1p10 15p0 mime 31p1 mutt 37p0 05p2 with 11p4 26p3 27p6 24p0 your gawk wget 21p3 file 2061 27p1 zstd 0p12 png 3v0 pip znc 0p3 py3 2v3 0p2 6p0 wqy 0p4 nvi 3p2 2p1 lz4 p11 4p2 php 9p0 apr 7p3 gtk 3p8 w3m 2p2 3p1 got vim 5p1 sic 0p0 182 fdm 8p0 uim 0p7 trn git gdk 25 39 62 zh 60 xz 19 kc 29 34 gc ii 38 64 66 14 jq
+Ircnow.Contact:1628920394: Ircnow.Servers Irc.Guide : organization plaintext applying customer contact support servers network ircnow please course client profit number admin guide phone email abuse title reach 6667 2063 join 6697 over full list team view have best 458 888 the way you don for and not ssl if 1
+Grape.RecentChanges:1628920394:  : recentchanges september minetest donateus baytuch january august grape guide tasks 2020 fizi 2021 june jrmu todo 08 by 06 42 am 41 03 30 16 05 39 01 pm 07 52 11
+OpenbsdNet.RecentChanges:1628920394:  : recentchanges openbsdnet august ipv6 2020 jrmu 10 at 11 49 am by
+Openbsd.Acme-client:1628920394: Openbsd.Openhttpd Openbsd.Nsd : vxsjmodzoezxwiuyq9bz6jqgorrruak8zq3ob mylklrpxtvdyitbddybky7m 0jyqibr0nog8uxnj0udl troubleshooting certification verification certificate letsencrypt recommended alternative directories permissions generating 3674632835 successful 2815341474 configured generated dochngreq directory fullchain following redirects tls_close openhttpd authority typically challenge properly initiate firewall examples 81817869 finalize outcomes suffixed hostname confused services template account folders browser working running private follows replace comment process connect servers privkey without easiest trusted created request domains openbsd staging provide daemon htdocs notify client errors output common visits change status result option signed issues secure having token would names ascii https drwxr cause click order under 1tuxq wheel cache total authz block seems again howto first check acme will root port 3272 need text your file doas past have line that find copy 3937 didn here sure grep make move into must logs the 248 www v02 api eof url set var mar 172 org own don uri pem etc 512 dns yet web for nsd may ssl and oct bin few now cgi rsa any 65 v3 by up 06 03 29 00 be fv 16 11 05 22 cp so 80
+Openbsd.Ping:1628920394:  : misconfiguration troubleshooting investigation milliseconds investigated abbreviated transmitted statistics altogether networking equipment continent somewhere important sometimes specific arriving internet icmp_seq anything protocol received messages hardware problems somewhat limiting disabled firewall hostname suffers address packets careful perhaps average results because 2669400 require 2779223 example helpful latency however control getting openbsd command roughly ideally further issues should ircnow option 535545 broken around either server client faulty proper device reply takes title using 300ms block rules ping6 check wrong there still laggy feels quite above 200ms 100ms under 600ms force bytes press ipv6 then very also from high ipv4 both need test when with loss have same were fake sent data find send bind that abcd 5678 1234 trip will this case once your less ctrl rate tool done uses than org std 141 209 510 avg 548 173 687 max 244 min ttl may 958 801 251 636 but run 211 has can 236 252 249 526 250 248 230 836 264 174 out 550 see 227 869 39 of
+Openbsd.Netcat:1628920394: Openbsd.Mailopenproxy : troubleshooting mailopenproxy specifically successfully destination configured 1597224404 networking 1597224116 connecting connection afterwards establish recipient opensmtpd displayed debugging something correctly extremely following succeeded complete delivery hostname e57f9a36 identify properly accepted followed nickserv password sysadmin networks diagnose valuable address seconds newnick privmsg example channel message showing newuser sending process pleased foxtrot writing openbsd servers charlie subject because attempt replies warning ircnow should either signon record netcat entire errors relays simple letter domain appear itself client enter hello whois valid alpha shows delta vhost hotel check bravo modes esmtp world using email above title other knife 12345 gline often which means drone swiss reply motd 2001 b8fa 6667 then 9812 like 2562 will ipv6 root jrmu rcpt bind type your from f8fb 0db8 golf ping such pong with data ever idle this quit helo test look next just ctrl here time list join part meet echo when 3a85 11eb 2f18 f117 done rdns help tool that nice aaaa case code army 163 org and 220 web for can day 250 see any bye 221 143 are 354 not 396 311 312 378 318 379 317 has mom 38 b4 nc 86 up
+Openbsd.Unbound:1628920394: Openbsd.Znc : queryselectorall configuration intercepting nameservers originates aggressive everything javascript childnodes forwarding interface localhost generated regularly providing addresses available listening configure innertext innerhtml something specified segfaults commented outgoing computer spoofing randomly identity multiple resolver internal override dhclient indicate priority provided redirect document hostname section unbound running contain working problem instead network openbsd opennic another machine causing example include invalid enabled records control counter queries locally foreach caching srvlist command console browser quickly however default version access 604800 should refuse update button dnssec change safely nobody window google lookup secure ignore domain inside blocks option anchor remote sample except answer faster static public master giving bottom frame users allow check ipsec these lines trust hosts there https again start ipv6s rcctl tells which files title dhcpd comes ipv4s entry clear 10800 stale first zones store found click about cache cause make sure kept your also that 2001 will want logs this from age0 data port bind then used they view edit send aaaa doas have turn runs both nsec root auto part need base 3600 1200 sock uses hide test like well more find tail does 185 znc 101 175 112 183 etc 170 old 244 ip6 248 163 103 236 162 119 192 may 171 251 118 254 115 208 var web can key are div 142 217 172 see 127 dig top 141 don 193 111 got org yet get off 237 any yes db8 soa 117 168 132 165 227 vps set 144 169 154 212 86 29 by be 53 43 40 45 98 46 87 67 64 39 35 89 31 99
+Openbsd.Opensmtpd:1628920394: Opensmtpd.Configure Openbsd.Dovecot Openbsd.Dkimproxy Openbsd.Mailopenproxy : h5itbhzs73t4jshaj9yx6tf63yrataqugbxocx67wyekhch4zqiod6lkh userdb_quota_rule 83bd6b3b1669649f misconfiguration a8d16cd2144222fa troubleshooting check_spammers authenticated dkimproxy_out mailopenproxy check_fcrdns alphanumeric inconsistent credentials independent permissions mtaproxy511 temporarily information check_rdns additional abnormally california relay_dkim connection postmaster reputation characters historical connected mtaproxy2 sometimes mtaproxy1 whitelist localhost following opensmtpd firewalls fullchain listeners sunnyvale assurance separated temporary configure passwords exploited addresses available including disabling username enabling checkout newlines _dovecot messages example1 mailname filtered outgoing hostname digicert ifconfig yahoodns starttls virtuals 00000003 starting hundreds redirect delivery tempfail purposes response receives provider possible s_client managed domains folders maildir useradd senders similar aliases storage nologin contain packets warning require returns nothing maillog express happens specify openssl limited openbsd special offline signing smtpctl encrypt symptom dropped because suppose showing timeout section blocked working pkg_add install deleted private version consult letter answer cvsweb blocks hashes socket inside trying passwd reason unable errors action ircnow adding bottom create sample proper _smtpd should marked server victim source result please tables having verify entire exited egress extras tagged single spool depth point reply comes known hosts chown setup issue chmod using queue being ready esmtp match vmail these fruit phase colon admin tries child files route attic users state often 10028 rcctl https there based steps evpid 10027 email blank 39035 16h2s delay store guide which mta6 mta7 easy lmtp test your port mta5 like from rcpt junk doas stop kept page this will note s843 free been date have says that when bind many mask pony lost ipv4 2001 must vio0 make sure mean html want with ipv6 root high also sha2 else good hang plus oath used goes pop3 imap look take 1000 jrmu into safe sbin only each null see etc org src var pki 168 net dev 250 587 due too fix and may dec 192 via pem one 127 cgi db8 jan two rev faq 451 650 www am0 lo0 get 15s 195 204 vip 104 ne1 but way can bf1 gq1 vps 220 228 106 are 395 key 47 55 33 mx by 77 29 my 17 2b rx 1g
+Bouncer.TurboIRC:1628920394: Freedom.Freedom : proprietary screwdriver id978108367 serverlist abcde12345 connecting connected supported password consider username turboirc software servers2 address network details example bouncer message minutes freedom appears protect corner attach should ircnow client source wrench saying using apple https title right open icon does nick your edit then john next fill done left type wait apps with 1337 want home look like tap top png org see and znc not yet few com opt for new ssl be if
+Openbsd.Opensmtpd-2:1628920394:  : hd17xlkub4doe3bjvn4v1uyvf3 tldqbkvdtccbdta1a6nzna1zue _rc_write_runfile _rc_parse_conf configuration authorization check_fcrdns smtpd_flags configuring check_rdns additional hostmaster relay_dkim _rc_quirks considered local_mail opensmtpd describes operation dkimproxy mailboxes ircnowguy following therefore restrict possible endpoint contents contains creating creation services security rc_check document _rc_wait rc_start includes standard accounts receive mailman example without allowed replace domains dovecot require connect created aliases message private virtual default process openbsd action listen filter passwd vusers server system egress access option remote doing match spool touch chmod hosts 10028 which using empty grape phase regex 10027 abuse admin files table other rcctl first stop used from case must lmtp root rcpt doas this need fill them data step junk will mask port cert also size only next mbox part etc 640 you com pki are var our ssl any pem lo0 tag src tls 127 org 587 but let key max of ok rm 09 2b 5m 25
+Debate.Webirc:1628920394:  : encountering misfortune browsers internet explorer graphics handles android backend webchat nothing windows ancient because regular client stupid single market actual phones decade server reason simple itself webirc script debate should sense slick brain write every jrmu does that make more than work form with have want just will what text file then this real cgi 100 but all old bnc of 05 15 04 if 98 02 to 6
+Mango.Mango:1628920394: Mango.Todo : 0x7303a746e98626e7c82b133625eca7a4aff8fb8b 1jay2v7rnfndqmttf6iqk1kcsrsfrr1uoh ℓσ¢υѕтℓσя∂ ѕιℓєη¢є щσᄂᄃөmσ documentations administrators вαутυ¢н collaborative configuration registration iяᄃпөщ connections effectively application appreciate successful interested experiment federation maintained unlimited resources connected community donations currently supported available languages governing upgrading volunteer features services innovate feedback software favorite friendly together unstable platform provided protocol etherium thriving multiple remember spending networks donorbox mλпgө changing members bouncer request channel servers contact android openbsd windows improve details consist without devices english include bitcoin quality benefit totally located shortly welcome develop number access client unites ircnow donate ηιχ system melayu bahasa wallet crypto making useful easier common assist please kindly famous mobile better create guided truly mango great again linux users https topic agree learn terms staff which ready added group chats their build today gяу keeps wants speak өяg logo time real they that team well will ƭө part free name todo text list your have self them help goal thru »» more also make used here good sign this from than easy upon once type live york may how new run org mac can usa ios not who σz say ask any fun 20 if by
+Openbsd.Buyvm:1628920394: Openbsd.Botnow Openbsd.Dns Openbsd.Vhost Openbsd.Staticnet Openbsd.Install68 : automatically alternatively installation instructions nameservers information configuring corruption networking configured absolutely delegation addresses install68 necessary partition dedicated upgrading staticnet rebooting delegated teammates operating multiple hundreds shutdown remember filtered settings hostname spinning generate bootable hardware software ethernet properly manually password backdoor probably username damaging internal graceful openbsd entries changes console nexthop gateway scripts records subnets virtual volumes matches default without needing buttons because browser instead patches restart contain mounted happens running offline suspect advance warning delete public assign attach stable status ddosed please vhosts enable forced routed should virtio botnow follow values result unless device double driver booted system before notify either better search recent ircnow bottom inside manage upload order panel apply error avoid using files reset click power after check while about enter given later doesn first begin these right state title buyvm share users allow model fruit guide quick https rdns gear make icon then sure note disk size will they copy what most main ipv4 this save also your ipv6 very more want qemu else time case doas must cpus ctrl from data that only have lose when read aaaa each used them api png log see and can ram top ips iso vps 13b may has non get was kvm web one any org new cd go 03 14 08 09 10 48 06 02 07 by 01 04 11 05 12
+Openbsd.SSDP:1628920394: Openbsd.Tcpdump Openbsd.Buyvm Openbsd.Pf Openbsd.Ddos : lanhostconfigmanagement amplification igddevicedesc a94a2ae2af72 94103e83c76b unreachable communicate discovery attackers broadcast beginning whitelist universal advantage amplifies portable messages firewall publicly solution redsonic services location d78a3592 protocol filtered original disabled ebf5a0a0 tcpdump packets traffic schemas openbsd devices sending address network analyze exposed defense attacks control printer content records visible useless example router during coming search master should sample remove 409684 follow server ext_ip 411700 except better simple 411888 411751 source larger floods domain 46465 51372 58810 cksum 60583 16546 shows first block cache phone other 49152 could linux buyvm agent above title would these rules quick reply using offer check ports spoof exist https guide order today zones panel icmp ddos upnp 1900 drop ssdp also 2020 date 1800 pass this 1dd1 want will from them make sure that have 11b2 ae53 user uuid a93f take plug play your some here with much than 0xc0 pcap tell many they org 192 urn see dns usn 168 vtw udp etc nls 251 198 put and sdk for 255 250 are ips not ttl non 146 tos web len 239 nsd var 8lh 119 498 ntp 526 has can few 200 172 xml opt gmt max but sat jul pf 47 ok df qw 01 36 56 vq mx
+Openbsd.Amplification:1628920394:  : preview_com_shadow_battle_superhero 065f6815140000d8d517335000000001 protonsql1_totohot 5f127601beabd8d5 amplification language_code g5_apms_data bot_command application 3995777189 1400457101 connecting 1400457072 1306862229 1855138974 1605207260 first_name 1203629066 background cloudflare message_id apkdl_bot timestamp ipcountry 731155732 forwarded 731155849 update_id entities 98363691 mirjalol data_set 78810276 database checking services data_10 railgun content sending bgcolor openbsd request visitor data_8 length data_9 center 478357 coming 594535 server packet origin source scheme is_bot layout data_5 data_2 data_q data_3 data_4 data_6 data_7 457417 33912 false agent ivate 29089 shows https thema tmenu above basic mysql 57129 52288 41000 33914 type case 1601 this allm from loop port 1500 know subv both subh 3306 sygp that post host fset chat user json text 1448 1200 subw size 251 108 119 win 168 331 153 719 php 192 nop sum tcp 208 198 243 255 195 199 cdn etc def pw4 nav ray see off ams 54 cf 64 ok uz 80 we by qa
+Openbsd.ACKFlood:1628920394: Openbsd.Tcpdump Openbsd.Police Openbsd.Buyvm Openbsd.Pf Openbsd.Ddos : acknowledgment periodically acknowledges investigate synchronize established connection difference performed beginning handshake following attacking resources initiates firewall filtered disabled ackflood publicly addition targeted receives received attacker packets tcpdump openbsd replies exposed content analyze sending payload visible contact servers process records traffic defense bad_ip subnet ext_ip device ircnow should cannot 318889 floods police 318888 sample during handle random normal coming manage client master remove accept occurs 16440 56815 panel class these quick using 42028 buyvm block rules first clues zones 65117 10304 61968 guide 15413 17347 could proto being check 22693 https ports above 14808 57643 title sends three there lacks every waste start 2001 2605 hlim f8de will 19c6 1e63 6400 ffd1 conf 5a1d 0x14 ipv6 real only 6820 2b6f c23a 769b 6570 user this that must 8369 want them from fake 6443 797e c8f3 e29d also afa4 565f 994c 1970 over same look sent bb48 with 873f ddos adba 76b0 have pcap data 2940 5fe2 fb93 3fd7 sure 52b8 ea08 time then 305c been they many drop make 7b61 8030 655d 59f3 9312 664d 9005 var db8 nsd len sum 237 how you ips are web see non has dns run dig fig org may who him 236 dcy 246 two put way udp etc 245 lot 0e 1o pf by 32 8e fm of 7t v_
+Openbsd.UDPFlood:1628920394: Openbsd.Tcpdump Openbsd.Buyvm Openbsd.Pf Openbsd.Ddos : application unreachable destination remaining blacklist different whitelist unwanted udpflood firewall publicly filtered fragment disabled discover attacker targeted packets openbsd sending content another similar control exposed tcpdump defense visible records analyze easiest process master manage ext_ip random create server allows should source remove 051373 domain follow during notice 081976 sample 38699 17710 waste these buyvm panel 57760 guide block https first check reply shows title zones using cache would proto quick ports above there ddos drop with also pcap sent time this them from will then sure make icmp rule that good pass have 1935 0x48 0x28 flag 198 way 192 168 see you nsd any dns non 251 119 ips are 200 ntp but can 341 web tos 369 len ttl don var net 389 417 172 set be ok df qw of 50 02 eh
+Guava.Packages:1628920394:  : internationalized synchronization implementation 20200427211949 authentication multithreaded decompression automatically repositories manipulation continuation manipulating unencumbered customizable multilingual asynchronous libunistring distributed pkglocatedb lightweight intelligent replacement accelerated interactive programming wkhtmltopdf libutf8proc documenting rogrammable downloading interpreted imagemagick enumerating manipulate subversion bitmapfont javascript minimalist compatible compressor components expression typesetter libunbound validating collection strongswan extensions exceptions conversion newsreader installing additional management extensible postscript signatures libchewing 20200120p0 eventually processing libarchive accounting structure directory formatted processor terminals patchsets documents computing scripting algorithm utilities standards responses geomyidae zstandard microsoft converter mercurial profanity providing dkimproxy fetchmail arphicttf retrieval generates multitail opensmtpd djvulibre interface compliant companion mirroring configure bandwidth platforms libpinyin character libraries coreutils generator reference iniparser libcares features internet idna2008 revision compiler extended requests oriented software database advanced retrieve licensed language protocol lossless packages blake2bp 20190117 blake2sp powerful function readline programs resolver japanese embedded notation flexible abstract antiword libiconv routines gnuchess libtasn1 converts libident displays makefile autoconf phonetic docx2txt reviewed portable newsboat automake transfer xlsx2csv berkeley designed security password truetype 20190702 inspired nghttp2 library strings openssl unicode wrapper 9100hp2 generic control various privacy libwebp sqlite3 general purpose utility working pkg_add chinese modules mcabber support foreign libjpeg command outline jsoncpp checker parsing openjp2 unified manager console hashing oidentd toolkit drivers regular sorting 0pre4p2 reading clients servers modular libidn2 rfc1413 threads jbigkit runtime browser nhanced mariadb bouncer elegant extract 9rel1p0 dovecot deliver weechat compact libxslt python editor extras verify domain zenhei record bourne plugin alpine libwww object source jasper jabber apache simple aspell ledger double images gopher window screen webkit no_x11 access update daemon libraw 50p3v0 libffi ispell libxml method argon2 neovim rlwrap useful banner system msword 21p7v0 giflib google quirks figlet decode encode ngircd mobile tcllib tcltls filter create syntax viewer links while https posix mysql shell libb2 names based files 09p20 libuv class rsync rules gnome codec 050p0 rhash ikev2 tools glib2 ascii print gmake input gnupg build cvsps 2p0v0 cmake block guard bzip2 xpath boost again trees groff fonts icu4c clone emacs elvis 2p2v0 epic4 3p0v0 using pager layer unzip cyrus troff ipsec slang ircii relay irssi lcms2 ikev1 anthy xauth entry pkzip iftop color usage guava 19pl0 text big5 pico 27p6 11p4 mutt 37p0 perl fast lzma mosh 11p2 xmpp 86p0 easy pop3 mawk imap 21p5 pkcs with real from sasl bash 2222 hotp deal quan 41p2 totp node pcre peer free 27p0 oath 07p0 adds song wide many 69p3 27p1 zstd nano 2000 curl side atom feed 1p10 05p2 77p2 32p1 0p13 test rust 10p2 tiff more htop tcsh over game tdom 43p0 23p4 sums 23p0 ruby 1805 gawk 34p0 sacc simd wget self 17p5 lynx 12p0 pop2 kpop 03p0 16p0 slrn sic low wqy lwp 8p2 wen dbi 6p3 vpn 641 eap 5p0 dbd znc cjk php py3 w3m 3p8 png ftp 3p3 pip via 440 trn uim fdm 2p5 5v0 7v3 tty otr 2p4 art 1v0 lz4 0p5 lua bsd 6v1 0p4 api 9p0 5p1 apr 8p1 pgp p11 git got 7p3 dns gcc nvi 4p3 xz 30 67 15 62 46 98 jq zh 31 28 gd 60 45 uw v8 26 gb
+Guava.RecentChanges:1628920394:  : recentchanges february december packages quofan guava st13g 2021 jrmu todo 2020 23 by am 14 06 at 19 10 47 30 03
+Debate.Linuxflaws:1628920394:  : 8a104f8b5867c682d994ffa7a74093c54469c11f linux_foundation representatives linuxfoundation characteristics infrastructure firstdonoharm contributions homosexuality standardizing participation corporations contributors introduction exploitative contributing acquisition simpletable development consultants proprietary constitutes electronics intelligent environment communities criticizing disagreeing orientation nationality accountable maintainers affirmative derogatory expression experience appearance developers censorship harassment controlled regardless techrights opposition disability officially understand reasonably repeatedly commitment aggressive contribute linuxflaws protecting currently wikipedia donations insulting political financial microsoft corporate directors collected community nominally violation indicates disclosed canonical dedicated operating influence doesn’t fostering welcoming conflicts ethnicity promoting education blackrock accenture panasonic according supported diversity determine companies sponsors possible networks 18011854 identity programs software landmark theverge facebook annually covenant trolling torvalds comments personal linkedin desotech although pantheon interest conducts contract problems qualcomm acquired interact releases religion everyone trillion benefits explains freedoms activism economic entirely sortable licenses promoted actively millions coraline platinum platform affected received slashdot consider project towards billion however defines nothing website article members because renesas fujitsu through tencent complex samsung ethical secrecy adopted oversee systems hitachi approve playing provide funding alibaba fellows relates amateur extreme company quality process himself include comcast creator hartman changes percent attacks serious implies justice founder lunduke dollars several require silence unknown massive imagine appears 1941256 toshiba interns average border kernel redhat google debate report longer linaro social source people almost modify become oracle arista sprint silver toyota return citrix should huawei vmware closes making author former around status future latter ruling gender decide banned anyone debian donors freesw orange merely action amazon hybrid claims hidden forced itself reject stated cannot donate unfree states before pledge ehmke would linus https these court power width early class using which human total write trust sucks april still bryan story users worth least shown break takes zdnet board socio about while level title money label kroah azure cisco voice posts cloud aarna baidu world being field this ways code veil from like that they page open suse doky dell have 100k gold them 2020 2014 500k fees help here been hide many 2018 blog make lead greg what fact even gets 2015 also such tens give well role uses with five body size oath race poor when into used will pays then 2016 view lost need none made sony uber 582 www 338 too org why 515 619 995 938 has may sue ibm ada bad top nec yet 571 987 384 who was 239 245 000 emc amd usd say git scm pub 34 by 22 06 07 08 30
+Debate.Cash:1628920394:  : coronavirus shopping remember weforum nytimes credit debate really agenda https cards money 2016 that what 2020 cash your html org can www com 11 09 is
+Debate.Facebookdanger:1628920394:  : strategyincluding anticompetitive facebookdanger misinformation monopolization conservatives investigation divestitures facebook’s relationship developersto headquarters maintaining ycombinator competition acquisition alternative advertisers cooperation “facebook conditions technology injunction europe’s agreements imposition california networking systematic commission coalition instagram attorneys messaging something illegally eliminate complaint following permanent corporate francisco consumers personal benefits monopoly avoiding alleging deleting labeling district columbia 25363366 deprives whatsapp millions 25435603 software olitical election you’re migrated removes seeking don’t company federal promote nytimes privacy current kingdom reuters through general started newsmax choices twitter threats pushing engaged conduct alleges require checked lengthy social course debate moving leaves united switch mobile rumble parler coming things muting states bannon linked assets shift users among harms their irish reach court could years other https rival trade today rules every media going sites “if terms pages since sides them apps both html just pick that sued have jrmu sues item 2020 fair with long 2014 like 2012 guam post this feed fact adam said will into laws ftc and ” san has few one gov get www out 52 40 11 55 29 09 58 46 42 37 39 24 04 15 17 uk 21 38 up my mr
+Debate.Microsoftdanger:1628920394:  : microsoftdanger applications arbitrarily experience regardless enterprise agreement approved anywhere nowadays services announce android connect windows virtual desktop excited joining freedom because laptops acquire device client debate signed censor github future access remote going https i’m cloud based html5 other azure bring 2020 jrmu blog very type also most from oses have uefi your byod with boot only that will this then spy can web com ios own npm has bad for mac 45 16 13 49 53 03 08 32 38 10 44 23 11 09
+Debate.Nodejstrap:1628920394:  : nodejstrap absolutely javascript agreement software announce industry response terrible harmful excited joining already painful browser thought boggles acquire enough recent anyone things server debate happen signed github https i’m piece uriel times worst earth hasen 2020 ever good idea jrmu blog judy that this like mind the why npm was use cat org 45 16 03 to 46 04 44 31 38 49 by 13 53
+Debate.Appledanger:1628920394:  : search_social everyone’s additionally appledanger “theft” transmitted ycombinator arstechnica possession tremendous identifier gracefully enterprise corporate september dismisses antitrust unsettled apple’s crucially connected processes invisible you’re activity computer portrays versions internet politics exploits arguably 25074959 didn’t 20201112 although released dispute derives bluntly hearing billion percent nothing can’t reality without current program instant working supreme prevent nytimes offline lawsuit inspect realize because rogers motion modern abused people argued should berlin itself little failed snitch debate permit belong it’s gaming stated claims bypass simply stored server reader hobble dollar editor really silent launch apples unique noted hands casey funds rules block level macos yours those ebook sends turns fails being today write power known sneak https still title games value wants multi judge court robin epic slow jrmu when that this each code hash hood text from fast path them will apps vpns news item 2019 apis same html also were they open only isnt but don way big sur run got was hit for www any pay log 03 04 09 16 38 30 05 13 33 27 37 31 22 06 21 26
+Debate.Python:1628920394:  : python_purges_master_and_slave_in_political_pogrom discrimination theregister terminology precaution associated issue34605 altogether linguistic difference community defensive diversity recommend avoiding software argument wrestled follower similar slavery couchdb replica primary swapped opinion carried reverse reasons changes pushing project forking debate drupal either little people django traded useful leader pretty really litmus would these which words terms after https group doing redis 2014 jrmu test bent also that call care make want nice they mean some year last this with same bugs 2018 don www but can see out org any try 11 23 03 09 47 50 02 49 48 my 36
+Debate.Hatespeech:1628920394:  : unconstitutional homosexuality riks_klagaren pentecostal hatespeech prosecutor overturned prosecuted acquitted sentenced christian ake_green wikipedia appealed decision february november district opinions critical someone because supreme swedish general sermons appeals against hovr_tt prison arrest guilty __re_n sweden debate pastor court ___k_ march month https which under found also this g_ta like 2005 1941 jrmu born june _ke the usa org and who was him law but 11 36 of 10 29 57 13
+Debate.Freespeech:1628920394:  : communications reclaimthenet 36684cda0ca8 transparency illumination theguardian _extremist_ censorship freespeech announcing “history technology showthread forgotten describes instacart president wikipedia “i’ve relatives aliendata publishes deeplinks providers suppress suspends requests quagmire that’s shoppers theverge machines jennifer revealed 21070403 received articles election dominion activist facebook problems details process decency friends founder reveals mediums section dependi another uruguay medical silence attempt quickly against report people ruling debate really rights reason police strict voting things public person remove policy strike google swears social revoke quite worst buyvm force https human pages jimmy wales first would fight about never legal forum seems cloud media steps biden abuse 10110 after jrmu 2020 what with tell site five laws been some time kind good bans 2014 zeng said like also too and its can ” www one has eye joe any say new php try ovh irc aug 230 eff … bad 18 51 of 09 52 eu uk 00 06 53 17
+Debate.Xmlflaws:1628920394:  : thecontentwrangler constipated constantly compromise paragraphs unreadable structures obviously political dyslexic balances problems standard software ordinary xmlflaws forsyth machine opening “most matthew charles classic harmful verbose essence equally closing wadler better i’ve “xml typing solves editor health debate “the having looks 9fans entry lists i’m think makes needs about being nerds still might write https helps first both jrmu tags much even like your text 2016 suck does have just when time type this well phil popl 2003 unix hard real seen also not cat org raw one why too two ” man 02 35 04 40 25 59 if 18 by 33 27 30 23
+Debate.Wikipediadanger:1628920394:  : wikipedia_signpost wikipediadanger representation news_and_notes brainstorming increasingly organization professional controversy discussions considering understand rebranding objections conference governance foundation apparently community elections influence interests wikimedia according summaries expertise position november facebook takeover removing drafting movement strategy control planned holding several greatly biggest problem against changes founder minutes removal trustee inching outside rather reduce values crises weekly future debate review bylaws posted toward google think brief jimmy wales board video https years there clear fbook lack very with talk jrmu this ucoc wait docs they than made 2020 mike peel that have seat amid risk coup etat past been utc was our may who now few its yes but via wmf 53 03 00 21 57 29 11 42 25 06 36 19
+Debate.Slackdanger:1628920394:  : slackdanger ycombinator slackifying salesforce definitive agreement 25272533 25269934 startup acquire debate email signs https sacra front item news jrmu the 03 42 id 54 41 3b 12 07
+Debate.Controlcomputer:1628920394:  : alltechconsidered controlcomputer circumvent assistance autopilot 523024776 features theverge software 21136699 sections restored tractor farmers debate locks https model tesla owner 2020 ways look used 2017 www for org npr 09 04
+Mango.Packages:1628920394:  : authenticationresults deprecationmanager validationcompiler globaldestruction internationalized strictconstructor implementations contextualfetch administration multiprecision checkconflicts communications compatibility automatically bidirectional multithreaded accessibility decompression specification manipulating representing unencumbered distribution implementing organization programmable spamassassin manipulation constructors overloadinfo preservation computations asynchronous libunistring cryptography notification localization numerically composition accelerated constraints progressive subroutines interactive programming certificate orientation inheritable identifiers information serializing recursively replacement lightweight overridable abstraction compilation integration expressions indentation subprograms interpreted letsencrypt permissions components compatible attributes conversion endofscope additional strictures persistent connection extensions manipulate overloaded pigeonhole signatures stacktrace compressor extensible minimalist domainkeys collection mediatypes libarchive mailfilter structures converting freezethaw arithmetic introspect algorithms parameters robotrules exceptions processing references installing generation phpmyadmin formatting platforms interface singleton someutils modifiers libraries accessing inspector character graphite2 filtering databases negotiate datatypes detection responses rendering oniguruma determine arbitrary generator operators submodule automated moreutils functions compliant configure graphical computing deparsing opensmtpd standards directory validator dkimproxy optimized autoclean namespace libsodium addresses utilities separated emulation zstandard universal providing associate throwable variables efficient privilege coercions lexically naturally statement framework scripting anonymity alternate generates modifying protocol portable libident lossless provides libevent metaauto blake2bp desktops blake2sp multiple language libiconv embedded powerful features finished resource retrieve priority creating torsocks archives advanced floating idna2008 accessor inspired licensed handling aliasing oriented warnings patricia bindings resolver 000005p1 20140330 validate complete 003004p1 000014p1 040001p1 identify checking 001013p0 timedate 200013p0 006006p0 packages exporter steroids af_inet6 relating 001004p0 20200331 triggers datetime encoding subclass timezone newlines decoding closures compiled combines allutils singular 004002p0 messages services 006002p1 sharedir 002002p0 location autoconf contexts harfbuzz password chrooted automake makefile graphics transfer 20190702 fallback symbolic runtime daemons servers display numeral toolkit unknown dovecot mozilla several execute merging offline maxmind mariadb library headers signing unicode modules complex fribidi writing systems lookups utility hicolor nghttp2 entries shaping clients wrapper correct socket6 sockets regular engines caching support netaddr manages subnets compact oidentd stashes defines openssl libjpeg working drivers cleanly special declare classes homedir 17028p0 listing general purpose concise doubles ieee754 printer colored objects methods fetches unified detects integer jsoncpp maybexs inflect utilsby control strings missing colorls require pattern extract privacy gettext emulate cookies variant charset optlist sorting command another reading numbers derived foreign routing hashing libidn2 libwebp rfc1413 scanner algebra imports sqlite3 modular pkg_add bouncer network browser garbage uniform moniker librsvg defined python policy libmpc pixbuf sender libpsl linear choose rspamd select public mysqli higher lingua libwww images quirks suffix simple cpanel handle plural 50p3v0 locale encode argon2 digest expose safely dumper create 52p0v0 update pretty unpack option endian floats geoip2 driven useful tables tagset parser jasper locate libffi random snappy giflib 5001p0 bignum extras ssleay luajit google layout proper femail bundle vector verify params easier robots ngircd editor 2020p0 faster viewer libzip custom libxml memory figlet specio thrown banner reader speedy helper writer common modern 2911p0 gnome devel error 928p0 catch clone plrpc theme magic pairs value files quote times which build mango unzip https gmake cmake dates parts 412p0 117p0 tools pkzip based pager 204p0 marks cblas 428p0 stuff moose 899p1 guess pcre2 redis 016p0 loads 068p1 level basic boehm ascii store mldbm order 009p0 3p0v0 116p0 using onion glib2 079p0 rhash bzip2 style sieve pango fatal block cairo 987p0 110p0 050p0 libuv trees 022p0 libb2 hooks cache icu4c after codec limit about point perl5 guard gnupg irssi 10p2 27p0 36p0 most from 58p1 your 05p0 tied keep turn 29p0 25p0 14p0 08p3 core 35p1 18p1 game with 07p0 html copy 41p0 adds 41p2 like side leak mpfr only acme curl ipv4 88p1 ipv6 pop3 imap wide 12p2 11v1 that 22p1 need 48p1 role pico 30p0 tiny nano 03p0 38p0 46p0 07p2 08p2 76p0 16p3 just 51p0 32p9 11p2 math 21p0 user 62p0 very htop moox 67p0 lzo2 cidr 26p0 into 21p1 blow 2013 eval fake 24p0 10p1 mime 28p2 flag 03p3 used 32p1 dbix 69p3 lzma sums many 23p4 23p0 wget 44p0 simd tiff 01p8 real test 0p13 prng sudo hmac 03p1 21p2 gtk2 1805 72p0 20p2 plus 16p2 40p0 zstd jars fork re2c bsd 641 gmp lz4 dot 0p4 dbd w3m dns try 1v0 vim 3p8 5v0 via 011 0p5 ftp 8v1 znc nvi 4p2 png 0p6 2p4 its gcc pgp sax lwp 440 gdk way 0p7 txt oop spf mro 5p2 5p6 uri atk 37 xz tz 39
+Guava.Guava:1628920394: Guava.Todo : 3278bdc14c74dd4e85732b776d0e5b1d guavateamircnow verdadeiramente verdaderamente collaborative correctamente cointelegraph compartilhar padagüenses aprendizagem colaborativa colaborativo disponíveis administrada experimento aprendizaje disponibles actualmente procurando configurar atualmente português portugués benefício portuguese background plataforma ofreciendo oferecendo servicios padaguans esperando operativo languages configure operating interesse usuários currently preferido liberdade gratuitas elección cualquier problemas serviços compartir finalidad available español favorito properly tableend oferecer aprender personal objetivo espanhol servidor orientá accounts grupales offering internet ayudarte garantir qualquer services usuarios contacta nosotros asegurar platform favorite interest learning swedish storage guiarte looking acceder escolha english podemos liberty cliente tópico spanish haverá reading cuentas estamos abierta nuestra visión leyendo esperas idiomas nuestro inglés aparece channel support operada network waiting uploads sistema vontade contato vários openbsd través tenemos conosco inglês obtener ingrese poderá benefit ingresa quieras soporte listado inserir suporte tiempo access 0a3d62 futuro habrá visão podrá system create choice muchas c7ecee equipe creada shells dff9fb ¿qué cellnr muchos pessoa acceso c44569 server guides ed4c67 ea2027 entrar quiero future vision desees queira talvez aceder paypal puedes acesso deseje contas assure center c8d6e5 listed goiaba aberta pmwiki ee5253 desire guías apenas style color habla sobre sueco busca lendo você basta dizer vamos nossa está entre canal posso ajuda https quero ganas criar estas aquí puedo parte apoio texto grupo temos guias obter tempo chats about maybe crear wanna temas staff speak share eager apoyo would there users desde group truly topic ellos free não aqui just many this goal rede your todo para view what with real from live over mais time will that isso rock fala more pelo want vivo hola help más ¿tu esto solo diga azar sino reto só una but lá seu del say meu get sem not uma faz run who hay dos png aim by s3 à ao if
+Fig.Log:1628920394:  : 1610018494 hello world fig log
+OpenBSD.RecentChanges:1628920394:  : recentchanges openbsd january perl dima 2021 cpan by pm 04 at 01 12 48 09
+Openbsd.Perl:1628920394:  : permissions accordance site_perl libraries installed something incorrect xsloader required openbsd libdata changed opinion suspect minimal adjust seemed floods access better result caused always custom encode module think about maybe error umask value perl5 wrong local using amd64 there chmod later buggy write found perms path this task jrmu with dima like bugs able even down dirs user that doas only line need auto cpan what more nntp file have was had for inn not you its log rxw usr how 755 fix did can 59 pm 58 20 if we 19 96 44 42 43 25 12 ok my
+Ircnow.Ilines:1628920394:  : darkshell network ilines ircnow 3492 2046 c207 2a02 ipv6 zeus 219 185 znc 203 254 212 173 24 64 75
+Marketing.RecentChanges:1628920394:  : recentchanges independence opportunity enterprise marketing february founders republic religion recruit freedom memes rules march 2021 jrmu may 04 at 13 15 by 06 59 26 am 45 11 pm 58 12 37 28 10 39 01 40 09 14 52 30
+Openbsd.ZNCDaily:1628920394: Debate.Dogfooding Bouncer.Bouncer Openbsd.Less Openbsd.Ilines Openbsd.Irssi Ircnow.Networks : configuration disconnection reconnections successfully disconnected instructions controlpanel certificates troubleshoot fingerprint investigate maintenance validation improperly configured connecting dogfooding attempting vl0gy6rv79 authorized encrypted addresses solutions plaintext globalirc hostnames repeating following recommend indicates sometimes zncdaily manually networks disallow trusting throttle stopping adminlog messages continue everyone clicking usually failing example bouncer because request openbsd command problem closing slowing servers through correct without warning consult returns expired moddata disable trusted similar dealing section bottom ircnow attach scroll debate secure adding errors should caused client banned search manage likely ilines glined please unique either prefer admins switch typing fixing irssi write issue abuse certs below there using tries which front check user1 users fruit https lacks title means these shows vhost less port 6697 this 6667 will that make sure want from page uses link znc2 edit next znc3 down test znc4 your team sign must 2021 home than case doas znc5 save znc6 soon each been ipv4 when znc1 only ipv6 list find over most then hope does not has web can msg may org see png get but bnc for ssl are 256 run sha its let day bad 52 15 by 01 03 08 12 of 24 06 55 09 14 19 29 23
+Openbsd.Irssi:1628920394:  : disconnected connessione autorizzata autorizzed connection vl0gy6rv79 globalirc minutemin extremely valuable problems tusaichi diagnose unknown closing technet network quickly openbsd police questa error lined user3 irssi title abuse tool link from this 2021 251 not 119 198 for and non id su 01 09 03 23 24 26 15 18 81
+Nsd.RecentChanges:1628920394:  : recentchanges masterslave configure february mistera august 2021 jrmu zone july nsd at 04 by am 42 09 12 27 56 pm 11
+Unix.RecentChanges:1628920394:  : recentchanges workethic february unix jrmu 2021 08 by am 48 at 05 49
+AndroidEmail.RecentChanges:1628920394:  : recentchanges androidemail june 2021 jrmu 29 at 03 11 pm by
+Thunderbird.Pgp:1628920394: Pgp.Upload : independently thunderbird fingerprint acceptance encryption generating unverified signature encrypted clipboard importing selecting uploading decrypted keyserver something digitally carefully security continue accepted receiver generate settings existing contents tutorial imported details website certain openpgp require manager correct message scammed account besides signing warning confirm secrecy emails public attach window verify claims method secure better reason bottom forged entire should signed person create typing click comes truly loses photo visit close above phone never again inbox tools paste there panel write check show been view with edit that step from then have chat this your call into like copy user when need will ways send sure read left make want real life youf png → but can not and may url top tab was ⌘ don irc 06b new add two now yes has row get 09 by 11 10 go 12 08 07 14 01 ok 04 05 of 03 13 my 02
+Marketing.Independence:1628920394:  : patrick_henry_speaking_before_the_virginia_assembly washington_crossing_the_delaware_by_emanuel_leutze 150th_anniversary_of_the_liberty_bell make_america_great_again_hat_ raising_the_flag_on_iwo_jima barack_obama_hope_poster sic_semper_tyrannis 21_nara_535413_ spangled_banner representation _restoration_2 2827149010964 2c_1926_issue livefreeordie gonzales_flag comeandtakeit installation independence we_can_do_it application 2c_larger_ installing seperately wikipedia wikimedia marketing continent the_star together republic hipsters software taxation british commons without replace divided uploads country 2c_1851 network servers battles attach turkey _edit1 whites 1584px coming change united regret 1182px ircnow 2c_mma 1200px source phone fight these stand thumb began shoot until tread death their amici times suits https libre page1 lossy chans users souls rosie 463px false zurna brave 640px 800px ifend photo fall give this join home have that keep land life code host tiff from eyes jpg org new web png but nyc don sea you see yet not men let fd my b0 29 pc c1 df c7 55 95
+Marketing.Enterprise:1628920394:  : enterprise gutenberg marketing dollars iwojima images attach files 16960 https your work tax org www jpg 645 png 558 260 467 tb
+Marketing.Freedom:1628920394:  : liberty_bell_2017a valley_forge_cabin throughout marketing freepress gutenberg wikipedia wikimedia proclaim gazette commons storage freedom thereof attach shells upload castle source images https thumb 940px files 16960 users 640px beep home png lan jpg 255 www log man his let tb 37 a3
+Minutemin.RecentChanges:1628920394:  : recentchanges minutemin questions bootcamp ifconfig february progress training baytuch august server march creed april 2021 jrmu game code july duty mkf 28 by at pm 35 03 06 42 18 29 12 53 04 11 10 08 59 24 33 40 01 26 16
+IPv6.RecentChanges:1628920394:  : recentchanges overview february ipv6 2021 jrmu 14 at 11 09 am by
+Thunderbird.RecentChanges:1628920394:  : recentchanges thunderbird february connect jrmu 2021 pgp 19 by at pm 09 36 am 44 04
+PuTTY.RecentChanges:1628920394:  : recentchanges puttygen connect august jrmu 2021 05 by pm 23 at 09 24
+Znc.RecentChanges:1628920394:  : recentchanges bejelentkezni troubleshoot chroot69 install august real back 2021 jrmu july i18n znc may mkf see 06 57 at 03 by 36 am 01 to 05 12 09 29 52 pm 28 11
+Immigrant.RecentChanges:1628920394:  : recentchanges immigrant welcome march 2021 jrmu 05 at 06 59 am by
+Netizen.RecentChanges:1628920394:  : recentchanges netizen rights become july jrmu 2021 june 14 by at am 03 pm 47 09 10
+Mail.Openrelay:1628920394: Openbsd.Dnsbl Openbsd.Dkimproxy Openbsd.Netcat Openbsd.Opensmtpd : misconfiguration configurations ircnownetwork unintentional destination blacklisted afterwards configured censorship improperly relay_dkim rejection recipient opensmtpd dkimproxy openrelay addresses sometimes crackers accepted external delivery messages e57f9a36 spammers referred followed complete internet trojans viruses malware receive example foxtrot charlie proxies openbsd domains configs process sending pleased subject spoofed bangcat coconut because testing provide privacy another appears similar reading invalid ruleset chances letter relays netcat sender though notice anyone server forged should itself beware bypass action banned sample either abused allows match hello comes often gmail could these title email worms enter alpha bravo delta hotel dnsbl being esmtp users check using never local hosts trash flood above stop quit your here even will says golf only meet from rcpt jrmu also data with line echo when want helo this been that hide make sure next type then 250 550 143 163 get 220 and how don see fix but can 354 221 has bye why put if ok 81 38
+Shell.Bash:1628920394:  : initialization stackoverflow stackexchange recommended environment preferable implement directory kornshell questions character something compliant switching password function username changing hostname variable familiar profile 1171663 command history display replace 8468165 current declare options default however yasuoka logname forward openbsd passwd export actual mkshrc 388258 behave within myname should stored source prompt custom retype reads print alias x11r6 https games arrow posix which right start local pdksh emacs stick once your line home path time edit unix down term echo back this into both show else keys left then what that bash real make like chsh want sure from also very more said than look 2018 bin usr 020 __a now set out not 005 __b pwd __d __h 006 __c __y 001 can etc cat 016 002 new old dot _cd its put ps1 if 29 54 up
+Congress.Documents:1628920394: Congress.TreatyOfAllianceWithFrance1778 Congress.NorthwestOrdinance1787 : treatyofalliancewithfrance1778 27s_first_inaugural_address teachingamericanhistory northwestordinance1787 judiciary_act_of_1789 27s_farewell_address george_washington antifederalist confederation constitution independence proclamation emancipation declaration libertyfund simpletable wikisource amendments convention announcing resolution compromise gettysburg expedition department regarding gutenberg louisiana mcculloch religious president documents jefferson surrender abolition agreement homestead guadalupe doctrine virginia sedition founders archives founding writings property original articles purchase northern relating nebraska telegram missouri congress maryland creation sortable removal colored message hidalgo library sanford railway madison general debates morrill pacific freedom lincoln purpose marbury fathers statute gibbons slavery jackson papers crisis common secret titles united cotton patent states monroe troops design andrew indian kansas sumter ebooks border rights speech statue second clark https notes lewis paris ghent ogden great scott davis 22082 width class false sense ifend alien 1857 1861 1819 1796 1814 fort 1803 bill 1863 1865 year 1862 1798 1820 wade acts dred 1854 1850 1848 1864 1788 1823 1830 army 1824 13th 1791 1776 1782 1777 1792 1786 seal 1783 plan 1794 www vol 100 war oll 143 lee gov
+Abuse.RecentChanges:1628920394:  : recentchanges abuse march code 2021 jrmu 09 at 03 44 pm by
+NewsNow.RecentChanges:1628920394:  : recentchanges miniontoby newsnow browser install banana march teams 2021 ways more may mkf 49 09 18 16 00 08 at 12 47 17 06 pm 04 33
+Linux.Flaws:1628920394:  : 8a104f8b5867c682d994ffa7a74093c54469c11f linux_foundation linuxfoundation representatives characteristics infrastructure firstdonoharm participation standardizing contributions homosexuality exploitative introduction contributors corporations contributing electronics simpletable disagreeing accountable acquisition nationality criticizing affirmative communities proprietary development intelligent maintainers constitutes environment orientation consultants experience disability expression appearance techrights developers censorship opposition officially derogatory harassment regardless protecting controlled understand reasonably commitment repeatedly contribute aggressive ethnicity corporate directors welcoming violation microsoft nominally influence community wikipedia according donations conflicts fostering canonical financial disclosed education collected operating doesn’t insulting blackrock accenture political panasonic companies currently indicates determine promoting dedicated supported diversity software trillion torvalds interact covenant facebook programs annually qualcomm trolling comments interest personal activism freedoms sponsors platinum desotech linkedin identity benefits economic landmark networks theverge sortable religion everyone entirely releases possible acquired pantheon although 18011854 actively contract licenses platform promoted millions received consider coraline problems affected explains conducts slashdot serious nothing lunduke 1941256 through imagine billion fujitsu members tencent playing secrecy founder defines provide require hitachi adopted systems oversee alibaba funding towards himself samsung project however renesas ethical extreme article relates creator hartman complex several dollars average unknown silence implies percent changes company approve justice because amateur attacks quality appears fellows massive interns include comcast toshiba website process sprint arista silver border social google cannot amazon toyota people kernel report citrix longer reject modify should huawei almost return vmware source oracle itself linaro become latter merely hybrid former status decide gender author closes donate anyone claims future making freesw before stated debian redhat forced action banned hidden pledge donors ruling unfree states orange around takes these would https zdnet which linus break total human width ehmke class power using least write sucks shown trust bryan story april users early board worth still about socio level while court flaws label posts kroah title baidu azure cloud world voice being cisco money field aarna poor many have gold make they that suse with uber sony made used doky will dell pays oath 100k into 2020 code like veil this help from uses open ways hide page them 500k 2014 when race fees role 2018 here been size body five none also even gets blog such tens 2015 2016 well need give fact what lead then lost greg view top nec ibm org sue www who was yet has why ada 239 may 938 say amd bad 995 384 619 338 515 too 582 571 987 scm git pub usd 245 000 emc by 34 22 06 07 08 30
+Marketing.Founders:1628920394:  : eyjpbwfnzsi6imh0dhbzoi8vyxnzzxrzlnjibc5tcy8xodqxmdy5os9vcmlnaw4uanbniiwizxhwaxjlc19hdci6mty1mta3otu3mx0 eyjhbgcioijiuzi1niisinr5cci6ikpxvcj9 k5fwx8i8yrvdjfjyuzsboamqh3o w83whutknwdrrhw_fr4ydtlkp epiphanycreativeservices atlantic_madison_3 uhghds8dz9i3yemcc washingtonpost theatlantic copyrighted rebelmouse silhoette 1920x1080 marketing untitled original founders hamilton goldstar directly abraham thumbor content uploads 300x300 quality design assets style https blogs files these width media imrs apps 2016 1484 2017 2018 2020 them com www jpg don img png all 980 cdn are php src 85 04 wp 06 03 28
+IPv4.Overview:1628920394:  : interconnect information destination simpletable description assignments communicate represented hexadecimal represents occurrence addressing following indicates expressed broadcast therefore remaining addresses important collision multicast benchmark dictates intended notation examples internet identify overview 11000000 sortable reserved networks protocol loopback routable prefixes 00000000 10101000 00000010 00101100 00000011 smallest 10000001 10000000 unsigned carries testing private because limited routers carrier sending traffic belongs convert deliver between special however purpose largest follows device values octets number border thirty binary starts summed within future unique groups digits called right rules first while hosts grade width below needs class local lists above other every valid doted which these where ipv4 size from mask ends cidr case this have that bits both ipv6 ietf when each link name thus hold left same true will used last mind keep some cird can are 123 255 168 192 169 256 254 248 172 and 252 128 127 224 240 435 131 072 864 108 728 217 134 456 432 268 536 912 870 824 741 073 554 648 048 152 524 097 288 304 194 262 144 608 388 216 777 483 113 576 203 198 024 512 147 296 967 294 768 sub 384 096 129 any of 1s 18 65 33 0s
+Coconut.Coconut:1628920394:  : constellation 143413344190 st4000nm0023 motherboard integrated supermicro enterprise expansions management controller backplane 1000base ethernet p2349624 storage support onboard chassis 560watt capable coconut seagate _trksid server l49292 drives height m46890 single supply system level 815tq brand rails x9dri https 563cb slots intel ports caddy power 500gb nodes only nics quad full core 64gb 3ghz 2630 xeon bays with will case work ln4f ddr3 hard ebay sata gold ipmi not hex cpu reg for kit itm com bpn sas lff pci pws ecc rev 4tb ram 1gb www any cse 1u 1x v1 1h 16 e5 4x 2x 01 2k x8 v2 7
+Coconut.RecentChanges:1628920394:  : recentchanges coconut march 2021 jrmu 29 at 12 28 pm by
+Znc.Chroot69:1628920394: Openbsd.Syspatch Oidentd.Znc Openbsd.Relayd Openbsd.Nsd Openbsd.Buyvm : mysuperadminpassqwerty protectwebsessions passwordsgenerator authonlyviamodule configwritedelay libboost_system libboost_locale troubleshooting libboost_chrono libboost_thread daemon_pidfile ssldhparamfile serverthrottle misconfigured maxbuffersize acceleration controlpanel service_name alphanumeric dependencies service_user service_stop instructions installation project_name deliberately connectdelay disconnected request_uri service_pid hideversion checker_znc directories anoniplimit immediately sslcertfile descriptors integration certificate mistakenly loadmodule setnetwork individual saveconfig libicui18n connection libicudata completely delnetwork characters sslkeyfile absolutely libpthread chronology nameserver afterwards addnetwork frequently libcrypto threading listener5 plaintext uriprefix pkgconfig available reconnect different addresses necessary operating listeners identfile http_host following supported listener2 libraries automatic unlimited rc_reload listener1 responses processes fullchain listener0 verifying lockedmem addserver listener4 listener3 otherwise openfiles stacksize chansaver challenge something libicuuc bindhost software location flexible prevents syspatch username networks standard buildmod separate solution requests chroot69 properly creating hostname allowirc allowweb settings symbolic checking makeconf webadmin services mismatch confused nickserv warnings whatever lastseen adminlog certauth encoding releases instance formerly redirect webpanel nxdomain upgraded s_client fullname yourself internet provider deleting infinity database defaults generate coredump identify 12345678 33554432 channels entities continue filtered modules records exactly changed privmsg contain include openbsd getting libexec patched keeping account missing configs library usermod command _identd derived numbers letters maxproc perform restart nologin deleted between example running replace bouncer crontab urandom minutes console openssl earlier pkg_add compile symbols disable without oidentd options working changes adduser specify scripts addchan initial assumes seconds logging happens already belongs nofiles certain suppose generic private writing deluser enabled unable ircnow relayd resolv status likely easier subnet logged should single locate update causes libssl online create rehash suffix global adding errors either export vhosts lookup folder spaces inside unique shared botnow ensure cannot groups before method glines please ignore reason kbytes stable tested 329478 memory blocks 985092 ulimit return better issues reboot rc_cmd custom socket saving needed allows mkdir wheel parse false chown there 31337 fruit using offer 65534 users hints rcctl quick first ifend touch shell cmake chmod still where party state icu4c proto fails 4p0v0 below blame cheap which buyvm these steps ports pfctl 10000 amd64 their https class 32768 crash vasya uname asked begin pgrep mknod strip known added right ahead later httpd click every wants debug leave gmake while quote looks again apply types wrong could loss more will fall home 6697 this true doas must rdns edit ipv4 aaaa 6400 case into 2605 then ipv6 just sbin free help dae2 have disk 2001 feel good same inet that been note 1338 when 2020 from kill well esac once subr back null link site done acme libm libz man1 curl mode bugs made xvzf 4096 8182 tabs vipw 1001 find ddos time 1310 copy 32a2 ircd each rule bans typo 2048 fact such most 3000 6667 both none 1025 zero zone usr org 3rd but etc bob nsd gdb var may 2v0 cxx any 644 was bnc did abi due way pem yes tcp src bit bb8 env rpe uid 302 cpu ksh new 48m gid 127 tls 464 put 168 192 few db8 gz rx mt 72 pc mv 80 07 21 _g
+Openbsd.Hopm-Arthur:1628920394: Openbsd.Doas : troubleshooting configuration installation reconnecting issuecomment jk_chrootsh adjustments connections interfacing immediately installing foreground decompress downloaded workaround configured especially requisites usefulness instructed additional particular background favourite trialling instances compiling directory recommend encodings necessary 301276082 reference indicated typically following questions extracted required mistakes username hostname password familiar fullname commands warnings releases compared navigate properly brackets defaults previous executed majority adduser refused openbsd coconut another nologin assumed correct unbound reading missing disable section however specify goodbye pkg_add running archive testing writing initial ideally getting details network package tarball pulling started pbuild failed groups ircnow invite authpf github master daemon server latest hybrid issues enable editor needed within logins second tricky readme arthur silent shells before trying ngircd passwd rc_cmd chance create asking listen option either system record syntax errors result stops debug where after lines times files would which there phase these https rcctl chmod hints gmake every cover found right added guest enter worry about 23t09 staff later class input 65532 check first case hopm save your that exit from text doas when come suit copy this home many also blob ipv6 2021 0600 does aaaa subr tips mode were doku page some want boot true aren have unix sbin into skel wget grab fine nano 1002 bash will know must bgpd path then etc see vim don ksh but org znc uid via csh may due let its can dos ran was won php zxf gid few kb gz my of 22 14 59 cp
+Relay.RecentChanges:1628920394:  : recentchanges relay 2021 jrmu may 12 at 09 10 am by
+Ngircd.Install-bej:1628920394: Netcat.Irc Password.Management Openbsd.Chroot Rcctl.Rcctl Ngircd.Ssl Ngircd.Link Anope.Install Achurch.Install Hopm.Install Acopm.Install : abcdefghijklmnopqrstuvwxyz noticebeforeregistration maxconnectionsip defaultusermodes operchanpautoop troubleshooting allowremoteoper requireauthping implementation syslogfacility configuration maxnicklength cloakhostsalt alternatively documentation installation eavesdropper authenticate configuring pongtimeout description lightweight maxlistsize information necessarily infrigement pingtimeout harassment management absolutely disconnect eventually admininfo2 impossible restarting compromise censorship customized production advantages installing admininfo1 minimalist maintained understand adminemail connecting nullrouted unfiltered different uncomment invisible necessary otherwise copyright replacing localhost reloading addresses commented listening suggested including passwords promotion sensitive debugging receiving configure firewalls chrootdir developer plaintext identical location hostmask stalking channels portable violence standard username settings template gambling maxjoins operator spammers services properly remember intended upgraded packages hostname features software probably security comments includes actively rejected existing messages chatting anywhere official appoints controls training motdfile cracking provided examples accepted sysadmin straight network mistake syslogd nowhere monitor servers daemons outside hosting openbsd differs replace command achurch heavily _ngircd besides symlink listing directs illegal section working content support without warning created written scratch contact another filters running however ignored prevent appears compile pkg_add correct slander careful options reasons privacy please unique public policy ircnow string insert reduce netcat random ddosed system source ensure secure verify client modern errors inside global barton sample remove domain single manual simple planet enable trust acopm ports opers their anope block being proxy users avoid files evade rcctl going while which touch needs match order chown mkdir check leave vhost fruit lines crash using exact keeps means pkill after three until aware below those these share earth drugs https build index short begin staff hangs fewer pages speak title guide paste above terms clean every agree libel 16667 setup make will have read from this want into doas your long also lead note next else nsfw that more ipv4 ipv6 when real must many 2001 edit xvzf send tags only team sets does test like logs sent each 6660 6661 easy 6662 fork hopm 6663 stop 6665 6666 help wiki code porn both well runs 6664 6668 1000 such 7000 free 6669 php org may var v26 one ssl ftp tgz get can 300 don see has try hup yes bej ips new day 168 192 db8 usr 127 let was by ux cp ln
+PowerShell.RecentChanges:1628920394:  : recentchanges powershell connect june 2021 jrmu 09 at 11 10 am by
+Vmm.Optimize:1628920394:  : virtio_vmmci continuously conversation improvement interesting interrupts immediate vmm_clock recommend efficient servicing subsystem voutilad checkout research breaking complain whatever cranking solution settings planning optimize anything mlarkin working usually drivers success hallway cheloha rebuild thanks brynet kernel things always allows guests tuning better github right works would think notes later helps still meant misha https since linux leave first param while sorry with lots away 2000 1000 just give your page also talk dave jrmu more that will this take host rate been 2019 idea only bios have make into then word misc hard miss come tech dont had vms try put yes and how for him but has now hit fix 11 ah 57 58 hz my we of 54 53 ok 55 if 56 dv
+Freenode.Money:1628920394:  : thetrichordist controversial spectacularly subsequently entrepreneur progressive mark_karpel programmer “lost” eventually foundation daydaynews dahlskjaer falsifying collapsed karpelès including estimated companies sentenced teachouts financial promoters suspended wikipedia residence interview anonymous marketing madeonirc district holdings karpeles freenode achieved takeover exchange internet february hackaday acquired relative launched platform advocate bitcoin founder article million defunct privacy founded company website several dollars private trading certain success project history service network angeles distant tracker through haiyuan debacle prompts primary related gox’s inflate leading joined prison access shells andrew ircnow prince months source stolen worked attach before called united states london 840186 exodus course highly former merged guilty zephyr behind resist pirate m7ev8y https after crown april march tokyo later lands which korea media width 500px price court trust years owner staff hires money gnome death other where party worth ties live logo team 2016 this that 2013 time from sold with 2019 open also data long when they were four 2021 html 2010 cnet past grew 2018 both have has job was lee org 450 png cto usd its a8s www ceo 000 460 put 700 vpn pia of 95 36 mt c3 xi by 30 14 up 05 08 33 23 09
+Freenode.RecentChanges:1628920394:  : recentchanges freenode takeover money power 2021 jrmu may at 04 05 28 am by 25 26 38 pm 29 03
+Freenode.Power:1628920394:  : 20181207230330 20210507003605 contributions sponsorships professional application distributed communities ycombinator partnership danieloaks prawnsalad disclosure expanding mobileapp important launching sponsored introduce alongside marketing ircclient madeonirc europnet founding networks freenode friendly starting holdings who’re 18637152 projects inspircd internet provided 18644090 continue 17375831 monopoly snoonet linking archive notable ircdocs further changes details founder private kiwiirc funding weechat expands clients saberuk through generic sourced danger future worked family github andrew irccom rfloat london google access attach dalnet ircnow en_us https build there nerds multi where ouron owned being sadie stuff lucky years three while media trust sites store horse title power yours today posts truly other width owner 500px spec huge that very been time lets take like name devs will apps play code near have open this soon with they full item news june paid lee pia ltm for may are few dec use run its web org www png 24 hl as up 22 11 my by · e2 80 93
+Ambassador.RecentChanges:1628920394:  : recentchanges ambassador networks markets ilines 2021 jrmu may 27 at 04 05 by pm 30 29 32
+Wordpress.RecentChanges:1628920394:  : recentchanges wordpress install july 2021 mkf at 06 59 pm by
+Dkim.RecentChanges:1628920394:  : recentchanges dkimsign june 2021 jrmu 04 at 09 07 am by
+Grape.DonateUs:1628920394:  : bc1qqlpeyjdvfylywfqktduwx3zus5793327774nwm 0xfbb8e956ab002bb61732501639a06cab6d98e44d bnb1zl4072de3k58mhrwfpstgz0yks6rjlz7v9k445 dnntvbo7htfbvjovvph6kavdqyoxqmz3dk tthhd7ckbzge8gx1vdghtmsewrsbuevuy5 permanent donations dogecoin etherium donateus address sending through bitcoin result crypto tether accept erc20 coins other trc20 grape bep20 token usdt only loss busd this may any now we
+Ksh.Bash:1628920394:  : initialization stackexchange stackoverflow recommended environment preferable switching something compliant character directory implement questions kornshell function hostname variable username changing password familiar declare current options command 1171663 profile display replace 8468165 yasuoka logname forward default history openbsd however actual prompt behave export myname mkshrc retype should stored custom source within passwd 388258 title https alias print reads games arrow right which posix start stick users local pdksh x11r6 emacs home your edit time down that echo keys into line this unix term path back else both then left show once bash like said look chsh also make from more sure than want very what real 2018 set bin __a 020 usr not out __b new old can 016 005 __y 001 __h 002 __d 006 __c etc pwd _cd its put now ps1 dot cat if 29 54 up
+Ksh.RecentChanges:1628920394:  : recentchanges bash june 2021 jrmu ksh 09 at 11 31 am by
+Eggdrop.RecentChanges:1628920394:  : recentchanges duckhunt nickserv eggdrop install august simple jrmu 2021 july at 05 06 17 34 am by 11 07 27 49
+Vmm.RecentChanges:1628920394:  : recentchanges configure optimize install august debian 9front jrmu 2021 june july vmm may lol mkf by 19 29 at 06 10 48 04 am pm 07 09 24 25 11 05 32 16
+ConnectBot.Keys:1628751535: Sshd.Disablepassword : disablepassword authorized_keys authentication connectbot additional worthless creating generate randomly nickname optional security without ed25519 private pubkeys becomes warning attach longer forget public unlock purple corner around button manage server before finger logout secure should start blank leave login write check title chose setup right arrow paste sshd type need load edit your copy move left back plus here more icon will this pair menu none fill down png tap top use any can don box if we
+Web101.RecentChanges:1628613227:  : recentchanges craziness started web101 august 2021 at 04 pm by
+Fdroid.RecentChanges:1628596816:  : recentchanges install fdroid august 2021 jrmu 10 at 09 05 am by
+Shell.Sshfingerprints:1628585751:  : b8eg6kph0enoa80gzrsywdpbfittqkcqpa5zllytnso ddvpjfdfsmp0bttyz84o5ohlxtmwphp8gwdipwc4rvu zuyvmivs4pttgmhutgltygrizrhvugq1av9keqhqw8w qcvqbfidaonla4my8cuipyacb7uwltu3acii22uakra clmvqu0q8pix7hv92ocmm5pohxfyvyn33hcxkn0mfrk tfgntqeynkisu0cphmezrlbkyvuylnnf9quakpijrau suo14qmmadftez9dzgybhfrnyp9crees5mrvvr6e0t8 tcfbfmpbmi1pcoxk6o804onoibp1ttyimkvlu8oczlo mz0kuriqsfwecnnmk0wme8nzqjbimslwjo4jmqol xxbmizlxi8kzel2souqdituy7c7b4dnzgfgi fnu7cx1gxdjexnnasnr5qw6b3nkwtyrbti zkfhl6nsicctw3ialn0rizvhcqwgwz mmmmkyjstnpsagvrr4mjsmtryqtmka ffkusymiyoay9atxdulbyeeewxlt razh8bpyvql51zcjfetdj8nzpjdq m6sd5iyyj5m1g7zdcfvhbrzceq ohv2fwpi2slhmx7utwgztphvcm 1agi3m2ylukchgmq3smx8ro yvkispem7vkus5qfosqaeu dlivmtx59tkwk2vkrl ipou7txy1ze7nwi2 sshfingerprints rl2kxocobj66 6yrmnjlqzxx npwmt4hzq1 mgpvxoebmt xdijhgra3n brzkpyqmho bsdforall shelltalk eigwxhwf syoualj8 ircology v6gs4o9j tzx3l4wu redirect ed25519 qkxov5n freeirc sha256 ircnow title ecdsa a0lir evpp 1024 7cd3 3072 host rsa tyc md5 org net 9ye com 2ac 20 d9 08 3d 76 90 98 e9 27 35 fa 42 73 13 03 52 63 c6 85 3c 00 87 28 5d 41 af 15 17 64 2c d0 c5 2b 86 45 d7 44 46 b6 09 01 c0 16 6f b1 a9 a7 11 0d f2 bc 39 05 79 9b 2e e3 40 f5 c8 4b 4c b9 68 77 b5 0f 5f 8f b2 94 54 db 8d aa 26 78 88 91 36 3b 32 60 bb 69 0a e5 d4 96 1e 81 74 89 bd 5c 7d be fc 95 5a 37 62 1d 3f 70 6a 5e c2 d6 7a 2d de 1f 75 6d 4f f3 65 b0 e2 34 f8 ba f0 99 31 6c f1
+OpenSSH.RecentChanges:1628530460:  : recentchanges openssh keygen august 2021 jrmu 09 at 05 03 pm by
+Openbsd.Sshkeys:1628527366:  : a1f1388dff27d02f942ea5a9e2cb6008ae3e0a61622e5ff2b1ce746b32049152 6a9facbb8693644063b1eee91cfce24ada5536ff52df98210fae3d350fffaf34 88fbc099391d1e37330409978e68bdeebc50fe9bc41c5e2fd4a2d29ecde20409 a0f433e68e5ba29f23825b21a23660d94a5b8a814cd71827fb75cfb4e84e4c49 7251d06cf5cf9312b502388edd93ff924c52a73a 4dc3d59ef28733c89f83e0e078b10a4a816e2a04 c9a19b42a7165596f0d0e5bfa947232978901dcb 22ccda0cafee42f3e2cc53d5f695244677a1a88f ssh_host_ed25519_key ssh_host_ecdsa_key ssh_host_dsa_key ssh_host_rsa_key authorized_keys identification fingerprints alternative passphrase id_ed25519 generating nameserver verifying username redirect generate replace publish process records private example desktop openbsd sshkeys quickly public keygen ircnow hashes online bottom repeat script domain image enter those sshfp files types later empty login added which other again linux first saved putty zone been home this with then 4096 your read that edit will five used last same pair all and org are run can 100 md5 mac for etc get art lf vi by of pc we so
+Vmm.9front:1628489769:  : 9front vmm
+Eggdrop.NickServ:1628148425:  : nickserv eggdrop
+Medals.Intro:1628066087:  : simpletable outstanding suffering minutemin finishing lifetime specific benefits criteria sortable training minetest service ribbons serving heroism account veteran general webhost gopher silver medals awards result legion border bronze crypto ircnow purple beyond heart latex shell admin class width merit intro honor above going users valor star duty harm nntp roll mail call year name 100 sip dns the for vps one of
+Dns.Zonefile:1627982517:  : subdomains debugging restarted hopefully redirect fallback zonefile servers stories careful records problem updated changed trains ircnow serial causes issues number beaaaa should horror likes doesn heard grape thing check empty faa1 come 2605 wait 24c2 1ee7 2d52 6400 0030 with 390d jrmu also turn want same yeah each have this name some that such gry has the you lot bad nsd log dig org ohh and var but brb did dns 12 ok of 11 08 09 10
+Minutemin.Ifconfig:1627909143:  : installations information interfaces 0xffffff00 autoselect 0xff000000 multicast broadcast something prefixlen mentioned minutemin referring dependent allmulti priority hardware ethernet changing software ifconfig chagning loopback promisc network simplex address netmask getting usually adderss scopeid options without running changed besides virtual maximum openbsd status active llprio groups pflog0 egress packet lladdr adding utilty stack inet6 index local flags 33136 using other 32768 exist times shows about which media this like fe80 vio0 enc0 used they will size most 1500 8b43 8049 ipv6 fedd them ee06 2002 ccff 1040 mtu can nat em0 mac and you but set lo0 0x1 141 any 127 0x3 128 78 56 34 bb aa 48 64 by
+Almanack.Alt:1627890732:  : almanack alt
+Eggdrop.Simple:1627890556: Tls.Intro Dns.Vhost Dns.Overview DNS.RDNS : protectfriends dynamicinvites dynamicexempts protecthalfops configuration enforcebans stopnethack init_server sanitycheck dynamicbans dontkickops botusername userexempts userinvites revengebot examplebot loadmodule retrydelay protectops attempting autohalfop compressed connecting configured installing exclusive different nodesynch quotepong autovoice serverror correctly unchanged theactual lowercase plaintext statuslog directory timestamp nnickname lamestbot overwhelm essential inactive timezone alltools blowfish undernet freenode quakenet logfiles overview settings newusers wherever incoming userinfo loadhelp chanmode benefits maxsends negcache birthday putquick possible channels chanfile dccwhois realname notefile optimize userfile sysadmin filesize location paranoid mkcoblxs autosave userbans assigned filesys default console timeout scripts several network entries because chanset created address eggdrop reverse warning account running confuse replace forward aclocal altnick botnick addhost logsize contact opchars instead trigger updates unlinks complex simpler botname require telnets stealth dupwait prevent meaning support modules finally chanrec remote ignore suffix notify source attach offset switch filedb please banner hourly vhosts pbkdf2 exists expire finish fields cannot vhost6 upload vhost4 format unbind prompt onjoin capath global dalnet mixing answer dloads reject static ircnet libera prefer twitch shared action secret choose autoop inside length things bounce called double ircnow stoned uptime unique using queue flood notes binds short intro might kicks shell owner flags leave cycle among other hello allow focus boots split which quiet ident learn modes front below mydir email limit stack efnet block there types rizon order party 86400 greet given bitch uname title these lines socks simul cmds home ctcp life must deop 0600 perm open seen rate show 1024 xfer idle keep copy quit cidr rdns pick rest just from your like 6667 irc6 6697 want into have ipv6 will this evnt proc sure motd when plus make very with best only most ssl and msg tcl 200 tmp 120 300 tls org etc die thr raw has fwd mco buf 180 any aop txt 100 cbc pwd by m4 50 15 hp dk ws
+Openbsd.Vhost:1627871572: Openbsd.Openbsd Openbsd.Znc Openbsd.Psybnc : configuring connections associated configured resolution addresses recommend following hostname redirect possible pointing multiple hostmask nickname connects supports cooldude networks fallback creating properly remember specific bindhost yourself normally forward reverse openbsd binding example section confirm bouncer running perform lookups suppose provide however another instead content happens domains records pointed servers logged subnet answer choose ircnow single vhosts assign custom entire unique rescue notice psybnc client either anyone entry words check money since could heart binds title which often using first would users world brown ident means match ipv6 tell each when this that ipv4 d00d have will c001 rely upon john only 2001 with need rdns both then arpa such aaaa from 3600 give take want same must even cost and way 192 org 168 can set znc dig ptr db8 lot out why isp had get 64 48 by
+Bsdforall.RecentChanges:1627827283:  : recentchanges bsdforall hardware august 2021 jrmu 01 at 45 pm by
+Thunderirc.RecentChanges:1627827283:  : recentchanges thunderirc hardware august 2021 jrmu 01 at 47 pm by
+Thunderirc.Hardware:1627825674:  : constellation st4000nm0023 143413344190 motherboard integrated supermicro enterprise expansions management controller thunderirc backplane ethernet 1000base p2349624 hardware _trksid 560watt support onboard storage chassis seagate capable single system supply height l49292 drives server m46890 brand level rails nodes 815tq 563cb x9dri slots intel ports caddy power 500gb https ddr3 ln4f with bays work will case 3ghz core full 2630 quad xeon ipmi sata gold only ebay nics 64gb lff cpu hex bpn sas 4tb www pci any ecc itm com rev pws ram kit reg not 1gb cse for 1u v1 01 4x 2k 2x e5 16 1h x8 1x v2 7
+Lecturify.RecentChanges:1627825253:  : recentchanges lecturify hardware august 2021 jrmu 01 at 27 pm by
+Oddprotocol.RecentChanges:1627825253:  : recentchanges oddprotocol hardware august 2021 jrmu 01 at 28 pm by
+Syslogd.RecentChanges:1627660871:  : recentchanges syslogd remote july 2021 jrmu 30 at 03 pm by
+Openbsd.Vmminstall:1627536494: Shell.ShellPutty Openbsd.Install68 Openbsd.Bsdrd Openbsd.Staticnet Openbsd.Vi Openbsd.Vmmuser : automatically instructions installation connectivity combination immediately vmminstall hypervisor shellputty networking background afterwards particular workaround substitute something sometimes keyboards operating dedicated installed install68 reinstall staticnet lowercase install69 username terminal hostname personal followed existing bootable shutdown accident assigned probably redirect physical multiple machines appears coconut openbsd upgrade console gateway windows crontab default scratch virtual restart address booting replace prevent capital message vmmuser execute reading instead unmount inside during typing screen system before bootup delete serial tildes attach create reboot ircnow prompt escape server failed period ignore safely likely normal scroll router editor bottom ensure single allows subnet should values guide alive right https there image vmctl while helps title error qcow2 bsdrd works enter index fixes where hours quick boots press paste colon guest lives linux order which first your have will 1xxx this ipv4 fccf 2602 ipv6 mask with need from type once want then doas must exit stop most save file runs away tmux true sbin done that keep also note wiki lose text line ctrl disk when html hard faq4 org php few any bug png can vms may 255 162 and new man usr see ssh www log 20g are by wq 87 38 i5 if of 64 cd
+Openbsd.Vmm:1627536255:  : interfaces networking forwarding sufficient install69 broadcast install68 signature configure vmdusers groupadd machines increase redirect software firmware verified download hostname prevent bridge0 crontab switch0 openbsd signify user123 however nologin useradd routing proceed address console warning virtual makedev packets pkg_add appears because tcpdump devices default sysctl result longer socket lladdr issues verify create sha256 number choose serial access enable locked memory appaer reboot random maxlen debian permit timing cdrom start owner using chown while https amd64 inet6 rcctl image qcow2 which there entry vmctl where wrong octet first base they need such each pick will doas sure flag with show home does four sbin want html free next only done root many have echo this must arpq tmux edit from 1024 ping true ipv4 ipv6 same some disk 512m your new run iso usr can var pub etc 162 20g not ips vmm odd may tap jot if0 ip6 org cdn uid ftp to by 50 87 38 i5 pl xx f1 f3 mv ok 01 aa bb
+Ps.RecentChanges:1627468246:  : recentchanges usage july 2021 jrmu ps 28 at 03 42 am by
+Kill.RecentChanges:1627468246:  : recentchanges usage kill july 2021 jrmu 28 at 03 42 am by
+ZNC.RecentChanges:1627468246:  : recentchanges troubleshoot support admin 2021 july jrmu znc at 28 by am 12 06 13
+Znc.Troubleshoot:1627452707:  : troubleshoot znc
+Openbsd.Dig:1627195831: Openbsd.Unbound : troubleshooting pseudosection milliseconds nameservers reconfigure propagated connection additional invaluable indicates succeeded authority responses different important nxdomain believes exchange hostname question computer redirect answers because opennic getting records suppose example default returns offered request success openbsd unbound reached changes caching failure correct address details noerror testing utility helping options version public ircnow header opcode status lookup synced cannot resolv longer please errors global exists other valid query title could shows 3600s asked after there local value flags usage entry might means which https 15341 timed tells words very that this msec took with make live want will text ipv4 give what hour many have does zone mail when 2020 size like rcvd your ones aaaa 4096 edns dig all for txt org but are two ns2 ns1 and 168 192 etc 485 has udp ttl 127 got msg aug fri out cst cmd run by 21 10 mx p1 ra qr 31 44 55
+Openbsd.RDNS:1627022661: Openbsd.Nsd Openbsd.IPv6 Openbsd.Host Openbsd.Dig Openbsd.Netcat : troubleshooting configuration authoritative installation configuring 2020112906 configured nameserver yyyymmddnn 2021020105 2020070701 resolution delegated checkconf secondary necessary confirmed describes zonefile redirect hostname ipv6rdns original reported project example command missing service periods refresh minimum coconut reverse between forward connect 1209600 section restart openbsd replace working primary request follows records provide pattern include assumes suppose already ircnow jujube notify master banana digits 604800 lookup subnet domain orange simple serial create notice expire actual enable cherry issues netcat before reload daemon errors title grape print allow user1 nokey slave lemon user2 rcctl using comes false guide block zones about zeros ifend inet6 admin tools 10800 peach retry 86400 guava denic bring https along ahead there write files first mango debug 2001 3402 doas with once have this then your nast 3600 1800 arpa only need test mode news smtp imap plum from pear step next save good both that jrmu sure make real echo been fill 0001 0550 must 0143 find vio0 grep will base part nsd www sed org can add ip6 ttl soa var ns1 awk are xfr any ptr ask put ns2 of mx by my
+Bouncer.All:1626892672:  : bouncer all
+Lemon.Todo:1626891676:  : lemon todo
+Irc.Guide:1626890560: Irc.Clients Ircnow.Servers Bouncer.Bouncer : countermeasure impersonation automatically unfortunately contradictory troublemakers unregistered restrictions accidentally complication occasionally particularly immediately recommended troublesome identifying trustworthy communicate information compromised connection requesting privileges encryption unofficial parameters regardless connecting principles implements improperly disconnect surprising impossible harassment generally anonymous sometimes confusing different selection therefore plaintext something following messaging destroyed indicates beginning ampersand rejoining encourage available incorrect searching important addresses criminals autovoice nickserv allowing nickname hashtags channels messages increase asterisk hostmask networks enabling unvoiced chanmode division services username hostname freenode chatting connects distinct cloaking provider comments entering internet requires bouncers whenever password protocol problems removing actually designed commands contains provides managing maintain commonly operator hundreds referred netsplit software enormous chanserv multiple inviting beginner interact protect privacy discuss benefit signing options created totally instead because clients servers friends uniform replace another however receive private version banning kicking leaving finding removed whether secured prevent snoonet popular whereas usually purpose freedom someone visible support careful setting hosting putting anyone beauty kicked result should abuser really refers attack allows vhosts expect social single choose simply change filled ensure cloaks ircnow whowas target leaves levels libera window typing always double reveal people before giving online become second usable number reason return called irc2go invite stands notice users every might modes check wrong learn often doesn noted about title third built write https added asked index first after large which looks guide their match while being relay claim hello world press topic short means names again phone store could order front whois snail reset forth quick kicks sites empty three still based strip extra joins more from that each they view will your quit them half help want this type with then open edit leak used lose pick have most what list shut like show once many spam lead 6697 6667 well typo send upon huge uses last same alis stop bans both must such lets also made room msg own its ops may new can vpn key see php org ssl try but him don by 74 84 pm pc 0
+Minutemin.Progress:1626855035:  : vunerabilities discrimination torrenter2010 deplatforming search_social investigation republicanism independence constitution verification deplatformed dependencies manufacturer shadowbanned surveillance indifference chewbakka85 opportunity independent centralized declaration development simpletable presumption arbitrarily advertising description accountless splinternet integration established programming immigrants miniontoby censorship dissidents federation websockets cloudflare monopolies controlled cryptobank charitable harassment campaigned javascript advocated minutemin elections jefferson ecosystem publisher copyright fediverse innocence represent exclusion languages marketing modifiers character sanctions violation anonymous anonymity exploring encourage developer dedicated mayflower interpret abolition resistant searching supporter political inventors arbitrary religious publicity unpatched ircitizen homestead providers protocols protests security defender diplomat criminal complain increase champion governor software referral minetest improved censored generous plymouth children suitable bullying settling frontier brewster lawsuits williams subpoena congress disaster movement personal sortable dealings religion politics shooting merchant smuggler backdoor cesspool accounts indecent projects dictator negative insecure progress commerce pioneers facebook telegram licenses sysadmin password requires services explorer network liberty limited drafted youtube madison default instill purpose sharing justice invites attract effects special freedom bangcat bridges partial captain discord copying senator raleigh orderly blocked patriot privacy seizure startup divided harmony culture ircians whitney enforce chamber warning outlaws sheriff melting promote abusers founder ethical hosting process firefox servers netizen openbsd hancock eggdrop reduced authors systemd bonuses subline storage halfop python assets powers custom longer paypal leader samuel faster domain report danger policy notice resume border united virtue garden walled uptime skills chrome tyrant unruly beacon matrix factor nodejs accept coding mostly daniel thomas strong ircnow always revoke dennis filter pirate seized gossip donors clones walter papers lawyer cancel rights ensure remote native easily signer bible width fines linux class proud press party their reuse brave these fewer posts total staff major coppa title riots voice adams libre email ifend about shell reset smith chief first false arrgh early wrote roger error cross relay union evade boone vhost month legal trade dream civil james write self none spam xmpp from more penn type when seas duty john devs fizi nsfw ally tlds take code fork cert file risk with nntp unix news agpl rust name real fees some n00b bdfl life isps mass safe fair send echo folk rush hero have dump data gdpr bill 0day ssl max znc pot bnc old vps due gry 100 vpn and 3rd own any ops god odd sms fan quo mif jay aye 50 2x 25 gb 3x
+Rsync.RecentChanges:1626688994:  : recentchanges rsync usage july 2021 jrmu 19 at 30 am by
+Openbsd.Openrsync:1626616918:  : filesystem everything corruption openrsync directory shorthand verbosity available functions specifies following complete continue commands username multiple capacity includes redirect actively remotely profile however mounted options instead written warning backing specify current require coconut archive verbose display openbsd rewrite example source ircnow htdocs primer second backup copies cancel enough md5sum either useful server before copied called tells local space samba 1005m quick check https least buggy usage seems going below abort being occur title enter sd0f root sd0e home 153g 192g sd0k 844m size 111m date sd0a used will make then have much take doas dump copy into dest path this read more show ctrl type echo jrmu disk sd0d your from with both here mode work each tool data turn sure ssh var dev dmp put org www mnt vmm pwd add end usr run tmp bit may its own 28 14 7g 41 2m 0g 4g 63 12 df 16 9g 22
+Openbsd.Znc:1626432193: Openbsd.Syspatch Oidentd.Znc Openbsd.Relayd Openbsd.Nsd Openbsd.Buyvm : mysuperadminpassqwerty protectwebsessions passwordsgenerator authonlyviamodule configwritedelay troubleshooting libboost_thread libboost_system libboost_chrono libboost_locale daemon_pidfile ssldhparamfile serverthrottle misconfigured maxbuffersize deliberately dependencies controlpanel project_name service_name service_user service_stop connectdelay installation instructions acceleration alphanumeric disconnected hideversion anoniplimit checker_znc immediately certificate request_uri sslcertfile service_pid descriptors directories integration loadmodule libicudata sslkeyfile absolutely mistakenly libpthread setnetwork connection libicui18n nameserver delnetwork frequently completely individual chronology afterwards addnetwork saveconfig characters listener2 addresses necessary unlimited plaintext reconnect threading different uriprefix identfile pkgconfig listener3 listener4 listener5 lockedmem supported libraries libcrypto something following available fullchain obsoleted responses verifying listeners operating openfiles rc_reload addserver processes listener1 challenge automatic listener0 http_host otherwise chansaver stacksize syspatch location buildmod s_client libicuuc nickserv bindhost webpanel username separate confused requests redirect instance flexible nxdomain certauth webadmin adminlog lastseen warnings hostname upgraded encoding allowirc settings creating checking makeconf releases allowweb symbolic software standard networks coredump generate 12345678 fullname cap_mkdb prevents yourself properly whatever identify 33554432 entities deleting infinity mismatch formerly solution channels filtered continue internet provider services already maxproc changes openbsd configs bouncer missing deluser logging getting urandom library perform example records include addchan libexec command exactly privmsg earlier enabled writing modules oidentd adduser _identd usermod running pkg_add options suppose compile restart nologin specify default private openssl patched account generic seconds working certain keeping minutes crontab console replace changed belongs happens assumes scripts nofiles without disable letters numbers between derived symbols contain global create locate unable update method better ircnow reboot export chroot rc_cmd return single unique botnow likely allows causes suffix socket resolv libssl online saving rehash status logged folder relayd ignore custom please errors vhosts delete adding either reason glines tested setups lookup should ensure easier cannot before shared inside groups 985092 blocks subnet kbytes 329478 memory ulimit spaces stable needed touch chmod proto fails quick where blame which cheap chown these ports shell using party added still users crash mkdir rcctl quote below mknod https first types click steps 65534 32768 31337 their pgrep icu4c httpd false there later cmake 10000 hints state apply known strip pfctl ahead again fruit every amd64 wrong uname while could begin wheel wants parse class right leave offer buyvm debug gmake looks vasya each xvzf doas that ipv4 ipv6 have man1 into will 1001 rdns aaaa from then home sbin 6400 such curl must this zone true when fall back been same link 1338 note site edit ddos find free kill case done esac most 2020 vipw subr 399c feel 6184 good faa1 32a2 6401 2703 6697 dae2 loss time 1310 help 4096 6667 2605 acme well bans ircd typo more just none null tabs disk 8182 once inet copy libz 3000 libm rule fact both 1025 2048 made bugs mode 2001 zero etc cxx usr abi nsd org var 644 was pem but gdb any did may due way 3rd bnc bit src tcp 127 tls yes 168 db8 192 few bob uid env ksh rpe 0p0 put new cpu gid 48m 302 pc rx gz mt 46 11 80 _g 07 21 mv
+Freedom.Bearcode:1626255760:  : emancipation proclaimed domination marketing oppressed remember endeavor standard ethernet bearcode freedom replace forever gateway peoples without hackers hurrah beacon symbol banner attach rfloat mighty unplug width 300px clear their snake cable pings right tread opers shell typed share dream when beep motd they that fray both hope new let day our who all don may its now jpg own lan to by of as
+Openbsd.Staticnet:1626112120: Openbsd.Ping Openbsd.Netcat Openbsd.Traceroute : unpredictable automatically abbreviation disconnected connections abbreviated configuring immediately definitely networking hostnameif unfiltered traceroute attempting installing something preferred addresses interface important configure following staticnet rebooting netstart ifconfig manually actually assigned specific mistakes practice separate prepared requires provided replaced followed properly redirect reliable computer default gateway letters without because however aliased running creates warning figures another restart openbsd packets forward worried similar example account bouncer specify virtio manner device subnet second normal server should change inside dozens unique making delete before netcat please number router mygate first allow title inet6 makes lines exact those where masks sense reset flush using doesn share shell below being users steps about stops chose 0db8 will 2001 ipv6 0000 vio0 9b1d need 3511 have this just 387e time each 143a file sets ddos your ipv4 same them both done look that doas when deal dhcp note they ping sure test most real from also down case more 921d 28ad 4729 8d93 89d1 were 2b1a 66ff 1465 fed1 8daf 5b99 11b4 4a36 2941 d6bd ad2c and if0 255 isp 168 get 192 vnc new can its ssh fly see any of 48 by
+Openbsd.Eggdrop:1625196047: Openbsd.Tcltls : 79644eb27a5568934422fa194ce3ec21cfb9a71f02069d39813e85d99cdebf9e e01c240484de7dbe190fe141e7667de1d1a39aff allrecentchanges “ownernick” troubleshooting protecthalfops protectfriends dynamicinvites dynamicexempts configuration passwordifany demonstrated shareunlinks checkmodule enforcebans channelname dynamicbans servernames userinvites dontkickops cmd_resolve stopnethack sanitycheck userexempts loadmodule altbotnick keyservers revengebot protectops autohalfop additional compressed mentioned listening autovoice signature statuslog uncomment directory nodesynch preferred lecturify lowercase serverror configure servlimit scripits comments chanmode settings libtcl86 logfiles paranoid autosave userfile channels blowfish inactive shooter_ realname chanfile alltools userbans obsolete redirect enabling commands transfer birthday timezone newusers undernet messages hostname filename optimize advanced eggheads telnets stealth require modules timeout replace network another pidfile example openbsd default logsize release connect compile console mkcobxs putserv scripts prevent updates sigterm disable dupwait chanrec addhost trigger eggdrop chanset capital strings letters altnick install botname prefix double suffix format number bounce verify length remote remove simple autoop mcobxs hourly should ignore botnet uptime strict banner expire wisely unbind tcllib enable reject answer notify stoned switch output fields sighup owners create select mixing dloads compat source action adding resash folder tcltls ircnet latest dalnet hybrid ircnow others sha256 offset secret onjoin static shared desire simul flood below these allow ident muste delay order bitch using flags whois cycle shell greet lines admin boots quick after learn modes party stack queue https split debug leave notes blank block vhost quiet kicks state never local efnet above life this need your core seen from ctcp made info xfer init wiki brss type idle site then with edit recv port 1337 help quit wish give okay keep make nano copy 1024 xvzf deop cmds pool also motd path 0600 perm sure text just temp sort here 3333 only 6697 7000 6667 ipv4 what any1 irc6 tar jkp max 100 fun msg 200 buf raw 180 org 300 ssl can gmt pub ftp due dcc tmp aop env fwd sum run 120 die thr sks dns usr gpg abc hp 50 gz my tz 15 36 16 dk
blob - /dev/null
blob + 50eb85ed1c274b140858f80895bf9088cf520740 (mode 644)
--- /dev/null
+++ wiki.d/0dev.0dev
@@ -0,0 +1,21 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
+author=dodocrypto
+charset=UTF-8
+csum=
+ctime=1636632859
+host=180.241.135.150
+name=0dev.0dev
+rev=3
+targets=
+text=
+time=1636686042
+author:1636686042=dodocrypto
+diff:1636686042:1636635987:=0a1,7%0a> ----%0a> %0a> Welcome To IRCNOW [ 0day (xc) Our ] WhiteHat Hacker Team and Dev. Stay tune for Tutorial on Programming and Any Tech.%0a> %0a> Join Our Support Channel at irc.ircnow.org channel #0dev . %0a> %0a> ----%0a
+host:1636686042=180.241.135.150
+author:1636635987=dodocrypto
+diff:1636635987:1636632859:=0a1%0a> %0a
+host:1636635987=180.241.135.150
+author:1636632859=dodocrypto
+diff:1636632859:1636632859:=1,8d0%0a%3c %0a%3c ----%0a%3c %0a%3c Welcome To IRCNOW [ 0day (xc) Our ] WhiteHat Hacker Team and Dev. Stay tune for Tutorial on Programming and Any Tech.%0a%3c %0a%3c Join Our Support Channel at irc.ircnow.org channel #0dev . %0a%3c %0a%3c ----%0a
+host:1636632859=180.241.135.150
blob - /dev/null
blob + f2a3a49812532c9d46dc23d9d17a62d7f025258e (mode 644)
--- /dev/null
+++ wiki.d/0dev.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
+charset=UTF-8
+ctime=1636632859
+host=180.241.135.150
+name=0dev.RecentChanges
+rev=3
+text=* [[0dev/0dev]]  . . . November 12, 2021, at 03:00 AM by [[~dodocrypto]]: [==]%0a
+time=1636686042
blob - /dev/null
blob + a247ca0fd425f36e6d201629a770c2f547d0b625 (mode 644)
--- /dev/null
+++ wiki.d/9.101
@@ -0,0 +1,46 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1634744324
+host=125.224.28.113
+name=9.101
+rev=11
+targets=
+text=(:title 9-101: An introduction to Plan 9:)%0a%0a* Describe VNC and drawterm%0a  * New users can connect using either VNC or%0a  * New users can download and open drawterm%0a* Welcome, Explorer, to Plan 9%0a  * Show how to open a window in rio%0a  * Show how to use hold, to turn command line into a text editor%0a  * Learn how to list files%0a  * Show how to scroll, edit commands, execute commands%0a  * Show basic commands for navigating filesystem%0a  * Cat a text file describing the advanced features of Plan 9%0a* Not Your Grandfather's Unix%0a  * Read description of how 9 obsoletes UNIX%0a    * Describe old legacy components that have disappeared%0a    * Describe new replacement features%0a    * Emphasize user independence and knowledge of the system%0a  * Describe filesystem hierarchy and do some basic navigation%0a  * Introduce text editor acme%0a  * Introduce text editor sam%0a  * Force users to go through basic civics courses like in unix101 using acme and sam%0a    * Add challenges that will force him to use Edit commands and 9 utilities to read through the text; make it a scavenger hunt like unix101%0a* Everything is a file%0a  * Introduce the concepts of unix pipes and redirection operators -- these will be used to finish challenges to advance to the next level%0a  * Introduce sshfs, NFS, SMB%0a    * For each protocol, users must mount the filesystem and perform some actions to find clues for the next level.%0a    * During these lessons, explain the protocols, concepts, and also add civics lessons%0a  * Introduce to gitfs, chatfs, mailfs, %0a    * Send mail with upas ( start with native mail, end with POP3 and IMAP)%0a    * Commit to a git repo with gitfs%0a    * Send a chat message with chatfs%0a* What's in a name?%0a  * Introduce per process namespaces%0a  * Give a demo where a process cannot access home folder%0a* Working with files%0a* Networking: No man is an island%0a  * Show how to create connections with /net%0a  * Discuss how Berkeley sockets have been obsoleted%0a  * Discuss how 9p replaces ssh%0a  * vncs/vncv, RDP?%0a  * ssh, telnet%0a* Halt, who goes there?%0a  * Introduction to Auth%0a  * Factotum%0a  * NDB -- database and network%0a* Unix, Dinosaurs, and other Legacy Software%0a* Virtualization with VMX%0a  * Set up Linux, BSD inside a virtual machine%0a  * linuxemu%0a* rc scripting%0a  * end with basic usage of window%0a* Ports%0a  * How to install 3rd party software%0a  * Porting from unix to 9%0a* Installing 9%0a  * File systems%0a    * RAMFS, 9p%0a    * cwfs and hjfs%0a  * File servers%0a    * wsys/ctl ?%0a* CPU server%0a  * Explain drawterm, rcpu, and service=cpu%0a* Beyond Plan 9%0a  * Inferno%0a  * 9front%0a  * 9legacy%0a
+time=1634748818
+title=9-101: An introduction to Plan 9
+author:1634748818=jrmu
+diff:1634748818:1634748646:=33,34c33%0a%3c   * Introduce per process namespaces%0a%3c   * Give a demo where a process cannot access home folder%0a---%0a>   * Introduce per process namespaces -- %0a
+host:1634748818=125.224.28.113
+author:1634748646=jrmu
+diff:1634748646:1634748371:=20,21c20%0a%3c   * Introduce text editor sam%0a%3c   * Force users to go through basic civics courses like in unix101 using acme and sam%0a---%0a>   * Force users to go through basic civics courses like in unix101 using acme%0a39,40d37%0a%3c   * vncs/vncv, RDP?%0a%3c   * ssh, telnet%0a47,53c44,45%0a%3c   * Set up Linux, BSD inside a virtual machine%0a%3c   * linuxemu%0a%3c * rc scripting%0a%3c   * end with basic usage of window%0a%3c * Ports%0a%3c   * How to install 3rd party software%0a%3c   * Porting from unix to 9%0a---%0a>   Set up Linux, BSD inside a virtual machine%0a> * Ports ( unix to 9)%0a55,65c47,62%0a%3c   * File systems%0a%3c     * RAMFS, 9p%0a%3c     * cwfs and hjfs%0a%3c   * File servers%0a%3c     * wsys/ctl ?%0a%3c * CPU server%0a%3c   * Explain drawterm, rcpu, and service=cpu%0a%3c * Beyond Plan 9%0a%3c   * Inferno%0a%3c   * 9front%0a%3c   * 9legacy%0a---%0a>   %0a> * ssh, telnet, vncv, RDP (alien remote alien)%0a> %0a> * Beyond Plan9?%0a> (start with 'window' go on with acme, sam and end with wsys?)%0a> * rc the shell (end with basic usage of 'window')%0a> * File servers (start with wsys? ctl? ???? slowly end with 9p? and %0a>             file systems)%0a> * File systems start with ramfs, 9p and slowly go on CWFS and hjfs. %0a>             (no fossil)?%0a> * Users (start with cwfs, end with auth and security)%0a> * service=FS (file sharing, end with alien)%0a> * vncs, ssh?, telnetd? (alien remote 9)%0a> * drawterm, rcpu and service=cpu (9 remote 9/ 9 remote alien)%0a> * linuxemu%0a> but not sure if that fits well%0a
+host:1634748646=125.224.28.113
+author:1634748371=jrmu
+diff:1634748371:1634748034:=37,49c37,38%0a%3c   * Discuss how 9p replaces ssh%0a%3c * Halt, who goes there?%0a%3c   * Introduction to Auth%0a%3c   * Factotum%0a%3c   * NDB -- database and network%0a%3c * Unix, Dinosaurs, and other Legacy Software%0a%3c * Virtualization with VMX%0a%3c   Set up Linux, BSD inside a virtual machine%0a%3c * Ports ( unix to 9)%0a%3c * Installing 9%0a%3c   %0a%3c * ssh, telnet, vncv, RDP (alien remote alien)%0a%3c %0a---%0a> %0a> %0a57a47,51%0a> * Auth?%0a> * Factotum, end with basis of NDB?%0a> * NDB - Database part%0a> * NDB - Network part%0a> * Networking (native)%0a58a53%0a> * ssh, telnet, vncv, RDP (alien remote alien)%0a60a56%0a> * ports ( unix to 9)%0a61a58,59%0a> * VMX%0a> * dealing UNIX, Windows and other aliens%0a
+host:1634748371=125.224.28.113
+author:1634748034=jrmu
+diff:1634748034:1634747906:=31,39c31%0a%3c * What's in a name?%0a%3c   * Introduce per process namespaces -- %0a%3c * Working with files%0a%3c * Networking: No man is an island%0a%3c   * Show how to create connections with /net%0a%3c   * Discuss how Berkeley sockets have been obsoleted%0a%3c %0a%3c %0a%3c * Beyond Plan9?%0a---%0a> %0a50a43%0a> * /net (merge with "Networking (native)"?)%0a59a53%0a> * Beyond Plan9?%0a
+host:1634748034=125.224.28.113
+author:1634747906=jrmu
+diff:1634747906:1634747717:=24c24%0a%3c   * Introduce sshfs, NFS, SMB%0a---%0a>   * Introduce sshfs, gitfs, chatfs, mailfs%0a27,31c27%0a%3c   * Introduce to gitfs, chatfs, mailfs, %0a%3c     * Send mail with upas ( start with native mail, end with POP3 and IMAP)%0a%3c     * Commit to a git repo with gitfs%0a%3c     * Send a chat message with chatfs%0a%3c %0a---%0a> %0a44a41,42%0a> * Mailing with upas ( start with native mail, end with POP3 and %0a>             IMAP)%0a45a44%0a> * NFS, SMB, sshfs (start with NFS, end with ssh)%0a
+host:1634747906=125.224.28.113
+author:1634747717=jrmu
+diff:1634747717:1634747550:=21,26d20%0a%3c     * Add challenges that will force him to use Edit commands and 9 utilities to read through the text; make it a scavenger hunt like unix101%0a%3c * Everything is a file%0a%3c   * Introduce the concepts of unix pipes and redirection operators -- these will be used to finish challenges to advance to the next level%0a%3c   * Introduce sshfs, gitfs, chatfs, mailfs%0a%3c     * For each protocol, users must mount the filesystem and perform some actions to find clues for the next level.%0a%3c     * During these lessons, explain the protocols, concepts, and also add civics lessons%0a
+host:1634747717=125.224.28.113
+author:1634747550=jrmu
+diff:1634747550:1634747469:=3,5d2%0a%3c * Describe VNC and drawterm%0a%3c   * New users can connect using either VNC or%0a%3c   * New users can download and open drawterm%0a
+host:1634747550=125.224.28.113
+author:1634747469=jrmu
+diff:1634747469:1634747415:=12,14c12,14%0a%3c     * Describe old legacy components that have disappeared%0a%3c     * Describe new replacement features%0a%3c     * Emphasize user independence and knowledge of the system%0a---%0a>     -- Describe old legacy components that have disappeared%0a>     -- Describe new replacement features%0a>     -- Emphasize user independence and knowledge of the system%0a16,19c16,17%0a%3c   * Introduce text editor acme%0a%3c   * Force users to go through basic civics courses like in unix101 using acme%0a%3c %0a%3c (start with 'window' go on with acme, sam and end with wsys?)%0a---%0a>   * Force users to go through basic civics courses like in unix101%0a> %0a20a19,20%0a> * Graphics (start with 'window' go on with acme, sam and end with %0a>             wsys?)%0a
+host:1634747469=125.224.28.113
+author:1634747415=jrmu
+diff:1634747415:1634747094:=2,17c2,3%0a%3c %0a%3c * Welcome, Explorer, to Plan 9%0a%3c   * Show how to open a window in rio%0a%3c   * Show how to use hold, to turn command line into a text editor%0a%3c   * Learn how to list files%0a%3c   * Show how to scroll, edit commands, execute commands%0a%3c   * Show basic commands for navigating filesystem%0a%3c   * Cat a text file describing the advanced features of Plan 9%0a%3c * Not Your Grandfather's Unix%0a%3c   * Read description of how 9 obsoletes UNIX%0a%3c     -- Describe old legacy components that have disappeared%0a%3c     -- Describe new replacement features%0a%3c     -- Emphasize user independence and knowledge of the system%0a%3c   * Describe filesystem hierarchy and do some basic navigation%0a%3c   * Force users to go through basic civics courses like in unix101%0a%3c %0a---%0a> ** Index%0a> * Plan9, beyond UNIX%0a
+host:1634747415=125.224.28.113
+author:1634747094=jrmu
+diff:1634747094:1634744324:=1c1%0a%3c (:title 9-101: An introduction to Plan 9:)%0a---%0a> __Plan9 guide%0a
+host:1634747094=125.224.28.113
+author:1634744324=jrmu
+diff:1634744324:1634744324:=1,30d0%0a%3c __Plan9 guide%0a%3c ** Index%0a%3c * Plan9, beyond UNIX%0a%3c * rc the shell (end with basic usage of 'window')%0a%3c * Graphics (start with 'window' go on with acme, sam and end with %0a%3c             wsys?)%0a%3c * File servers (start with wsys? ctl? ???? slowly end with 9p? and %0a%3c             file systems)%0a%3c * File systems start with ramfs, 9p and slowly go on CWFS and hjfs. %0a%3c             (no fossil)?%0a%3c * Users (start with cwfs, end with auth and security)%0a%3c * Auth?%0a%3c * Factotum, end with basis of NDB?%0a%3c * NDB - Database part%0a%3c * NDB - Network part%0a%3c * /net (merge with "Networking (native)"?)%0a%3c * Networking (native)%0a%3c * Mailing with upas ( start with native mail, end with POP3 and %0a%3c             IMAP)%0a%3c * service=FS (file sharing, end with alien)%0a%3c * NFS, SMB, sshfs (start with NFS, end with ssh)%0a%3c * ssh, telnet, vncv, RDP (alien remote alien)%0a%3c * vncs, ssh?, telnetd? (alien remote 9)%0a%3c * drawterm, rcpu and service=cpu (9 remote 9/ 9 remote alien)%0a%3c * ports ( unix to 9)%0a%3c * linuxemu%0a%3c * VMX%0a%3c * dealing UNIX, Windows and other aliens%0a%3c * Beyond Plan9?%0a%3c but not sure if that fits well%0a
+host:1634744324=125.224.28.113
blob - /dev/null
blob + 44ffafd75ae43f0d70b1e98eb0cb468878270cc5 (mode 644)
--- /dev/null
+++ wiki.d/9.9
@@ -0,0 +1,37 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0
+author=xfnw
+charset=UTF-8
+csum=fix some grammatical errors
+ctime=1631917902
+host=71.246.231.249
+name=9.9
+rev=7
+targets=
+text=(:title 9:)%0ain 1970 UNIX was created as a small version of multiics on PDP-11 asm language, few years later it got rewritten on C.%0aone of reasons of UNIX popularity was unified file system view, everything was on files, hence you could use same toolbox.%0aas time goes, it gets replaced by the fact that everyone uses UNIX because everyone uses UNIX.%0aand started to port alien programs, using alien ways and alien interface.%0a%0ahowever, all UNIXes share these problems, even on most modern and advanced versions of *nix-like systems:%0a%0a* UNIX was a multiuser system for mainframes, poorly ported to PC (i386 and amd64) platform and still doesn't fit. and it will be worse on Risc-V/aarch64.%0a%0a* Research UNIX itself was about the showing all resources as files, this is ignored by modern UNIX as there are many examples for it. (on graphics, networking, audio and security)%0a%0a* networking on UNIX is most of time is done using sockets (BSD and Linux) and STREAMS (SystemV) both apply poorly to modern networking.%0a%0aNo version of UNIX was able to solve these problems, as all UNIXes are trying to do something in different ways.%0aPlan9 however, doesn't try to be a UNIX. it doesn many stuff on UNIX such as (sym, hard)links, sockets, X11, sh, chroot, NFS, teletype terminals, sysctls, daemons, ssh, dynamic linked programs, /etc, dotfiles and root.%0a%0aInstead of all of those features on UNIX, Plan9 solves problems with two key ideas:%0a%0a* 9p: a unified protocol for programs to create do file operations, on userland, which solves many problems about files and makes a unified UI. which makes usage of everything is file possible by *whole* system. %0a* private namespaces: which allows each process has it's own view on file system, which solves many problems about security and makes extending system without touching it possible.%0a%0afor example let's say you have your httpd and you want to do chroot on /var/www for httpd.%0aon OpenBSD it would be like:%0a[@%0a1) copy all files needed to run httpd to /var/www/%0a2) chroot%0a3) httpd%0a@]%0a%0aif you have ever bothered to it, you know how hard it is to do. thanks to magic of dynamic linked programs.%0aon Plan9 it can be done in two ways:%0a[@%0a1) bind /var/www to /%0a2) httpd%0a@]%0a%0athis one will be more like classic chroot, besides that there is no dynamic linked httpd to annoy you it's same.%0aall sub-process will see /var/www as / and there is no way to escape it, all other procs will work as expected.%0ahowever, the magic will happen on other way:%0a%0a1) bind everything you don't need to a empty place.%0a2) httpd%0a%0athis will be more like unveil, OpenBSD used it as easier way for users to handle this problem.%0athe drawback of unveil is it will need some serious hacking around the program, binds don't have this problem.%0a%0aanother example:%0alet's say you don't want to have /secret-data folder to be visable by httpd.%0a%0a[@%0a%25 mkdir empty%0a%25 bind empty/ /secret-data %0a%25 httpd%0a@]%0a%0ahttpd will never know what is really on /secret-data, it just will see whatever is on empty/%0aall other procs (besides httpd forks), will see /secret-data as is.
+time=1640172607
+title=9
+author:1640172607=xfnw
+csum:1640172607=fix some grammatical errors
+diff:1640172607:1640168629:=7,10c7,10%0a%3c however, all UNIXes share these problems, even on most modern and advanced versions of *nix-like systems:%0a%3c %0a%3c * UNIX was a multiuser system for mainframes, poorly ported to PC (i386 and amd64) platform and still doesn't fit. and it will be worse on Risc-V/aarch64.%0a%3c %0a---%0a> however, all UNIXes share these problems, even on most modern and advacned versions of *nix-like systems:%0a> %0a> * UNIX was a multiuser system for mainframes, poorly ported to PC (i386 and amd64) platform and still doesn't fit. and it will be worth on Risc-V/aarch64.%0a> %0a13,17c13,17%0a%3c * networking on UNIX is most of time is done using sockets (BSD and Linux) and STREAMS (SystemV) both apply poorly to modern networking.%0a%3c %0a%3c No version of UNIX was able to solve these problems, as all UNIXes are trying to do something in different ways.%0a%3c Plan9 however, doesn't try to be a UNIX. it doesn many stuff on UNIX such as (sym, hard)links, sockets, X11, sh, chroot, NFS, teletype terminals, sysctls, daemons, ssh, dynamic linked programs, /etc, dotfiles and root.%0a%3c %0a---%0a> * networking on UNIX is most of time is done using sockets (BSD and Linux) and STREAMS(SystemV) both apply poorly to modern networking.%0a> %0a> No version of UNIX was able to solve these problems, as all UNIXes are trying to do samething on differnt ways.%0a> Plan9 however, doesn't try to be a UNIX. it doesn many stuff on UNIX such as (sym, hard)links, sockets, X11, sh, chroot, NFS, teletype terminals, sysctls, deamons, ssh, dynamic linked programs, /etc, dotfiles and root.%0a> %0a20c20%0a%3c * 9p: a unified protocol for programs to create do file operations, on userland, which solves many problems about files and makes a unified UI. which makes usage of everything is file possible by *whole* system. %0a---%0a> * 9p: a unified protocol for programs to create do file opertations, on userland, which solves many problems about files and makes a unified UI. which makes usage of everything is file possible by *whole* system. %0a
+host:1640172607=71.246.231.249
+author:1640168629=mkf
+csum:1640168629="Streams means something different when shouted""
+diff:1640168629:1631931654:=13c13%0a%3c * networking on UNIX is most of time is done using sockets (BSD and Linux) and STREAMS(SystemV) both apply poorly to modern networking.%0a---%0a> * networking on UNIX is most of time is done using sockets (BSD and Linux) and streams (SystemV) both apply poorly to modern networking.%0a
+host:1640168629=2.178.205.209
+author:1631931654=mkf
+diff:1631931654:1631927961:minor=25d24%0a%3c [@%0a29,30c28%0a%3c @]%0a%3c %0a---%0a> %0a33d30%0a%3c [@%0a36d32%0a%3c @]%0a
+host:1631931654=198.251.81.133
+author:1631927961=mkf
+diff:1631927961:1631927404:=45c45%0a%3c let's say you don't want to have /secret-data folder to be visable by httpd.%0a---%0a> let's say you don't want to have /secret-datafolder to be visable by httpd.%0a
+host:1631927961=198.251.81.133
+author:1631927404=mkf
+diff:1631927404:1631918002:minor=2c2%0a%3c in 1970 UNIX was created as a small version of multiics on PDP-11 asm language, few years later it got rewritten on C.%0a---%0a> in 1970 UNIX was created as a small version of multicis on PDP-11 asm language, few years later it got rewritten on C.%0a45,47c45,46%0a%3c let's say you don't want to have /secret-datafolder to be visable by httpd.%0a%3c %0a%3c [@%0a---%0a> let's say you don't want to have /secret-data folder to be visable by httpd.%0a> %0a51d49%0a%3c @]%0a
+host:1631927404=2.178.137.21
+author:1631918002=mkf
+diff:1631918002:1631917902:=0a1%0a> %0a42,44c43%0a%3c the drawback of unveil is it will need some serious hacking around the program, binds don't have this problem.%0a%3c %0a%3c another example:%0a---%0a> the drawback is it will need some serious hacking around the program.%0a
+host:1631918002=198.251.81.133
+author:1631917902=mkf
+csum:1631917902=Hi. :)
+diff:1631917902:1631917902:=1,51d0%0a%3c %0a%3c (:title 9:)%0a%3c in 1970 UNIX was created as a small version of multicis on PDP-11 asm language, few years later it got rewritten on C.%0a%3c one of reasons of UNIX popularity was unified file system view, everything was on files, hence you could use same toolbox.%0a%3c as time goes, it gets replaced by the fact that everyone uses UNIX because everyone uses UNIX.%0a%3c and started to port alien programs, using alien ways and alien interface.%0a%3c %0a%3c however, all UNIXes share these problems, even on most modern and advacned versions of *nix-like systems:%0a%3c %0a%3c * UNIX was a multiuser system for mainframes, poorly ported to PC (i386 and amd64) platform and still doesn't fit. and it will be worth on Risc-V/aarch64.%0a%3c %0a%3c * Research UNIX itself was about the showing all resources as files, this is ignored by modern UNIX as there are many examples for it. (on graphics, networking, audio and security)%0a%3c %0a%3c * networking on UNIX is most of time is done using sockets (BSD and Linux) and streams (SystemV) both apply poorly to modern networking.%0a%3c %0a%3c No version of UNIX was able to solve these problems, as all UNIXes are trying to do samething on differnt ways.%0a%3c Plan9 however, doesn't try to be a UNIX. it doesn many stuff on UNIX such as (sym, hard)links, sockets, X11, sh, chroot, NFS, teletype terminals, sysctls, deamons, ssh, dynamic linked programs, /etc, dotfiles and root.%0a%3c %0a%3c Instead of all of those features on UNIX, Plan9 solves problems with two key ideas:%0a%3c %0a%3c * 9p: a unified protocol for programs to create do file opertations, on userland, which solves many problems about files and makes a unified UI. which makes usage of everything is file possible by *whole* system. %0a%3c * private namespaces: which allows each process has it's own view on file system, which solves many problems about security and makes extending system without touching it possible.%0a%3c %0a%3c for example let's say you have your httpd and you want to do chroot on /var/www for httpd.%0a%3c on OpenBSD it would be like:%0a%3c 1) copy all files needed to run httpd to /var/www/%0a%3c 2) chroot%0a%3c 3) httpd%0a%3c %0a%3c if you have ever bothered to it, you know how hard it is to do. thanks to magic of dynamic linked programs.%0a%3c on Plan9 it can be done in two ways:%0a%3c 1) bind /var/www to /%0a%3c 2) httpd%0a%3c %0a%3c this one will be more like classic chroot, besides that there is no dynamic linked httpd to annoy you it's same.%0a%3c all sub-process will see /var/www as / and there is no way to escape it, all other procs will work as expected.%0a%3c however, the magic will happen on other way:%0a%3c %0a%3c 1) bind everything you don't need to a empty place.%0a%3c 2) httpd%0a%3c %0a%3c this will be more like unveil, OpenBSD used it as easier way for users to handle this problem.%0a%3c the drawback is it will need some serious hacking around the program.%0a%3c let's say you don't want to have /secret-data folder to be visable by httpd.%0a%3c %0a%3c %25 mkdir empty%0a%3c %25 bind empty/ /secret-data %0a%3c %25 httpd%0a%3c %0a%3c httpd will never know what is really on /secret-data, it just will see whatever is on empty/%0a%3c all other procs (besides httpd forks), will see /secret-data as is.%0a\ No newline at end of file%0a
+host:1631917902=198.251.81.133
blob - /dev/null
blob + ddf007b43bcd50e46c869f6db93558f98536fbaa (mode 644)
--- /dev/null
+++ wiki.d/9.9gridchan
@@ -0,0 +1,101 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1635241613
+host=38.87.162.8
+name=9.9gridchan
+rev=29
+targets=
+text=!! From Plan9%0a%0aReplace $user with your username.%0a%0a[@%0a; 9fs tcp!cloud9p.org!900 /n/chat%0a; cat /n/chat/chat &%0a; while() echo `{date -u -f 'hh:mm'} '%3c'$user'>' `{read} >> /n/chat/chat%0a@]%0a%0a(:if false:)%0a[@%0a; srv tcp!cloud9p.org!900 gridchat /n/chat%0a; cat /n/chat/chat &%0a; while() read | sed '1s/^/Guest → /' >> /n/chat/chat%0a@]%0a(:ifend:)%0a%0a!! From UNIX:%0a%0aInstall [[https://9fans.github.io/plan9port/|plan9port]].%0a%0aOn OpenBSD:%0aeither libixp or plan9port works, just replace command name,%0a%0a[@%0a$ doas pkg_add plan9port%0a@]%0a%0aNow to connect, run:%0a%0a[@%0a$ 9 9p -a 'tcp!cloud9p.org!900' read chat | sed "s/$/$(echo '\a')/" &%0awhile read l; do echo $(date -u "+%25H:%25M") $USER → "$l"%0adone | 9 9p -a 'tcp!cloud9p.org!900' write chat%0a@]%0a%0aNote: hubfs does not work with tail, so it is not possible to run tail on the chat file. %0a
+time=1693721785
+author:1693721785=jrmu
+diff:1693721785:1692981273:=37,38d36%0a%3c %0a%3c Note: hubfs does not work with tail, so it is not possible to run tail on the chat file. %0a
+host:1693721785=38.87.162.8
+author:1692981273=jrmu
+diff:1692981273:1692972446:=3c3%0a%3c Replace $user with your username.%0a---%0a> Replace Guest with your username.%0a
+host:1692981273=38.87.162.8
+author:1692972446=jrmu
+diff:1692972446:1692972358:=8c8%0a%3c ; while() echo `{date -u -f 'hh:mm'} '%3c'$user'>' `{read} >> /n/chat/chat%0a---%0a> ; while() echo `{date -u -f 'hh:mm'} '%3cGuest>' `{read} >> /n/chat/chat%0a
+host:1692972446=38.87.162.8
+author:1692972358=jrmu
+diff:1692972358:1692972235:=8a9%0a> ; while() cat %3c{date -u -f 'hh:mm'} %3c{read} | sed '{N;s/\n//; s/^([0-9]+:[0-9]+)/& %3cGuest> /;}' >> /n/chat/chat%0a
+host:1692972358=38.87.162.8
+author:1692972235=jrmu
+diff:1692972235:1692972171:=8c8%0a%3c ; while() echo `{date -u -f 'hh:mm'} '%3cGuest>' `{read} >> /n/chat/chat%0a---%0a> ; while() echo `{date -u -f 'hh:mm'} '%3cGuest> ' `{read} >> /n/chat/chat%0a
+host:1692972235=38.87.162.8
+author:1692972171=jrmu
+diff:1692972171:1692970899:=8d7%0a%3c ; while() echo `{date -u -f 'hh:mm'} '%3cGuest> ' `{read} >> /n/chat/chat%0a
+host:1692972171=38.87.162.8
+author:1692970899=jrmu
+diff:1692970899:1692970576:=8c8%0a%3c ; while() cat %3c{date -u -f 'hh:mm'} %3c{read} | sed '{N;s/\n//; s/^([0-9]+:[0-9]+)/& %3cGuest> /;}' >> /n/chat/chat%0a---%0a> ; while() cat %3c{date -u -f 'hh:mm'} %3c{read} | sed '{N;s/\n//; s/^([0-9:]{5})/& %3cGuest> /;}' >> /n/chat/chat%0a
+host:1692970899=38.87.162.8
+author:1692970576=jrmu
+diff:1692970576:1692940675:=8c8%0a%3c ; while() cat %3c{date -u -f 'hh:mm'} %3c{read} | sed '{N;s/\n//; s/^([0-9:]{5})/& %3cGuest> /;}' >> /n/chat/chat%0a---%0a> ; while() cat %3c{date -u -f 'hh:mm'} %3c{read} | sed '{N;s/\n//; s/^([0-9:]+)/& %3cGuest> /;}' >> /n/chat/chat%0a
+host:1692970576=38.87.162.8
+author:1692940675=jrmu
+diff:1692940675:1692940665:=
+host:1692940675=38.87.162.8
+author:1692940665=jrmu
+diff:1692940665:1692940026:=8c8%0a%3c ; while() cat %3c{date -u -f 'hh:mm'} %3c{read} | sed '{N;s/\n//; s/^([0-9:]+)/& %3cGuest> /;}' >> /n/chat/chat%0a---%0a> ; while() cat %3c{date -u -f 'hh:mm'} %3c{read | sed '1s/^/%3cjrmu9> /'} | sed '{N;s/\n/ /;}' >> /n/chat/chat%0a
+host:1692940665=38.87.162.8
+author:1692940026=jrmu
+diff:1692940026:1689751063:=8c8%0a%3c ; while() cat %3c{date -u -f 'hh:mm'} %3c{read | sed '1s/^/%3cjrmu9> /'} | sed '{N;s/\n/ /;}' >> /n/chat/chat%0a---%0a> ; while() read | sed '1s/^/Guest → /' >>/n/chat/chat%0a
+host:1692940026=38.87.162.8
+author:1689751063=mkf
+diff:1689751063:1683383918:=24,25c24%0a%3c either libixp or plan9port works, just replace command name,%0a%3c %0a---%0a> %0a28a28,29%0a> %0a> On Linux, you may have to compile from source.%0a
+host:1689751063=198.251.81.133
+author:1683383918=fossdev
+diff:1683383918:1674370876:=1,2d0%0a%3c !! From Plan9%0a%3c %0a19,20c17,18%0a%3c !! From UNIX:%0a%3c %0a---%0a> From UNIX:%0a> %0a31,32c29%0a%3c Now to connect, run:%0a%3c %0a---%0a> %0a35c32%0a%3c while read l; do echo $(date -u "+%25H:%25M") $USER → "$l"%0a---%0a> while read l; do echo $(date -z UTC +%25H:%25M) $USER → "$l"%0a
+host:1683383918=182.64.32.227
+author:1674370876=jrmu
+diff:1674370876:1674370776:=32c32%0a%3c while read l; do echo $(date -z UTC +%25H:%25M) $USER → "$l"%0a---%0a> while read l; do echo $(date +%25H:%25M) $USER → "$l"%0a
+host:1674370876=38.87.162.8
+author:1674370776=jrmu
+diff:1674370776:1674217024:=31,32c31,32%0a%3c $ 9 9p -a 'tcp!cloud9p.org!900' read chat | sed "s/$/$(echo '\a')/" &%0a%3c while read l; do echo $(date +%25H:%25M) $USER → "$l"%0a---%0a> $ 9 9p -a 'tcp!cloud9p.org!900' read chat &%0a> while read l; do echo $USER → "$l"%0a
+host:1674370776=38.87.162.8
+author:1674217024=mkf
+diff:1674217024:1644878891:=4c4%0a%3c ; 9fs tcp!cloud9p.org!900 /n/chat%0a---%0a> ; 9fs tcp!cloud9p.org!9000 /n/chat%0a11c11%0a%3c ; srv tcp!cloud9p.org!900 gridchat /n/chat%0a---%0a> ; srv tcp!cloud9p.org!9000 gridchat /n/chat%0a13c13%0a%3c ; while() read | sed '1s/^/Guest → /' >> /n/chat/chat%0a---%0a> ; while() read | sed '1s/^/Guest _ /' >> /n/chat/chat%0a31c31%0a%3c $ 9 9p -a 'tcp!cloud9p.org!900' read chat &%0a---%0a> $ 9 9p -a 'tcp!cloud9p.org!9000' read chat &%0a33c33%0a%3c done | 9 9p -a 'tcp!cloud9p.org!900' write chat%0a---%0a> done | 9 9p -a 'tcp!cloud9p.org!9000' write chat%0a
+host:1674217024=38.87.162.242
+author:1644878891=jrmu
+diff:1644878891:1644878804:=18,28d17%0a%3c %0a%3c Install [[https://9fans.github.io/plan9port/|plan9port]].%0a%3c %0a%3c On OpenBSD:%0a%3c %0a%3c [@%0a%3c $ doas pkg_add plan9port%0a%3c @]%0a%3c %0a%3c On Linux, you may have to compile from source.%0a%3c %0a
+host:1644878891=38.87.162.8
+author:1644878804=jrmu
+diff:1644878804:1640247000:=4c4%0a%3c ; 9fs tcp!cloud9p.org!9000 /n/chat%0a---%0a> ; 9fs tcp!watermelon.ircnow.org!9000 /n/chat%0a11c11%0a%3c ; srv tcp!cloud9p.org!9000 gridchat /n/chat%0a---%0a> ; srv tcp!watermelon.ircnow.org!9000 gridchat /n/chat%0a20c20%0a%3c $ 9 9p -a 'tcp!cloud9p.org!9000' read chat &%0a---%0a> $ 9 9p -a 'tcp!watermelon.ircnow.org!9000' read chat &%0a22c22%0a%3c done | 9 9p -a 'tcp!cloud9p.org!9000' write chat%0a---%0a> done | 9 9p -a 'tcp!watermelon.ircnow.org!9000' write chat%0a
+host:1644878804=38.87.162.8
+author:1640247000=jrmu
+diff:1640247000:1639456674:=8,15d7%0a%3c %0a%3c (:if false:)%0a%3c [@%0a%3c ; srv tcp!watermelon.ircnow.org!9000 gridchat /n/chat%0a%3c ; cat /n/chat/chat &%0a%3c ; while() read | sed '1s/^/Guest _ /' >> /n/chat/chat%0a%3c @]%0a%3c (:ifend:)%0a
+host:1640247000=38.87.162.8
+author:1639456674=mkf
+diff:1639456674:1639241684:=13c13%0a%3c while read l; do echo $USER → "$l"%0a---%0a> while read l; do echo $USER _ "$l"%0a
+host:1639456674=80.210.50.203
+author:1639241684=jrmu
+diff:1639241684:1639241374:=13,14c13,14%0a%3c while read l; do echo $USER _ "$l"%0a%3c done | 9 9p -a 'tcp!watermelon.ircnow.org!9000' write chat%0a---%0a> $ while read l; do echo $USER _ "$l"%0a> $ done | 9 9p -a 'tcp!watermelon.ircnow.org!9000' write chat%0a
+host:1639241684=38.87.162.8
+author:1639241374=jrmu
+diff:1639241374:1636722175:=7,14d6%0a%3c @]%0a%3c %0a%3c From UNIX:%0a%3c %0a%3c [@%0a%3c $ 9 9p -a 'tcp!watermelon.ircnow.org!9000' read chat &%0a%3c $ while read l; do echo $USER _ "$l"%0a%3c $ done | 9 9p -a 'tcp!watermelon.ircnow.org!9000' write chat%0a
+host:1639241374=38.87.162.8
+author:1636722175=mkf
+csum:1636722175=wheee
+diff:1636722175:1636041961:=0a1%0a> %0a4c5%0a%3c ; 9fs tcp!watermelon.ircnow.org!9000 /n/chat%0a---%0a> ; 9fs tcp!mkf.host.bsdforall.org!9667 /n/chat%0a
+host:1636722175=190.2.138.14
+author:1636041961=meeekeeef
+csum:1636041961=less confusing now
+diff:1636041961:1635418778:=2,3d1%0a%3c Replace Guest with your username.%0a%3c %0a5c3%0a%3c ; 9fs tcp!mkf.host.bsdforall.org!9667 /n/chat%0a---%0a> ; srv tcp!mkf.host.bsdforall.org!9667 gridchat /n/chat%0a7c5,15%0a%3c ; while() read | sed '1s/^/Guest → /' >>/n/chat/chat%0a---%0a> ; while() read | sed '1s/^/Guest → /' >> /n/chat/chat%0a> @]%0a> %0a> Replace Guest with your username.%0a> %0a> Alternative:%0a> %0a> [@%0a> ; 9fs tcp!mkf.host.bsdforall.org!9667%0a> ; cat /n/mkf.host.bsdforall.org!9667/chat &%0a> ; while() read | sed '1s/^/Guest → /' >>/n/mkf.host.bsdforall.org!9667/chat%0a
+host:1636041961=198.251.81.133
+author:1635418778=mkf
+diff:1635418778:1635418760:=0a1%0a> To chat on 9gridchan:%0a
+host:1635418778=91.185.147.106
+author:1635418760=mkf
+diff:1635418760:1635417157:=4c4%0a%3c ; srv tcp!mkf.host.bsdforall.org!9667 gridchat /n/chat%0a---%0a> ; srv tcp!chat.9p.zone!9990 gridchat /n/chat%0a14,16c14,16%0a%3c ; 9fs tcp!mkf.host.bsdforall.org!9667%0a%3c ; cat /n/mkf.host.bsdforall.org!9667/chat &%0a%3c ; while() read | sed '1s/^/Guest → /' >>/n/mkf.host.bsdforall.org!9667/chat%0a---%0a> ; 9fs tcp!chat.9p.zone!9990%0a> ; cat /n/chat.9p.zone!9990/chat &%0a> ; while() read | sed '1s/^/Guest → /' >>/n/chat.9p.zone!9990/chat%0a
+host:1635418760=91.185.147.106
+author:1635417157=mkf
+diff:1635417157:1635244493:=6c6%0a%3c ; while() read | sed '1s/^/Guest → /' >> /n/chat/chat%0a---%0a> ; while() read | sed '1s/^/USERNAME _ /' >> /n/chat/chat%0a9,10c9,10%0a%3c Replace Guest with your username.%0a%3c %0a---%0a> Replace USERNAME with your username.%0a> %0a16c16%0a%3c ; while() read | sed '1s/^/Guest → /' >>/n/chat.9p.zone!9990/chat%0a---%0a> ; while() read | sed '1s/^/USERNAME _ /' >>/n/chat.9p.zone!9990/chat%0a
+host:1635417157=91.185.147.106
+author:1635244493=jrmu
+diff:1635244493:1635241613:=4,6c4,6%0a%3c ; srv tcp!chat.9p.zone!9990 gridchat /n/chat%0a%3c ; cat /n/chat/chat &%0a%3c ; while() read | sed '1s/^/USERNAME _ /' >> /n/chat/chat%0a---%0a> ; 9fs tcp!chat.9p.zone!9990%0a> ; cat /n/chat.9p.zone!9990/chat &%0a> ; while() read | sed '1s/^/USERNAME _ /' >>/n/chat.9p.zone!9990/chat%0a10,17d9%0a%3c %0a%3c Alternative:%0a%3c %0a%3c [@%0a%3c ; 9fs tcp!chat.9p.zone!9990%0a%3c ; cat /n/chat.9p.zone!9990/chat &%0a%3c ; while() read | sed '1s/^/USERNAME _ /' >>/n/chat.9p.zone!9990/chat%0a%3c @]%0a
+host:1635244493=38.87.162.8
+author:1635241613=jrmu
+diff:1635241613:1635241613:=1,9d0%0a%3c To chat on 9gridchan:%0a%3c %0a%3c [@%0a%3c ; 9fs tcp!chat.9p.zone!9990%0a%3c ; cat /n/chat.9p.zone!9990/chat &%0a%3c ; while() read | sed '1s/^/USERNAME _ /' >>/n/chat.9p.zone!9990/chat%0a%3c @]%0a%3c %0a%3c Replace USERNAME with your username.%0a
+host:1635241613=38.87.162.8
blob - /dev/null
blob + d193be7ea67101da8f013ed4806b291f3cde3af8 (mode 644)
--- /dev/null
+++ wiki.d/9.9gridchan-Draft,del-1692940675
@@ -0,0 +1,74 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1635241613
+host=38.87.162.8
+name=9.9gridchan-Draft
+rev=20
+targets=
+text=!! From Plan9%0a%0aReplace Guest with your username.%0a%0a[@%0a; 9fs tcp!cloud9p.org!900 /n/chat%0a; cat /n/chat/chat &%0a; while() cat %3c{date -u -f 'hh:mm'} %3c{read} | sed '{N;s/\n//; s/^([0-9:]+)/& %3cGuest> /;}' >> /n/chat/chat%0a@]%0a%0a(:if false:)%0a[@%0a; srv tcp!cloud9p.org!900 gridchat /n/chat%0a; cat /n/chat/chat &%0a; while() read | sed '1s/^/Guest → /' >> /n/chat/chat%0a@]%0a(:ifend:)%0a%0a!! From UNIX:%0a%0aInstall [[https://9fans.github.io/plan9port/|plan9port]].%0a%0aOn OpenBSD:%0aeither libixp or plan9port works, just replace command name,%0a%0a[@%0a$ doas pkg_add plan9port%0a@]%0a%0aNow to connect, run:%0a%0a[@%0a$ 9 9p -a 'tcp!cloud9p.org!900' read chat | sed "s/$/$(echo '\a')/" &%0awhile read l; do echo $(date -u "+%25H:%25M") $USER → "$l"%0adone | 9 9p -a 'tcp!cloud9p.org!900' write chat%0a@]%0a
+time=1692940665
+author:1692940665=jrmu
+diff:1692940665:1692940026:=8c8%0a%3c ; while() cat %3c{date -u -f 'hh:mm'} %3c{read} | sed '{N;s/\n//; s/^([0-9:]+)/& %3cGuest> /;}' >> /n/chat/chat%0a---%0a> ; while() cat %3c{date -u -f 'hh:mm'} %3c{read | sed '1s/^/%3cjrmu9> /'} | sed '{N;s/\n/ /;}' >> /n/chat/chat%0a
+host:1692940665=38.87.162.8
+author:1692940026=jrmu
+diff:1692940026:1689751063:=8c8%0a%3c ; while() cat %3c{date -u -f 'hh:mm'} %3c{read | sed '1s/^/%3cjrmu9> /'} | sed '{N;s/\n/ /;}' >> /n/chat/chat%0a---%0a> ; while() read | sed '1s/^/Guest → /' >>/n/chat/chat%0a
+host:1692940026=38.87.162.8
+author:1689751063=mkf
+diff:1689751063:1683383918:=24,25c24%0a%3c either libixp or plan9port works, just replace command name,%0a%3c %0a---%0a> %0a28a28,29%0a> %0a> On Linux, you may have to compile from source.%0a
+host:1689751063=198.251.81.133
+author:1683383918=fossdev
+diff:1683383918:1674370876:=1,2d0%0a%3c !! From Plan9%0a%3c %0a19,20c17,18%0a%3c !! From UNIX:%0a%3c %0a---%0a> From UNIX:%0a> %0a31,32c29%0a%3c Now to connect, run:%0a%3c %0a---%0a> %0a35c32%0a%3c while read l; do echo $(date -u "+%25H:%25M") $USER → "$l"%0a---%0a> while read l; do echo $(date -z UTC +%25H:%25M) $USER → "$l"%0a
+host:1683383918=182.64.32.227
+author:1674370876=jrmu
+diff:1674370876:1674370776:=32c32%0a%3c while read l; do echo $(date -z UTC +%25H:%25M) $USER → "$l"%0a---%0a> while read l; do echo $(date +%25H:%25M) $USER → "$l"%0a
+host:1674370876=38.87.162.8
+author:1674370776=jrmu
+diff:1674370776:1674217024:=31,32c31,32%0a%3c $ 9 9p -a 'tcp!cloud9p.org!900' read chat | sed "s/$/$(echo '\a')/" &%0a%3c while read l; do echo $(date +%25H:%25M) $USER → "$l"%0a---%0a> $ 9 9p -a 'tcp!cloud9p.org!900' read chat &%0a> while read l; do echo $USER → "$l"%0a
+host:1674370776=38.87.162.8
+author:1674217024=mkf
+diff:1674217024:1644878891:=4c4%0a%3c ; 9fs tcp!cloud9p.org!900 /n/chat%0a---%0a> ; 9fs tcp!cloud9p.org!9000 /n/chat%0a11c11%0a%3c ; srv tcp!cloud9p.org!900 gridchat /n/chat%0a---%0a> ; srv tcp!cloud9p.org!9000 gridchat /n/chat%0a13c13%0a%3c ; while() read | sed '1s/^/Guest → /' >> /n/chat/chat%0a---%0a> ; while() read | sed '1s/^/Guest _ /' >> /n/chat/chat%0a31c31%0a%3c $ 9 9p -a 'tcp!cloud9p.org!900' read chat &%0a---%0a> $ 9 9p -a 'tcp!cloud9p.org!9000' read chat &%0a33c33%0a%3c done | 9 9p -a 'tcp!cloud9p.org!900' write chat%0a---%0a> done | 9 9p -a 'tcp!cloud9p.org!9000' write chat%0a
+host:1674217024=38.87.162.242
+author:1644878891=jrmu
+diff:1644878891:1644878804:=18,28d17%0a%3c %0a%3c Install [[https://9fans.github.io/plan9port/|plan9port]].%0a%3c %0a%3c On OpenBSD:%0a%3c %0a%3c [@%0a%3c $ doas pkg_add plan9port%0a%3c @]%0a%3c %0a%3c On Linux, you may have to compile from source.%0a%3c %0a
+host:1644878891=38.87.162.8
+author:1644878804=jrmu
+diff:1644878804:1640247000:=4c4%0a%3c ; 9fs tcp!cloud9p.org!9000 /n/chat%0a---%0a> ; 9fs tcp!watermelon.ircnow.org!9000 /n/chat%0a11c11%0a%3c ; srv tcp!cloud9p.org!9000 gridchat /n/chat%0a---%0a> ; srv tcp!watermelon.ircnow.org!9000 gridchat /n/chat%0a20c20%0a%3c $ 9 9p -a 'tcp!cloud9p.org!9000' read chat &%0a---%0a> $ 9 9p -a 'tcp!watermelon.ircnow.org!9000' read chat &%0a22c22%0a%3c done | 9 9p -a 'tcp!cloud9p.org!9000' write chat%0a---%0a> done | 9 9p -a 'tcp!watermelon.ircnow.org!9000' write chat%0a
+host:1644878804=38.87.162.8
+author:1640247000=jrmu
+diff:1640247000:1639456674:=8,15d7%0a%3c %0a%3c (:if false:)%0a%3c [@%0a%3c ; srv tcp!watermelon.ircnow.org!9000 gridchat /n/chat%0a%3c ; cat /n/chat/chat &%0a%3c ; while() read | sed '1s/^/Guest _ /' >> /n/chat/chat%0a%3c @]%0a%3c (:ifend:)%0a
+host:1640247000=38.87.162.8
+author:1639456674=mkf
+diff:1639456674:1639241684:=13c13%0a%3c while read l; do echo $USER → "$l"%0a---%0a> while read l; do echo $USER _ "$l"%0a
+host:1639456674=80.210.50.203
+author:1639241684=jrmu
+diff:1639241684:1639241374:=13,14c13,14%0a%3c while read l; do echo $USER _ "$l"%0a%3c done | 9 9p -a 'tcp!watermelon.ircnow.org!9000' write chat%0a---%0a> $ while read l; do echo $USER _ "$l"%0a> $ done | 9 9p -a 'tcp!watermelon.ircnow.org!9000' write chat%0a
+host:1639241684=38.87.162.8
+author:1639241374=jrmu
+diff:1639241374:1636722175:=7,14d6%0a%3c @]%0a%3c %0a%3c From UNIX:%0a%3c %0a%3c [@%0a%3c $ 9 9p -a 'tcp!watermelon.ircnow.org!9000' read chat &%0a%3c $ while read l; do echo $USER _ "$l"%0a%3c $ done | 9 9p -a 'tcp!watermelon.ircnow.org!9000' write chat%0a
+host:1639241374=38.87.162.8
+author:1636722175=mkf
+csum:1636722175=wheee
+diff:1636722175:1636041961:=0a1%0a> %0a4c5%0a%3c ; 9fs tcp!watermelon.ircnow.org!9000 /n/chat%0a---%0a> ; 9fs tcp!mkf.host.bsdforall.org!9667 /n/chat%0a
+host:1636722175=190.2.138.14
+author:1636041961=meeekeeef
+csum:1636041961=less confusing now
+diff:1636041961:1635418778:=2,3d1%0a%3c Replace Guest with your username.%0a%3c %0a5c3%0a%3c ; 9fs tcp!mkf.host.bsdforall.org!9667 /n/chat%0a---%0a> ; srv tcp!mkf.host.bsdforall.org!9667 gridchat /n/chat%0a7c5,15%0a%3c ; while() read | sed '1s/^/Guest → /' >>/n/chat/chat%0a---%0a> ; while() read | sed '1s/^/Guest → /' >> /n/chat/chat%0a> @]%0a> %0a> Replace Guest with your username.%0a> %0a> Alternative:%0a> %0a> [@%0a> ; 9fs tcp!mkf.host.bsdforall.org!9667%0a> ; cat /n/mkf.host.bsdforall.org!9667/chat &%0a> ; while() read | sed '1s/^/Guest → /' >>/n/mkf.host.bsdforall.org!9667/chat%0a
+host:1636041961=198.251.81.133
+author:1635418778=mkf
+diff:1635418778:1635418760:=0a1%0a> To chat on 9gridchan:%0a
+host:1635418778=91.185.147.106
+author:1635418760=mkf
+diff:1635418760:1635417157:=4c4%0a%3c ; srv tcp!mkf.host.bsdforall.org!9667 gridchat /n/chat%0a---%0a> ; srv tcp!chat.9p.zone!9990 gridchat /n/chat%0a14,16c14,16%0a%3c ; 9fs tcp!mkf.host.bsdforall.org!9667%0a%3c ; cat /n/mkf.host.bsdforall.org!9667/chat &%0a%3c ; while() read | sed '1s/^/Guest → /' >>/n/mkf.host.bsdforall.org!9667/chat%0a---%0a> ; 9fs tcp!chat.9p.zone!9990%0a> ; cat /n/chat.9p.zone!9990/chat &%0a> ; while() read | sed '1s/^/Guest → /' >>/n/chat.9p.zone!9990/chat%0a
+host:1635418760=91.185.147.106
+author:1635417157=mkf
+diff:1635417157:1635244493:=6c6%0a%3c ; while() read | sed '1s/^/Guest → /' >> /n/chat/chat%0a---%0a> ; while() read | sed '1s/^/USERNAME _ /' >> /n/chat/chat%0a9,10c9,10%0a%3c Replace Guest with your username.%0a%3c %0a---%0a> Replace USERNAME with your username.%0a> %0a16c16%0a%3c ; while() read | sed '1s/^/Guest → /' >>/n/chat.9p.zone!9990/chat%0a---%0a> ; while() read | sed '1s/^/USERNAME _ /' >>/n/chat.9p.zone!9990/chat%0a
+host:1635417157=91.185.147.106
+author:1635244493=jrmu
+diff:1635244493:1635241613:=4,6c4,6%0a%3c ; srv tcp!chat.9p.zone!9990 gridchat /n/chat%0a%3c ; cat /n/chat/chat &%0a%3c ; while() read | sed '1s/^/USERNAME _ /' >> /n/chat/chat%0a---%0a> ; 9fs tcp!chat.9p.zone!9990%0a> ; cat /n/chat.9p.zone!9990/chat &%0a> ; while() read | sed '1s/^/USERNAME _ /' >>/n/chat.9p.zone!9990/chat%0a10,17d9%0a%3c %0a%3c Alternative:%0a%3c %0a%3c [@%0a%3c ; 9fs tcp!chat.9p.zone!9990%0a%3c ; cat /n/chat.9p.zone!9990/chat &%0a%3c ; while() read | sed '1s/^/USERNAME _ /' >>/n/chat.9p.zone!9990/chat%0a%3c @]%0a
+host:1635244493=38.87.162.8
+author:1635241613=jrmu
+diff:1635241613:1635241613:=1,9d0%0a%3c To chat on 9gridchan:%0a%3c %0a%3c [@%0a%3c ; 9fs tcp!chat.9p.zone!9990%0a%3c ; cat /n/chat.9p.zone!9990/chat &%0a%3c ; while() read | sed '1s/^/USERNAME _ /' >>/n/chat.9p.zone!9990/chat%0a%3c @]%0a%3c %0a%3c Replace USERNAME with your username.%0a
+host:1635241613=38.87.162.8
blob - /dev/null
blob + 42d7c0660c4c198da17987e5e6fb12dc3b38e8f1 (mode 644)
--- /dev/null
+++ wiki.d/9.9p
@@ -0,0 +1,25 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:68.0) Gecko/20100101 Firefox/68.0 SeaMonkey/2.53.14
+author=mkf
+charset=UTF-8
+csum=
+ctime=1642317599
+host=198.251.81.133
+name=9.9p
+rev=5
+targets=
+text=%0a!!Server%0a!!!Unix%0aThere are currently two 9p servers for unix, u9fs and 9pex%0a!!!!9pex%0a[@%0a$ git clone git://shithub.us/sigrid/9pro%0a$ cd 9pro%0a$ doas make install%0a@]%0a%0ain @@/etc/inetd.conf@@, replace user and path%0a[@%0a564 stream tcp nowait  user /usr/local/bin/9pex -e /path/to/export%0a@]%0a%0afinally, enable and start inetd%0a[@%0a$ doas rcctl enable inetd%0a$ doas rcctl start inetd%0a@]%0a%0a!!!Plan 9%0aThere are several ways to do so, see exportfs(1)%0a[@%0a%25 aux/listen1 tcp!*!900 exportfs -R /path/to/export%0a@]%0a%0a!!Client%0a!!!Linux%0a[@%0a# mount -t 9p -o port=900 127.0.0.1 /mnt%0a@]%0anote: linux doesn't do gethostbyname(2)/dns for mounting 9p file servers.%0a%0a!!!Plan 9%0a[@%0a%25 9fs tcp!somewhere!900%0a@]%0a%0a!!!Inferno%0a[@%0a; mount -a -A tcp!somewhere!900 /mnt%0a@]%0a%0a!!!libixp/ixpc%0a[@%0a$ export IXP_ADDRESS=tcp!somewhere!900%0a$ ixpc ls /%0a@]
+time=1679572813
+author:1679572813=mkf
+diff:1679572813:1679572783:=1a2%0a> %0a11d11%0a%3c %0a16d15%0a%3c %0a
+host:1679572813=198.251.81.133
+author:1679572783=mkf
+diff:1679572783:1642452443:=1,6c1,4%0a%3c %0a%3c %0a%3c !!Server%0a%3c !!!Unix%0a%3c There are currently two 9p servers for unix, u9fs and 9pex%0a%3c !!!!9pex%0a---%0a> let's say we want to mount wm.ircnow.org (198.251.82.161) at port 900%0a> ----%0a> %0a> linux:%0a8,10c6%0a%3c $ git clone git://shithub.us/sigrid/9pro%0a%3c $ cd 9pro%0a%3c $ doas make install%0a---%0a> # mount -t 9p -o port=900 198.251.82.161 /mnt%0a12c8,10%0a%3c in @@/etc/inetd.conf@@, replace user and path%0a---%0a> note: linux doesn't support dns for mounting 9p file servers.%0a> %0a> plan 9:%0a14c12%0a%3c 564 stream tcp nowait  user /usr/local/bin/9pex -e /path/to/export%0a---%0a> %25 9fs tcp!wm.ircnow.org!900%0a16c14,15%0a%3c finally, enable and start inetd%0a---%0a> %0a> inferno:%0a18,19c17%0a%3c $ doas rcctl enable inetd%0a%3c $ doas rcctl start inetd%0a---%0a> ; mount -a -A tcp!wm.ircnow.org!900 /mnt%0a22,23c20%0a%3c !!!Plan 9%0a%3c There are several ways to do so, see exportfs(1)%0a---%0a> libixp/ixpc:%0a25,47c22%0a%3c %25 aux/listen1 tcp!*!900 exportfs -R /path/to/export%0a%3c @]%0a%3c %0a%3c !!Client%0a%3c !!!Linux%0a%3c [@%0a%3c # mount -t 9p -o port=900 127.0.0.1 /mnt%0a%3c @]%0a%3c note: linux doesn't do gethostbyname(2)/dns for mounting 9p file servers.%0a%3c %0a%3c !!!Plan 9%0a%3c [@%0a%3c %25 9fs tcp!somewhere!900%0a%3c @]%0a%3c %0a%3c !!!Inferno%0a%3c [@%0a%3c ; mount -a -A tcp!somewhere!900 /mnt%0a%3c @]%0a%3c %0a%3c !!!libixp/ixpc%0a%3c [@%0a%3c $ export IXP_ADDRESS=tcp!somewhere!900%0a---%0a> $ export IXP_ADDRESS=tcp!wm.ircnow.org!900%0a
+host:1679572783=198.251.81.133
+host:1642452443=38.87.162.40
+author:1642357387=mkf
+diff:1642357387:1642317599:=23c23%0a%3c $ ixpc ls /%0a---%0a> $ ixpc ls%0a
+host:1642357387=188.210.105.217
+author:1642317599=mkf
+diff:1642317599:1642317599:=1,24d0%0a%3c let's say we want to mount wm.ircnow.org (198.251.82.161) at port 900%0a%3c ----%0a%3c %0a%3c linux:%0a%3c [@%0a%3c # mount -t 9p -o port=900 198.251.82.161 /mnt%0a%3c @]%0a%3c note: linux doesn't support dns for mounting 9p file servers.%0a%3c %0a%3c plan 9:%0a%3c [@%0a%3c %25 9fs tcp!wm.ircnow.org!900%0a%3c @]%0a%3c %0a%3c inferno:%0a%3c [@%0a%3c ; mount -a -A tcp!wm.ircnow.org!900 /mnt%0a%3c @]%0a%3c %0a%3c libixp/ixpc:%0a%3c [@%0a%3c $ export IXP_ADDRESS=tcp!wm.ircnow.org!900%0a%3c $ ixpc ls%0a%3c @]%0a\ No newline at end of file%0a
+host:1642317599=188.210.122.8
blob - /dev/null
blob + 27426adef919da2ac8bc50533510c0542fae7673 (mode 644)
--- /dev/null
+++ wiki.d/9.9pfs
@@ -0,0 +1,21 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:91.0) Gecko/20100101 Firefox/91.0
+author=mkf
+charset=UTF-8
+csum=
+ctime=1637761225
+host=198.251.81.133
+name=9.9pfs
+rev=3
+targets=
+text=9pfs is a 9p client which allows mounting 9p servers using fuse. it supports for caching and more portable than 9pfuse%0a! OpenBSD%0a!! Installation%0a[@%0a$ git clone https://github.com/ftrvxmtrx/9pfs/%0a$ cd 9pfs%0a$ make%0a$ doas make install%0a%0a@]%0a!! Usage%0a[@%0a$ 9pfs [-p port] host mount_point%0a@]%0a!! Known bugs?%0a%0acd-ing to a can (will?) might cause 9pfs stop working, don't do that.%0a%0aif you did. cd to somewhere else.
+time=1637762441
+author:1637762441=mkf
+diff:1637762441:1637761968:=1c1%0a%3c 9pfs is a 9p client which allows mounting 9p servers using fuse. it supports for caching and more portable than 9pfuse%0a---%0a> 9pfs is a 9p client which allows mounting 9p servers using fuse%0a16,18c16%0a%3c %0a%3c cd-ing to a can (will?) might cause 9pfs stop working, don't do that.%0a%3c %0a---%0a> cd-ing to a dir might cause 9pfs stop working, don't do that.%0a
+host:1637762441=198.251.81.133
+author:1637761968=mkf
+diff:1637761968:1637761225:=1,3d0%0a%3c 9pfs is a 9p client which allows mounting 9p servers using fuse%0a%3c ! OpenBSD%0a%3c !! Installation%0a5,9c2%0a%3c $ git clone https://github.com/ftrvxmtrx/9pfs/%0a%3c $ cd 9pfs%0a%3c $ make%0a%3c $ doas make install%0a%3c %0a---%0a> $ 9pfs [-p port] host mount_point%0a11,17d3%0a%3c !! Usage%0a%3c [@%0a%3c $ 9pfs [-p port] host mount_point%0a%3c @]%0a%3c !! Known bugs?%0a%3c cd-ing to a dir might cause 9pfs stop working, don't do that.%0a%3c if you did. cd to somewhere else.%0a\ No newline at end of file%0a
+host:1637761968=198.251.81.133
+author:1637761225=mkf
+diff:1637761225:1637761225:=1,3d0%0a%3c [@%0a%3c $ 9pfs [-p port] host mount_point%0a%3c @]%0a
+host:1637761225=198.251.81.133
blob - /dev/null
blob + 8aea864b41212bf8f8e338a72adc1eee01869521 (mode 644)
--- /dev/null
+++ wiki.d/9.9pideas
@@ -0,0 +1,18 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1693617819
+host=38.87.162.8
+name=9.9pideas
+rev=2
+targets=9.FNS
+text=[@%0atroff->html,troffdown->markdown, postscript thing->web layout engine, 9p->http%0a@]%0a%0a9p could hyperlink all our man pages. A single mouseclick would let you browse documentation (and research papers written in troff) from anywhere in the world.%0a%0aAutomatic archival of all 9p content via cwfs. Make dumps like the internet archive but applied to every file, giving you a wayback machine snapshot of everything on 9p. Is this the web we have all been waiting for?%0a%0aIf the publisher is responsible for making the dump, what if the publisher dies? Then his 9p file hierarchy *and* his backups go offline simultaneously, giving us zero redundancy. Cwfs gives you this nice /n/dump/2023/0829/ snapshot, just like internet archive does. Ideally a daily snapshot should be distributed among the reader base to avoid a single fault system. I suspect Cwfs could easily make its dumps to a remote file server. We would then be able to pull up really old archives of books, journal articles, research papers, and man pages -- drm free%0a%0aA new filesystem that takes daily snapshots like cwfs but stores it over%0atorrents. Poor man's FS -- PMFS%0a%0aCGI for files and directories ([[9/FNS|FNS]] would be handling dynamic generation of file paths). Perhaps see [[http://felloff.net/usr/cinap_lenrek/execfs.tgz|execfs]].%0a%0aImagine if a single file had 3 different views: /path/to/file.{c,lua,lisp} . These 3 source files could be generated dynamically by some compiler from a single source file. Or perhaps three texts /path/to/blog/{chinese,spanish,french}, all generated from /path/to/blog/english.%0a%0aBinaries can also be generated dynamically over the network so that users do not need to compile the software.%0a%0aBecause 9 can boot from a remote filesystem, developers can work easily with dumb terminals.%0a%0aThe remove filesystem may enable a universal hardware lab, since it should be possible to easily cross compile software for every architecture on the distributed grid.%0a%0aBoth p9p and 9fork (ircnow's custom fork) could be written mostly in lua to speed up development.%0a%0a
+time=1693767523
+author:1693767523=jrmu
+diff:1693767523:1693617819:=10,25d9%0a%3c %0a%3c A new filesystem that takes daily snapshots like cwfs but stores it over%0a%3c torrents. Poor man's FS -- PMFS%0a%3c %0a%3c CGI for files and directories ([[9/FNS|FNS]] would be handling dynamic generation of file paths). Perhaps see [[http://felloff.net/usr/cinap_lenrek/execfs.tgz|execfs]].%0a%3c %0a%3c Imagine if a single file had 3 different views: /path/to/file.{c,lua,lisp} . These 3 source files could be generated dynamically by some compiler from a single source file. Or perhaps three texts /path/to/blog/{chinese,spanish,french}, all generated from /path/to/blog/english.%0a%3c %0a%3c Binaries can also be generated dynamically over the network so that users do not need to compile the software.%0a%3c %0a%3c Because 9 can boot from a remote filesystem, developers can work easily with dumb terminals.%0a%3c %0a%3c The remove filesystem may enable a universal hardware lab, since it should be possible to easily cross compile software for every architecture on the distributed grid.%0a%3c %0a%3c Both p9p and 9fork (ircnow's custom fork) could be written mostly in lua to speed up development.%0a%3c %0a
+host:1693767523=38.87.162.8
+author:1693617819=jrmu
+diff:1693617819:1693617819:=1,9d0%0a%3c [@%0a%3c troff->html,troffdown->markdown, postscript thing->web layout engine, 9p->http%0a%3c @]%0a%3c %0a%3c 9p could hyperlink all our man pages. A single mouseclick would let you browse documentation (and research papers written in troff) from anywhere in the world.%0a%3c %0a%3c Automatic archival of all 9p content via cwfs. Make dumps like the internet archive but applied to every file, giving you a wayback machine snapshot of everything on 9p. Is this the web we have all been waiting for?%0a%3c %0a%3c If the publisher is responsible for making the dump, what if the publisher dies? Then his 9p file hierarchy *and* his backups go offline simultaneously, giving us zero redundancy. Cwfs gives you this nice /n/dump/2023/0829/ snapshot, just like internet archive does. Ideally a daily snapshot should be distributed among the reader base to avoid a single fault system. I suspect Cwfs could easily make its dumps to a remote file server. We would then be able to pull up really old archives of books, journal articles, research papers, and man pages -- drm free%0a
+host:1693617819=38.87.162.8
blob - /dev/null
blob + e280bf6ea5652a8fe21d113fa439a75b398d93c4 (mode 644)
--- /dev/null
+++ wiki.d/9.Account
@@ -0,0 +1,18 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
+author=zleap
+charset=UTF-8
+csum=
+ctime=1693588089
+host=2a00:23c6:9b14:3b01:ef4f:f176:505c:cdb4
+name=9.Account
+rev=2
+targets=
+text=What do I do here?
+time=1693588191
+author:1693588191=zleap
+diff:1693588191:1693588089:=1c1%0a%3c What do I do here?%0a\ No newline at end of file%0a---%0a> What do I do here.%0a\ No newline at end of file%0a
+host:1693588191=2a00:23c6:9b14:3b01:ef4f:f176:505c:cdb4
+author:1693588089=zleap
+diff:1693588089:1693588089:=1d0%0a%3c What do I do here.%0a\ No newline at end of file%0a
+host:1693588089=2a00:23c6:9b14:3b01:ef4f:f176:505c:cdb4
blob - /dev/null
blob + 5c2f875951de11dbdaeac0c93f68d33455ba58a1 (mode 644)
--- /dev/null
+++ wiki.d/9.Acmemail
@@ -0,0 +1,15 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1693591518
+host=38.87.162.8
+name=9.Acmemail
+rev=1
+targets=
+text=To send email on plan9:%0a%0aSee acmemail(1)%0a; plumber; upas/fs; acme%0a%0aThen in the window tag, execute Mail (capital M)%0a%0aAttach:acmemail.png%0a
+time=1693591518
+author:1693591518=jrmu
+diff:1693591518:1693591518:=1,8d0%0a%3c To send email on plan9:%0a%3c %0a%3c See acmemail(1)%0a%3c ; plumber; upas/fs; acme%0a%3c %0a%3c Then in the window tag, execute Mail (capital M)%0a%3c %0a%3c Attach:acmemail.png%0a
+host:1693591518=38.87.162.8
blob - /dev/null
blob + 612a1442e5abe3567ee0edf1227840e985fde7e4 (mode 644)
--- /dev/null
+++ wiki.d/9.Audio
@@ -0,0 +1,15 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1645387677
+host=38.87.162.8
+name=9.Audio
+rev=1
+targets=
+text=If the sound card is detected:%0a%0a[@%0a; ls '#A'%0a'#A/audio'%0a'#A/audioctl'%0a'#A/audiostat'%0a'#A/volume'%0a@]%0a%0a[@%0a; ls /dev/audiostat%0a@]%0a%0aYou can check which pins are being used for input and output (output for Thinkpad x200):%0a%0a[@%0a; cat /dev/audiostat%0abufsize   1024 buffered      0%0acodec 0 pin 25 inpin 29%0aaout 16 c1d%0aaout 17 c1d%0aaout 18 211%0abeep 19 70000c%0aain 20 100d1b ← pin 29, pin 23%0aain 21 100d1b ← pin 24%0apin 22 out jack ext right hpout green ← aout 16, aout 17%0apin 23 in nothing sep rear micin pink%0apin 24 in jack ext right micin pink%0apin 25 out nothing sep rear hpout green ← aout 16, aout 17%0apin 26 out fix int N/A speaker ? eapd ← aout 16, aout 17%0apin 27 out nothing ext N/A other ? eapd ← aout 16, aout 17%0apin 28 out nothing ext N/A other ? ← aout 18%0apin 29 in fix int N/A micin ?%0abeep 30 f00000%0aoutpath aout 16 → pin 26%0aoutamp aout 16%0ainpath pin 29 → ain 20%0ainamp ain 20%0a@]%0a%0aThis line @@codec 0 pin 25 inpin 29@@ shows that pin 25 is being used for output and pin 29 used for input. On my laptop, it is necessary to set the output pin to 26:%0a%0a[@%0a; echo pin 26 > /dev/audioctl%0a@]%0a%0aNow it's possible to play music:%0a%0a[@%0a; audio/oggdec %3c music.ogg >/dev/audio%0a; audio/mp3dec %3c music.mp3 >/dev/audio%0a@]%0a%0aSources:%0a%0a* [[http://nopenopenope.net/posts/audio]]%0a* [[https://git.sr.ht/~ft/jacksense]]%0a
+time=1645387677
+author:1645387677=jrmu
+diff:1645387677:1645387677:=1,58d0%0a%3c If the sound card is detected:%0a%3c %0a%3c [@%0a%3c ; ls '#A'%0a%3c '#A/audio'%0a%3c '#A/audioctl'%0a%3c '#A/audiostat'%0a%3c '#A/volume'%0a%3c @]%0a%3c %0a%3c [@%0a%3c ; ls /dev/audiostat%0a%3c @]%0a%3c %0a%3c You can check which pins are being used for input and output (output for Thinkpad x200):%0a%3c %0a%3c [@%0a%3c ; cat /dev/audiostat%0a%3c bufsize   1024 buffered      0%0a%3c codec 0 pin 25 inpin 29%0a%3c aout 16 c1d%0a%3c aout 17 c1d%0a%3c aout 18 211%0a%3c beep 19 70000c%0a%3c ain 20 100d1b ← pin 29, pin 23%0a%3c ain 21 100d1b ← pin 24%0a%3c pin 22 out jack ext right hpout green ← aout 16, aout 17%0a%3c pin 23 in nothing sep rear micin pink%0a%3c pin 24 in jack ext right micin pink%0a%3c pin 25 out nothing sep rear hpout green ← aout 16, aout 17%0a%3c pin 26 out fix int N/A speaker ? eapd ← aout 16, aout 17%0a%3c pin 27 out nothing ext N/A other ? eapd ← aout 16, aout 17%0a%3c pin 28 out nothing ext N/A other ? ← aout 18%0a%3c pin 29 in fix int N/A micin ?%0a%3c beep 30 f00000%0a%3c outpath aout 16 → pin 26%0a%3c outamp aout 16%0a%3c inpath pin 29 → ain 20%0a%3c inamp ain 20%0a%3c @]%0a%3c %0a%3c This line @@codec 0 pin 25 inpin 29@@ shows that pin 25 is being used for output and pin 29 used for input. On my laptop, it is necessary to set the output pin to 26:%0a%3c %0a%3c [@%0a%3c ; echo pin 26 > /dev/audioctl%0a%3c @]%0a%3c %0a%3c Now it's possible to play music:%0a%3c %0a%3c [@%0a%3c ; audio/oggdec %3c music.ogg >/dev/audio%0a%3c ; audio/mp3dec %3c music.mp3 >/dev/audio%0a%3c @]%0a%3c %0a%3c Sources:%0a%3c %0a%3c * [[http://nopenopenope.net/posts/audio]]%0a%3c * [[https://git.sr.ht/~ft/jacksense]]%0a
+host:1645387677=38.87.162.8
blob - /dev/null
blob + 50b15d5c122b018822238980174cb26b842846e8 (mode 644)
--- /dev/null
+++ wiki.d/9.Authsrv,del-1702890704
@@ -0,0 +1,16 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=NetSurf/3.11 (Plan9)
+author=mkf
+charset=UTF-8
+csum=hmm
+ctime=1641358750
+host=91.185.151.100
+name=9.Authsrv
+rev=1
+targets=
+text=wip.%0aTauth → factotum → auth_proxy?
+time=1641358750
+author:1641358750=mkf
+csum:1641358750=hmm
+diff:1641358750:1641358750:=1,2d0%0a%3c wip.%0a%3c Tauth → factotum → auth_proxy?%0a\ No newline at end of file%0a
+host:1641358750=91.185.151.100
blob - /dev/null
blob + 426ba68e1312fb77ee5e7516253d781432c44631 (mode 644)
--- /dev/null
+++ wiki.d/9.Cheatsheet
@@ -0,0 +1,21 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1682195950
+host=38.87.162.8
+name=9.Cheatsheet
+rev=3
+targets=
+text=Restart networking:%0a%0a[@%0a; ip/ipconfig%0a@]%0a%0aAutocomplete:%0a%0a[@%0actrl+f%0aIns%0a@]%0a%0aSound:%0a%0a[@%0aecho pin somenumber > /dev/audio%0asomenumber is hardware dependent%0acat /dev/audiostat | grep pin%0a@]%0a
+time=1682482006
+author:1682482006=jrmu
+diff:1682482006:1682439302:=9d8%0a%3c [@%0a12,20d10%0a%3c @]%0a%3c %0a%3c Sound:%0a%3c %0a%3c [@%0a%3c echo pin somenumber > /dev/audio%0a%3c somenumber is hardware dependent%0a%3c cat /dev/audiostat | grep pin%0a%3c @]%0a
+host:1682482006=38.87.162.8
+author:1682439302=jrmu
+diff:1682439302:1682195950:=6,10d5%0a%3c %0a%3c Autocomplete:%0a%3c %0a%3c ctrl+f%0a%3c Ins%0a
+host:1682439302=38.87.162.8
+author:1682195950=jrmu
+diff:1682195950:1682195950:=1,5d0%0a%3c Restart networking:%0a%3c %0a%3c [@%0a%3c ; ip/ipconfig%0a%3c @]%0a
+host:1682195950=38.87.162.8
blob - /dev/null
blob + aaa0b9056808c2008036de2dea23ca65442e664e (mode 644)
--- /dev/null
+++ wiki.d/9.Chording
@@ -0,0 +1,18 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1641220720
+host=38.87.162.8
+name=9.Chording
+rev=2
+targets=
+text=On Mac:%0a%0a# Left click: One finger tap%0a# Right click: Two finger tap%0a# Middle click: Three finger tap%0a
+time=1641220856
+author:1641220856=jrmu
+diff:1641220856:1641220720:=3,5c3,5%0a%3c # Left click: One finger tap%0a%3c # Right click: Two finger tap%0a%3c # Middle click: Three finger tap%0a---%0a> Left click: One finger tap%0a> Right click: Two finger tap%0a> Middle click: Three finger tap%0a
+host:1641220856=38.87.162.8
+author:1641220720=jrmu
+diff:1641220720:1641220720:=1,5d0%0a%3c On Mac:%0a%3c %0a%3c Left click: One finger tap%0a%3c Right click: Two finger tap%0a%3c Middle click: Three finger tap%0a
+host:1641220720=38.87.162.8
blob - /dev/null
blob + f8a7b1224db346bd545d6cfae1bcd3f99fc6d68f (mode 644)
--- /dev/null
+++ wiki.d/9.Cvsfs
@@ -0,0 +1,26 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.47
+author=mkf
+charset=UTF-8
+csum=
+ctime=1634302198
+host=188.210.99.18
+name=9.Cvsfs
+rev=4
+targets=
+text=[@%0a; 9fs 9front%0a; tar -xf /n/extra/cvsfs.tgz%0a; cd cvsfs%0a@]%0athen, apply this patch.%0a[@%0a--- cvs.c	Fri Oct 15 16:09:40 2021%0a+++ cvs.c	Fri Oct 15 16:13:12 2021%0a@@ -229,7 +229,7 @@%0a cvsopen(Sess *s)%0a {%0a 	if (strcmp(s->method, "ext") == 0){%0a+		if (cvspipe(s, "/bin/ssh", "-u") == 0)%0a-		if (cvspipe(s, "/bin/ssh", "-l") == 0)%0a 			return nil;%0a 		if (cvspipe(s, "/bin/rx", "-l") == 0)%0a 			return nil;%0a@]%0athen @@mk@@ it.%0a[@%0a; mk all%0a; mk install%0a@]%0athen, add the ssh fingerprint of the host you want to connect to @@$home/lib/sshthumbs@@%0a[@%0a; ssh anoncvs@anoncvs.ca.openbsd.org%0a@]%0a[@%0a; cvsfs :ext:anoncvs@anoncvs.ca.openbsd.org:/cvs src%0a@]%0ait gets mounted on /n/cvs
+time=1634302731
+author:1634302731=mkf
+diff:1634302731:1634302706:=31,32c31%0a%3c @]%0a%3c it gets mounted on /n/cvs%0a\ No newline at end of file%0a---%0a> @]%0a\ No newline at end of file%0a
+host:1634302731=188.210.99.18
+author:1634302706=mkf
+diff:1634302706:1634302550:=27c27%0a%3c ; ssh anoncvs@anoncvs.ca.openbsd.org%0a---%0a> ; ssh anoncvs@planetofnix.com%0a30c30%0a%3c ; cvsfs :ext:anoncvs@anoncvs.ca.openbsd.org:/cvs src%0a---%0a> ; cvsfs :ext:anoncvs@planetofnix.com:/cvs ircnowd%0a
+host:1634302706=188.210.99.18
+author:1634302550=mkf
+csum:1634302550=:~
+diff:1634302550:1634302198:=2,7d1%0a%3c ; 9fs 9front%0a%3c ; tar -xf /n/extra/cvsfs.tgz%0a%3c ; cd cvsfs%0a%3c @]%0a%3c then, apply this patch.%0a%3c [@%0a19,30d12%0a%3c @]%0a%3c then @@mk@@ it.%0a%3c [@%0a%3c ; mk all%0a%3c ; mk install%0a%3c @]%0a%3c then, add the ssh fingerprint of the host you want to connect to @@$home/lib/sshthumbs@@%0a%3c [@%0a%3c ; ssh anoncvs@planetofnix.com%0a%3c @]%0a%3c [@%0a%3c ; cvsfs :ext:anoncvs@planetofnix.com:/cvs ircnowd%0a
+host:1634302550=188.210.99.18
+author:1634302198=mkf
+csum:1634302198=patchpatchpatch
+diff:1634302198:1634302198:=1,13d0%0a%3c [@%0a%3c --- cvs.c	Fri Oct 15 16:09:40 2021%0a%3c +++ cvs.c	Fri Oct 15 16:13:12 2021%0a%3c @@ -229,7 +229,7 @@%0a%3c  cvsopen(Sess *s)%0a%3c  {%0a%3c  	if (strcmp(s->method, "ext") == 0){%0a%3c +		if (cvspipe(s, "/bin/ssh", "-u") == 0)%0a%3c -		if (cvspipe(s, "/bin/ssh", "-l") == 0)%0a%3c  			return nil;%0a%3c  		if (cvspipe(s, "/bin/rx", "-l") == 0)%0a%3c  			return nil;%0a%3c @]%0a\ No newline at end of file%0a
+host:1634302198=188.210.99.18
blob - /dev/null
blob + 987728c238a7c1b0cff1c7bcd49ae0f5ee8ba5f7 (mode 644)
--- /dev/null
+++ wiki.d/9.Date
@@ -0,0 +1,15 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1693575965
+host=38.87.162.8
+name=9.Date
+rev=1
+targets=
+text=To change the timezone (takes effect upon reboot):%0a%0a; cp /adm/timezone/$yourzone /adm/timezone/local%0a%0aTo sync your clock:%0a%0a; aux/timesync -n pool.ntp.org%0a
+time=1693575965
+author:1693575965=jrmu
+diff:1693575965:1693575965:=1,7d0%0a%3c To change the timezone (takes effect upon reboot):%0a%3c %0a%3c ; cp /adm/timezone/$yourzone /adm/timezone/local%0a%3c %0a%3c To sync your clock:%0a%3c %0a%3c ; aux/timesync -n pool.ntp.org%0a
+host:1693575965=38.87.162.8
blob - /dev/null
blob + 2295dff474ba12350fa9c3d7d68beb4937a5aa86 (mode 644)
--- /dev/null
+++ wiki.d/9.Drawterm
@@ -0,0 +1,61 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1641215808
+host=104.167.242.140
+name=9.Drawterm
+rev=15
+targets=
+text=!! Installation%0a!!! OpenBSD%0a%0a[@%0a$ doas pkg_add drawterm%0a@]%0a%0a!!! Linux%0a!!!! Debian%0aDebian have recently added drawterm-9front package, which can be used instead of compiling it:%0a[@%0a$ sudo apt install drawterm-9front%0a@]%0a%0aIf you want to compile it however:%0a[@%0a$ sudo apt install libx11-dev libxt-dev%0a$ git clone git://git.9front.org/plan9front/drawterm %0a$ cd drawterm%0a$ CONF=unix make%0a@]%0a%0aSee [[https://mkf.bsdforall.org/drawterm]] for other OSes.%0a%0a!! Usage%0a%0a[@%0a$ PASS=$YOURPASSWORD drawterm -h cloud9p.org -a cloud9p.org%0a@]%0a%0aIf you add $USER=username %0aThis will also pass on the username or use drawterm -u username to the above%0a%0aReplace $YOURPASSWORD with your actual password.%0a%0a!!! Using keyboard keys instead of mouse buttons%0a''Warning: Note that this disables numpad, and makes usage of old keys impossible without a X server restart''%0a%0aTo use keyboard keys instead of a 3 button mouse in OpenBSD (on X11),%0afirst enable mousekeys:%0a[@%0a$ doas pkg_add xkbset%0a$ xkbset m # enables mousekeys%0a@]%0a%0aopen @@xev@@, press on keys you like to use as mouse keys, be aware, this might make lots of spam in terminal.%0a[@%0a$ xev -event keyboard%0a@]%0a%0aMy key codes are 67, 68, and 69 (F1, F2, and F3):%0a[@%0axmodmap -e "keycode 67 = Pointer_Button1"%0axmodmap -e "keycode 68 = Pointer_Button2"%0axmodmap -e "keycode 69 = Pointer_Button3"%0a@]%0a
+time=1707585350
+author:1707585350=jrmu
+diff:1707585350:1707546650:=51c51%0a%3c My key codes are 67, 68, and 69 (F1, F2, and F3):%0a---%0a> My key codes are 75, 76, and 95 (F9, F10, and F11):%0a53,55c53,55%0a%3c xmodmap -e "keycode 67 = Pointer_Button1"%0a%3c xmodmap -e "keycode 68 = Pointer_Button2"%0a%3c xmodmap -e "keycode 69 = Pointer_Button3"%0a---%0a> xmodmap -e "keycode 75 = Pointer_Button1"%0a> xmodmap -e "keycode 76 = Pointer_Button2"%0a> xmodmap -e "keycode 95 = Pointer_Button3"%0a
+host:1707585350=104.167.242.140
+author:1707546650=jrmu
+diff:1707546650:1707504522:=51c51%0a%3c My key codes are 75, 76, and 95 (F9, F10, and F11):%0a---%0a> my key codes are 67, 68 and 69. (f1, f2 and f3):%0a53,55c53,55%0a%3c xmodmap -e "keycode 75 = Pointer_Button1"%0a%3c xmodmap -e "keycode 76 = Pointer_Button2"%0a%3c xmodmap -e "keycode 95 = Pointer_Button3"%0a---%0a> xmodmap -e "keycode 67 = Pointer_Button1"%0a> xmodmap -e "keycode 68 = Pointer_Button2"%0a> xmodmap -e "keycode 69 = Pointer_Button3"%0a
+host:1707546650=104.167.242.140
+author:1707504522=jrmu
+diff:1707504522:1693830571:=40c40%0a%3c first enable mousekeys:%0a---%0a> first enable mosekey%0a
+host:1707504522=172.56.232.190
+author:1693830571=mkf
+csum:1693830571=debian includes drawterm-9front now
+diff:1693830571:1693591898:=9,15c9,10%0a%3c !!!! Debian%0a%3c Debian have recently added drawterm-9front package, which can be used instead of compiling it:%0a%3c [@%0a%3c $ sudo apt install drawterm-9front%0a%3c @]%0a%3c %0a%3c If you want to compile it however:%0a---%0a> !!!! Building from source on Debian%0a> %0a
+host:1693830571=2.178.166.210
+author:1693591898=zleap
+diff:1693591898:1693498044:=25,27d24%0a%3c %0a%3c If you add $USER=username %0a%3c This will also pass on the username or use drawterm -u username to the above%0a
+host:1693591898=2a00:23c6:9b14:3b01:ef4f:f176:505c:cdb4
+author:1693498044=jrmu
+diff:1693498044:1675631895:=17a18%0a> %0a21c22,26%0a%3c %0a---%0a> !!! Using keyboard keys instead of mouse buttons%0a> ''Warning: Note that this disables numpad, and makes usage of old keys impossible without a X server restart''%0a> %0a> To use keyboard keys instead of a 3 button mouse in OpenBSD (on X11),%0a> first enable mosekey%0a23c28,29%0a%3c $ PASS=$YOURPASSWORD drawterm -h cloud9p.org -a cloud9p.org%0a---%0a> $ doas pkg_add xkbset%0a> $ xkbset m # enables mousekeys%0a26,32c32%0a%3c Replace $YOURPASSWORD with your actual password.%0a%3c %0a%3c !!! Using keyboard keys instead of mouse buttons%0a%3c ''Warning: Note that this disables numpad, and makes usage of old keys impossible without a X server restart''%0a%3c %0a%3c To use keyboard keys instead of a 3 button mouse in OpenBSD (on X11),%0a%3c first enable mosekey%0a---%0a> open @@xev@@, press on keys you like to use as mouse keys, be aware, this might make lots of spam in terminal.%0a34,35c34%0a%3c $ doas pkg_add xkbset%0a%3c $ xkbset m # enables mousekeys%0a---%0a> $ xev -event keyboard%0a38c37%0a%3c open @@xev@@, press on keys you like to use as mouse keys, be aware, this might make lots of spam in terminal.%0a---%0a> my key codes are 67, 68 and 69. (f1, f2 and f3):%0a40,44d38%0a%3c $ xev -event keyboard%0a%3c @]%0a%3c %0a%3c my key codes are 67, 68 and 69. (f1, f2 and f3):%0a%3c [@%0a48c42%0a%3c @]%0a---%0a> @]%0a\ No newline at end of file%0a
+host:1693498044=38.87.162.8
+author:1675631895=mkf
+diff:1675631895:1675631871:=0a1%0a> %0a9c10%0a%3c !!!! Building from source on Debian%0a---%0a> !!!! Building from source on Debian:%0a
+host:1675631895=198.251.81.133
+author:1675631871=mkf
+diff:1675631871:1641467806:=1,2c1,2%0a%3c %0a%3c !! Installation%0a---%0a> !! Drawterm binaries:%0a> %0a9a10,14%0a> %0a> [[http://mkf.bsdforall.org/drawterm/drawterm-linux-amd64|AMD64 Linux Drawterm]]%0a> %0a> [[http://mkf.bsdforall.org/drawterm/drawterm-linux-aarch64|AArch64 Linux Drawterm]]%0a> %0a19,43c24,38%0a%3c %0a%3c See [[https://mkf.bsdforall.org/drawterm]] for other OSes.%0a%3c %0a%3c !! Usage%0a%3c !!! Using keyboard keys instead of mouse buttons%0a%3c ''Warning: Note that this disables numpad, and makes usage of old keys impossible without a X server restart''%0a%3c %0a%3c To use keyboard keys instead of a 3 button mouse in OpenBSD (on X11),%0a%3c first enable mosekey%0a%3c [@%0a%3c $ doas pkg_add xkbset%0a%3c $ xkbset m # enables mousekeys%0a%3c @]%0a%3c %0a%3c open @@xev@@, press on keys you like to use as mouse keys, be aware, this might make lots of spam in terminal.%0a%3c [@%0a%3c $ xev -event keyboard%0a%3c @]%0a%3c %0a%3c my key codes are 67, 68 and 69. (f1, f2 and f3):%0a%3c [@%0a%3c xmodmap -e "keycode 67 = Pointer_Button1"%0a%3c xmodmap -e "keycode 68 = Pointer_Button2"%0a%3c xmodmap -e "keycode 69 = Pointer_Button3"%0a%3c @]%0a\ No newline at end of file%0a---%0a> !!! Solaris%0a> %0a> [[http://mkf.bsdforall.org/drawterm/drawterm-solaris-i64pc|i64pc Sun Drawterm]] CC=gcc-8 and AUDIO=unix, built on openindiana.%0a> %0a> !!! Android%0a> %0a> [[http://mkf.bsdforall.org/drawterm/drawterm-android.apk|Android Drawterm]]: The first time you use it, it will crash. Afterwards, it will work.%0a> %0a> [[http://github.com/echoline/drawterm-android/releases/download/0.0.5/drawterm.apk|Android Drawterm echoline]]: If the above apk did not work, use this one.%0a> %0a> !!! Windows%0a> %0a> [[http://drawterm.9front.org/drawterm.exe|Windows Drawterm]]%0a> %0a> See [[https://mkf.bsdforall.org/drawterm]]%0a
+host:1675631871=198.251.81.133
+author:1641467806=jrmu
+diff:1641467806:1641217023:=30,31c30,31%0a%3c [[http://mkf.bsdforall.org/drawterm/drawterm-android.apk|Android Drawterm]]: The first time you use it, it will crash. Afterwards, it will work.%0a%3c %0a---%0a> [[http://mkf.bsdforall.org/drawterm/drawterm-android|Android Drawterm]]: The first time you use it, it will crash. Afterwards, it will work.%0a> %0a38c38%0a%3c See [[https://mkf.bsdforall.org/drawterm]]%0a---%0a> See [[https://mkf.bsdforall.org/drawterm]]%0a\ No newline at end of file%0a
+host:1641467806=38.87.162.8
+author:1641217023=mkf
+csum:1641217023=cpu → rcpu
+diff:1641217023:1641216952:=
+host:1641217023=89.33.101.37
+author:1641216952=mkf
+csum:1641216952=cpu → rcpu
+diff:1641216952:1641216919:=19c19%0a%3c $ git clone git://git.9front.org/plan9front/drawterm %0a---%0a> $ git clone https://github.com/9fans/drawterm%0a
+host:1641216952=89.33.101.37
+author:1641216919=mkf
+csum:1641216919=cpu → rcpu
+diff:1641216919:1641216807:=38c38%0a%3c See [[https://mkf.bsdforall.org/drawterm]]%0a\ No newline at end of file%0a---%0a> See [[https://mkf.bsdforall.org/drawterm]]%0a
+host:1641216919=89.33.101.37
+author:1641216807=jrmu
+diff:1641216807:1641216526:=18c18%0a%3c $ sudo apt install libx11-dev libxt-dev%0a---%0a> $ sudo apt install libx11-dev%0a
+host:1641216807=38.87.162.8
+author:1641216526=jrmu
+diff:1641216526:1641215808:=14,22d13%0a%3c %0a%3c !!!! Building from source on Debian:%0a%3c %0a%3c [@%0a%3c $ sudo apt install libx11-dev%0a%3c $ git clone https://github.com/9fans/drawterm%0a%3c $ cd drawterm%0a%3c $ CONF=unix make%0a%3c @]%0a
+host:1641216526=38.87.162.8
+author:1641215808=jrmu
+diff:1641215808:1641215808:=1,29d0%0a%3c !! Drawterm binaries:%0a%3c %0a%3c !!! OpenBSD%0a%3c %0a%3c [@%0a%3c $ doas pkg_add drawterm%0a%3c @]%0a%3c %0a%3c !!! Linux%0a%3c %0a%3c [[http://mkf.bsdforall.org/drawterm/drawterm-linux-amd64|AMD64 Linux Drawterm]]%0a%3c %0a%3c [[http://mkf.bsdforall.org/drawterm/drawterm-linux-aarch64|AArch64 Linux Drawterm]]%0a%3c %0a%3c !!! Solaris%0a%3c %0a%3c [[http://mkf.bsdforall.org/drawterm/drawterm-solaris-i64pc|i64pc Sun Drawterm]] CC=gcc-8 and AUDIO=unix, built on openindiana.%0a%3c %0a%3c !!! Android%0a%3c %0a%3c [[http://mkf.bsdforall.org/drawterm/drawterm-android|Android Drawterm]]: The first time you use it, it will crash. Afterwards, it will work.%0a%3c %0a%3c [[http://github.com/echoline/drawterm-android/releases/download/0.0.5/drawterm.apk|Android Drawterm echoline]]: If the above apk did not work, use this one.%0a%3c %0a%3c !!! Windows%0a%3c %0a%3c [[http://drawterm.9front.org/drawterm.exe|Windows Drawterm]]%0a%3c %0a%3c See [[https://mkf.bsdforall.org/drawterm]]%0a
+host:1641215808=38.87.162.8
blob - /dev/null
blob + 4bd4b1fb638d76b18bdda637c94a9eaedb78ee9f (mode 644)
--- /dev/null
+++ wiki.d/9.Drawterm,del-1636041813
@@ -0,0 +1,15 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Links (2.21; OpenBSD 6.9 amd64; LLVM/Clang 10.0.1; text)
+author=mkf
+charset=UTF-8
+csum=
+ctime=1632259141
+host=198.251.81.133
+name=9.Drawterm
+rev=1
+targets=
+text=[@%0afor connecting to Plan9 you need drawterm. since debian/ubuntu packaged version of drawterm is too old and doesn't support encrypted connections, you will compiling it:%0a%0a$ git clone git://git.9front.org/plan9front/drawterm%0a$ cd drawterm%0a$ CONF=unix make%0a%0athen you can connect to your server using:%0a%0a$ ./drawterm -u glenda -h $VPS_IP -a  $VPS_IP # graphical%0a$ ./drawterm -G -u glenda -h $VPS_IP -a $VPS_IP # CLI%0a%0aafterwards, it will ask for password.%0a%0ait's $VPS_PASSWORD.%0a%0aif everything went correctly, you will be greeted by a prompt%0a%0acpu%25%0a%0aif you are running on GUI mode, you could start window system or GUI applications, for window system, run the following:%0a%0a%25 rio%0a%0aif it's first time you are using plan9, this document might be useful for a quick start:%0a%0ahttp://www.covingtoninnovations.com/michael/newbie-guide.pdf%0a%0agoodluck!%0a%0a@]
+time=1632259141
+author:1632259141=mkf
+diff:1632259141:1632259141:=1,31d0%0a%3c [@%0a%3c for connecting to Plan9 you need drawterm. since debian/ubuntu packaged version of drawterm is too old and doesn't support encrypted connections, you will compiling it:%0a%3c %0a%3c $ git clone git://git.9front.org/plan9front/drawterm%0a%3c $ cd drawterm%0a%3c $ CONF=unix make%0a%3c %0a%3c then you can connect to your server using:%0a%3c %0a%3c $ ./drawterm -u glenda -h $VPS_IP -a  $VPS_IP # graphical%0a%3c $ ./drawterm -G -u glenda -h $VPS_IP -a $VPS_IP # CLI%0a%3c %0a%3c afterwards, it will ask for password.%0a%3c %0a%3c it's $VPS_PASSWORD.%0a%3c %0a%3c if everything went correctly, you will be greeted by a prompt%0a%3c %0a%3c cpu%25%0a%3c %0a%3c if you are running on GUI mode, you could start window system or GUI applications, for window system, run the following:%0a%3c %0a%3c %25 rio%0a%3c %0a%3c if it's first time you are using plan9, this document might be useful for a quick start:%0a%3c %0a%3c http://www.covingtoninnovations.com/michael/newbie-guide.pdf%0a%3c %0a%3c goodluck!%0a%3c %0a%3c @]%0a\ No newline at end of file%0a
+host:1632259141=198.251.81.133
blob - /dev/null
blob + bbb4e23c1d842c8089c22b5859f017d2b4fc09c5 (mode 644)
--- /dev/null
+++ wiki.d/9.FNS
@@ -0,0 +1,22 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1692464686
+host=38.87.162.8
+name=9.FNS
+rev=3
+targets=
+text=(:title Request For Complaints #1:)%0aInter9 Engineering Task Force%0a%0aFile Name System (FNS)%0a%0aFNS is designed to replace the centralized domain name system with an alternative that can easily be federated and defederated.%0a%0aThe namespace is divided by the delimeter / like pathnames in a filesystem:%0a%0a[@%0aFNS path            | DNS equivalent%0a====================+===================%0a/shelltalk/jrmu/www | www.jrmu.shelltalk%0a/cloud9p/mkf/mail   | mail.mkf.cloud9p%0a/com/google/www     | www.google.com%0a@]%0a%0aEach FNS server keeps track of its own entries (files and subdirectories) as well as a pointer to its parent, .. in a relative path system. It is analogous to how the UNIX filesystem works, where each inode contains listing of its own files/subdirectories and its parent ..%0a%0aIn the above example, /cloud9p/mkf/mail, / root handles the records for cloud9p; cloud9p handles the record for mkf; and mkf handles the record for mail. FNS queries are distributed in the same way that traditional DNS queries are handled.%0a%0aWhat makes FNS unique is that there is no concept of an absolute root, and there are no hard-coded root servers. Instead, to find root, clients must query the parent node .. recursively, until .. points to itself.%0a%0aBy definition, a root node is one where the .. entry points to itself. Because there are no official roots, there can and will exist multiple roots. Any node can declare itself a root simply by pointing its .. entry to itself. The lookup to root always involves recursively querying .. until the root is reached.%0a%0aPathnames are all relative and can be moved at any time moved to a new location in the hierarchy, or even a new root. To change the position in the FNS hierarchy, simply change the .. pointer to a new address. This ease of changing parent directories is designed to make it easy to switch FNS root nodes.%0a%0aBecause of the absence of hard-coded root servers, there are no absolute%0apaths, and any given FNS node only keeps track of its children and immediate%0aparent.%0a%0aEach FNS server chooses where it wants to join the hierarchy, namely, which / root it wants to belong to. It is possible to defederate from this / root and choose a new / root (a chroot FNS split).%0a%0aIn general, users will prefer to have fewer / roots in order to prevent confusion, for simplicity and ease of use. However, because pathnames are relative, it is possible and relatively easy for FNS nameservers to fork. A node simply needs to declare itself as root by setting the .. pointer to itself; and persuade other nodes to set their ... pointer to the new root. This forking mechanism allows forks to take a large chunk of the namespace with them, to deter an abuse of power from / root.%0a%0aEven though there are multiple roots, it is possible for one root to refer to another.%0a%0aFor example, consider the scenario where ircnow and ircnever both run their own separate, independent FNS roots. Suppose a user is connected to shelltalk, a subdirectory of the ircnow network. He would still be able to lookup and resolve the name turtlespeak on the ircnever namespace:%0a%0a/shelltalk/../ircnever/turtlespeak%0a%0aThe shelltalk user would first query .. to get to ircnow's / root, then query%0aircnow's / root to get the address for ircnever, then query ircnever to get%0athe address for turtlespeak.%0a%0aAlthough the two nodes, ircnow and ircnever, are independent roots, they can%0arefer to each other as children inodes with pointers, making it possible to%0aconnect to independent networks.%0a%0aIn the event of conflicts between networks, ircnever may choose to "sanction"%0aircnow by removing its directory listing, and ircnow may likewise remove%0aircnever's directory listing. The users within each respective network can%0astill resolve FNS entries within their own network, but can no longer resolve%0aon enemy networks. Resolving disputes can result in the restoration of broken%0alinks.%0a
+time=1692466206
+title=Request For Complaints #1
+author:1692466206=jrmu
+diff:1692466206:1692466182:=54,55c54%0a%3c on enemy networks. Resolving disputes can result in the restoration of broken%0a%3c links.%0a---%0a> on enemy networks. Peace will result in the restoration of broken links.%0a
+host:1692466206=38.87.162.8
+author:1692466182=jrmu
+diff:1692466182:1692464686:=50,54c50,54%0a%3c In the event of conflicts between networks, ircnever may choose to "sanction"%0a%3c ircnow by removing its directory listing, and ircnow may likewise remove%0a%3c ircnever's directory listing. The users within each respective network can%0a%3c still resolve FNS entries within their own network, but can no longer resolve%0a%3c on enemy networks. Peace will result in the restoration of broken links.%0a---%0a> In the event of conflicts between networks, it may ircnever may choose to%0a> "sanction" ircnow by removing its directory listing, and ircnow may likewise%0a> remove ircnever's directory listing. The users within each respective network%0a> can still resolve FNS entries within their own network, but can no longer%0a> resolve on enemy networks.%0a
+host:1692466182=38.87.162.8
+author:1692464686=jrmu
+diff:1692464686:1692464686:=1,54d0%0a%3c (:title Request For Complaints #1:)%0a%3c Inter9 Engineering Task Force%0a%3c %0a%3c File Name System (FNS)%0a%3c %0a%3c FNS is designed to replace the centralized domain name system with an alternative that can easily be federated and defederated.%0a%3c %0a%3c The namespace is divided by the delimeter / like pathnames in a filesystem:%0a%3c %0a%3c [@%0a%3c FNS path            | DNS equivalent%0a%3c ====================+===================%0a%3c /shelltalk/jrmu/www | www.jrmu.shelltalk%0a%3c /cloud9p/mkf/mail   | mail.mkf.cloud9p%0a%3c /com/google/www     | www.google.com%0a%3c @]%0a%3c %0a%3c Each FNS server keeps track of its own entries (files and subdirectories) as well as a pointer to its parent, .. in a relative path system. It is analogous to how the UNIX filesystem works, where each inode contains listing of its own files/subdirectories and its parent ..%0a%3c %0a%3c In the above example, /cloud9p/mkf/mail, / root handles the records for cloud9p; cloud9p handles the record for mkf; and mkf handles the record for mail. FNS queries are distributed in the same way that traditional DNS queries are handled.%0a%3c %0a%3c What makes FNS unique is that there is no concept of an absolute root, and there are no hard-coded root servers. Instead, to find root, clients must query the parent node .. recursively, until .. points to itself.%0a%3c %0a%3c By definition, a root node is one where the .. entry points to itself. Because there are no official roots, there can and will exist multiple roots. Any node can declare itself a root simply by pointing its .. entry to itself. The lookup to root always involves recursively querying .. until the root is reached.%0a%3c %0a%3c Pathnames are all relative and can be moved at any time moved to a new location in the hierarchy, or even a new root. To change the position in the FNS hierarchy, simply change the .. pointer to a new address. This ease of changing parent directories is designed to make it easy to switch FNS root nodes.%0a%3c %0a%3c Because of the absence of hard-coded root servers, there are no absolute%0a%3c paths, and any given FNS node only keeps track of its children and immediate%0a%3c parent.%0a%3c %0a%3c Each FNS server chooses where it wants to join the hierarchy, namely, which / root it wants to belong to. It is possible to defederate from this / root and choose a new / root (a chroot FNS split).%0a%3c %0a%3c In general, users will prefer to have fewer / roots in order to prevent confusion, for simplicity and ease of use. However, because pathnames are relative, it is possible and relatively easy for FNS nameservers to fork. A node simply needs to declare itself as root by setting the .. pointer to itself; and persuade other nodes to set their ... pointer to the new root. This forking mechanism allows forks to take a large chunk of the namespace with them, to deter an abuse of power from / root.%0a%3c %0a%3c Even though there are multiple roots, it is possible for one root to refer to another.%0a%3c %0a%3c For example, consider the scenario where ircnow and ircnever both run their own separate, independent FNS roots. Suppose a user is connected to shelltalk, a subdirectory of the ircnow network. He would still be able to lookup and resolve the name turtlespeak on the ircnever namespace:%0a%3c %0a%3c /shelltalk/../ircnever/turtlespeak%0a%3c %0a%3c The shelltalk user would first query .. to get to ircnow's / root, then query%0a%3c ircnow's / root to get the address for ircnever, then query ircnever to get%0a%3c the address for turtlespeak.%0a%3c %0a%3c Although the two nodes, ircnow and ircnever, are independent roots, they can%0a%3c refer to each other as children inodes with pointers, making it possible to%0a%3c connect to independent networks.%0a%3c %0a%3c In the event of conflicts between networks, it may ircnever may choose to%0a%3c "sanction" ircnow by removing its directory listing, and ircnow may likewise%0a%3c remove ircnever's directory listing. The users within each respective network%0a%3c can still resolve FNS entries within their own network, but can no longer%0a%3c resolve on enemy networks.%0a
+host:1692464686=38.87.162.8
blob - /dev/null
blob + 5ee937852612a4560bb69060bd050701b69d3a99 (mode 644)
--- /dev/null
+++ wiki.d/9.Fonts
@@ -0,0 +1,33 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1632752924
+host=125.231.18.235
+name=9.Fonts
+rev=7
+targets=
+text=All the fonts are located in /lib/font/bit%0a%0aRecommended @@%25 ls */*unicode*@@ to find unicode fonts.%0a%0aTo make the font bigger for rio:%0a%0a[@%0a%25 rio -f  /lib/font/bit/dejavusansbd/unicode.18.font%0a%25 rio -f  /lib/font/bit/lucida/unicode.28.font%0a@]%0a%0aFor night mode:%0a%0a[@%0a%25 rio -bf /lib/font/bit/dejavusansbd/unicode.18.font%0a%25 rio -bf  /lib/font/bit/lucida/unicode.28.font%0a@]%0a%0aTo make the font bigger for virtual terminal:%0a%0a[@%0a%25 vt -f /lib/font/bit/pelm/unicode.9.font%0a@]%0a
+time=1632849183
+author:1632849183=jrmu
+diff:1632849183:1632848333:=9c9%0a%3c %25 rio -f  /lib/font/bit/lucida/unicode.28.font%0a---%0a> %25 rio -f  /lib/font/bit/lucida/unicode.20.font%0a16c16%0a%3c %25 rio -bf  /lib/font/bit/lucida/unicode.28.font%0a---%0a> %25 rio -bf  /lib/font/bit/lucida/unicode.20.font%0a
+host:1632849183=125.231.18.235
+author:1632848333=jrmu
+diff:1632848333:1632847360:=8c8%0a%3c %25 rio -f  /lib/font/bit/dejavusansbd/unicode.18.font%0a---%0a> %25 rio -f  /lib/font/bit/dejavubd/unicode.18.font%0a15c15%0a%3c %25 rio -bf /lib/font/bit/dejavusansbd/unicode.18.font%0a---%0a> %25 rio -bf /lib/font/bit/dejavubd/unicode.18.font%0a
+host:1632848333=125.231.18.235
+author:1632847360=jrmu
+diff:1632847360:1632845815:=8d7%0a%3c %25 rio -f  /lib/font/bit/dejavubd/unicode.18.font%0a15d13%0a%3c %25 rio -bf /lib/font/bit/dejavubd/unicode.18.font%0a
+host:1632847360=125.231.18.235
+author:1632845815=jrmu
+diff:1632845815:1632845604:=8c8%0a%3c %25 rio -f  /lib/font/bit/lucida/unicode.20.font%0a---%0a> %25 rio -f  /lib/font/bit/pelm/lucida/unicode.20.font%0a14c14%0a%3c %25 rio -bf  /lib/font/bit/lucida/unicode.20.font%0a---%0a> %25 rio -bf  /lib/font/bit/pelm/lucida/unicode.20.font%0a
+host:1632845815=125.231.18.235
+author:1632845604=jrmu
+diff:1632845604:1632842784:=9,14d8%0a%3c @]%0a%3c %0a%3c For night mode:%0a%3c %0a%3c [@%0a%3c %25 rio -bf  /lib/font/bit/pelm/lucida/unicode.20.font%0a
+host:1632845604=125.231.18.235
+author:1632842784=Miniontoby
+diff:1632842784:1632752924:=1,10d0%0a%3c All the fonts are located in /lib/font/bit%0a%3c %0a%3c Recommended @@%25 ls */*unicode*@@ to find unicode fonts.%0a%3c %0a%3c To make the font bigger for rio:%0a%3c %0a%3c [@%0a%3c %25 rio -f  /lib/font/bit/pelm/lucida/unicode.20.font%0a%3c @]%0a%3c %0a
+host:1632842784=125.231.18.235
+author:1632752924=jrmu
+diff:1632752924:1632752924:=1,5d0%0a%3c To make the font bigger for virtual terminal:%0a%3c %0a%3c [@%0a%3c %25 vt -f /lib/font/bit/pelm/unicode.9.font%0a%3c @]%0a
+host:1632752924=125.231.18.235
blob - /dev/null
blob + e085b4bdd94b6af797b7f52aae74106bb81c5406 (mode 644)
--- /dev/null
+++ wiki.d/9.Hostowner
@@ -0,0 +1,21 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows NT 6.1; rv:68.0) Gecko/20100101 Firefox/68.0 SeaMonkey/2.53.10.2
+author=mkf
+charset=UTF-8
+csum=
+ctime=1641468544
+host=2.178.191.175
+name=9.Hostowner
+rev=3
+targets=
+text=Hostowner is who file server started with.%0ait used to be @@eve@@ on Plan 9 from bell labs, but @@glenda@@ on 9front.%0ato change it to "@@username@@" run following as host owner:%0a!!hjfs%0a[@%0a; echo newuser username >> /srv/hjfs.cmd%0a; echo newuser sys +username >> /srv/hjfs.cmd%0a; echo newuser adm +username >> /srv/hjfs.cmd%0a; echo newuser upas +username >> /srv/hjfs.cmd%0a@]%0a!!cwfs%0a[@%0a; echo newuser username >> /srv/cwfs.cmd%0a; echo newuser sys +username >> /srv/cwfs.cmd%0a; echo newuser adm +username >> /srv/cwfs.cmd%0a; echo newuser upas +username >> /srv/cwfs.cmd%0a@]%0a!!ndb%0anow, edit /lib/ndb/auth%0a[@%0ahostid=username%0a	uid=!sys uid=!adm uid=*%0a@]%0a!!plan9.ini%0a[@%0a9fs 9fat%0aecho 'user=username' >> /n/9/plan9.ini%0a@]%0aand we're done.
+time=1641468588
+author:1641468588=mkf
+diff:1641468588:1641468572:minor=3c3%0a%3c to change it to "@@username@@" run following as host owner:%0a---%0a> to change it to "@@username@@" else run following as host owner:%0a
+host:1641468588=2.178.191.175
+author:1641468572=mkf
+diff:1641468572:1641468544:minor=3c3%0a%3c to change it to "@@username@@" else run following as host owner:%0a---%0a> for example to change it to something else run following as host owner:%0a
+host:1641468572=2.178.191.175
+author:1641468544=mkf
+diff:1641468544:1641468544:=1,29d0%0a%3c Hostowner is who file server started with.%0a%3c it used to be @@eve@@ on Plan 9 from bell labs, but @@glenda@@ on 9front.%0a%3c for example to change it to something else run following as host owner:%0a%3c !!hjfs%0a%3c [@%0a%3c ; echo newuser username >> /srv/hjfs.cmd%0a%3c ; echo newuser sys +username >> /srv/hjfs.cmd%0a%3c ; echo newuser adm +username >> /srv/hjfs.cmd%0a%3c ; echo newuser upas +username >> /srv/hjfs.cmd%0a%3c @]%0a%3c !!cwfs%0a%3c [@%0a%3c ; echo newuser username >> /srv/cwfs.cmd%0a%3c ; echo newuser sys +username >> /srv/cwfs.cmd%0a%3c ; echo newuser adm +username >> /srv/cwfs.cmd%0a%3c ; echo newuser upas +username >> /srv/cwfs.cmd%0a%3c @]%0a%3c !!ndb%0a%3c now, edit /lib/ndb/auth%0a%3c [@%0a%3c hostid=username%0a%3c 	uid=!sys uid=!adm uid=*%0a%3c @]%0a%3c !!plan9.ini%0a%3c [@%0a%3c 9fs 9fat%0a%3c echo 'user=username' >> /n/9/plan9.ini%0a%3c @]%0a%3c and we're done.%0a\ No newline at end of file%0a
+host:1641468544=2.178.191.175
blob - /dev/null
blob + 918d513461ccb6dd94eb67d75e358eff112cb836 (mode 644)
--- /dev/null
+++ wiki.d/9.IP
@@ -0,0 +1,21 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1692488983
+host=38.87.162.8
+name=9.IP
+rev=3
+targets=
+text=The best alternative internet involves an overlay network on top%0aof IP, by encapsulating IPv4 inside IP (basically IPSec).%0a%0aOnly slight modifications need to be made to IPv4.%0a%0aThe fundamental problem is that the Internet address space is controlled by by a single government agency (ICANN).%0a%0aTo prevent one single central authority from controlling the entire Internet, each autonomous system should have the ability to splinter and form its own separate internet. In place of one single Internet, there would exist multiple parallel internets.%0aEach autonomous system becomes truly autonomous, able to%0aleave or join an existing internet.%0a%0aThe advantage of encapsulating IP is that this overlay network benefits from%0athe packet-switching design of IP which overlay networks like Tor lack.  For%0aexample, IP routing is highly optimized for latency/bandwidth, unlike the%0aconvoluted routing methods taken by tor. The low latency makes it suitable%0afor multimedia applications and heavy traffic.%0a%0aBy design, IP packet switching is more suitable for evading censorship of%0aVPNs, because encapsulated packets can easily route around censored nodes.%0a%0aEncapsulated IPv4 is familiar, predictable, and well documented. Existing software can be reused with virtually no modifications. The extra complexity of IPv6 is likely unnecessary given that the focus is on the free user community, which does not begin to approach 2^32 hosts.%0a%0aThis overlay network will allow users to host from home, since they can be assigned static IP addresses with proper reverse DNS networking. Their location and identity is also obscured by one extra layer of indirection.%0a%0aIn a world of parallel splinternets, the way to communicate with foreign networks is with NAT. Even IPv6 would need NAT%0a%0aIf the world's major powers should go to war, national firewalls would be developed which will cause the Internet to splinter. Without ICANN coordinating IP address space, nations would likely end up with address collisions. Under such a scenario, even IPv6 would need NAT in order to communicate between splinternets.%0a%0aFor example, if two nations claim the ownership of the IP address 2602:fccf:1::, the assumption that each IP address is globally unique will no longer hold true. There would be no way to relay messages between them without resorting to a gateway to translate the addresses, in other words, Network Address Translation.%0a%0a
+time=1692749534
+author:1692749534=jrmu
+diff:1692749534:1692489355:=24,30d23%0a%3c %0a%3c In a world of parallel splinternets, the way to communicate with foreign networks is with NAT. Even IPv6 would need NAT%0a%3c %0a%3c If the world's major powers should go to war, national firewalls would be developed which will cause the Internet to splinter. Without ICANN coordinating IP address space, nations would likely end up with address collisions. Under such a scenario, even IPv6 would need NAT in order to communicate between splinternets.%0a%3c %0a%3c For example, if two nations claim the ownership of the IP address 2602:fccf:1::, the assumption that each IP address is globally unique will no longer hold true. There would be no way to relay messages between them without resorting to a gateway to translate the addresses, in other words, Network Address Translation.%0a%3c %0a
+host:1692749534=38.87.162.8
+author:1692489355=jrmu
+diff:1692489355:1692488983:=20,23d19%0a%3c %0a%3c Encapsulated IPv4 is familiar, predictable, and well documented. Existing software can be reused with virtually no modifications. The extra complexity of IPv6 is likely unnecessary given that the focus is on the free user community, which does not begin to approach 2^32 hosts.%0a%3c %0a%3c This overlay network will allow users to host from home, since they can be assigned static IP addresses with proper reverse DNS networking. Their location and identity is also obscured by one extra layer of indirection.%0a
+host:1692489355=38.87.162.8
+author:1692488983=jrmu
+diff:1692488983:1692488983:=1,19d0%0a%3c The best alternative internet involves an overlay network on top%0a%3c of IP, by encapsulating IPv4 inside IP (basically IPSec).%0a%3c %0a%3c Only slight modifications need to be made to IPv4.%0a%3c %0a%3c The fundamental problem is that the Internet address space is controlled by by a single government agency (ICANN).%0a%3c %0a%3c To prevent one single central authority from controlling the entire Internet, each autonomous system should have the ability to splinter and form its own separate internet. In place of one single Internet, there would exist multiple parallel internets.%0a%3c Each autonomous system becomes truly autonomous, able to%0a%3c leave or join an existing internet.%0a%3c %0a%3c The advantage of encapsulating IP is that this overlay network benefits from%0a%3c the packet-switching design of IP which overlay networks like Tor lack.  For%0a%3c example, IP routing is highly optimized for latency/bandwidth, unlike the%0a%3c convoluted routing methods taken by tor. The low latency makes it suitable%0a%3c for multimedia applications and heavy traffic.%0a%3c %0a%3c By design, IP packet switching is more suitable for evading censorship of%0a%3c VPNs, because encapsulated packets can easily route around censored nodes.%0a
+host:1692488983=38.87.162.8
blob - /dev/null
blob + a808e5511caa6446b22899be95bb947e2aafe760 (mode 644)
--- /dev/null
+++ wiki.d/9.Ideas
@@ -0,0 +1,96 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows NT 6.1; rv:68.0) Gecko/20100101 Firefox/68.0 SeaMonkey/2.53.10.2
+author=mkf
+charset=UTF-8
+csum=
+ctime=1632882316
+host=188.210.111.232
+name=9.Ideas
+rev=28
+targets=
+text=Fork of 9Front:%0a%0aGoals:%0a%0a* Separate non-free software from free software. Make sure non-free software is not downloaded by default but instead placed in a separate repository.%0a  * Replace Aladdin Ghostscript with freely licensed version%0a* Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses. Create a tolerant base for users with different beliefs and skill levels.%0a* Accessibility for blind, Keyboard-only access: -- Write Serial Console Guide%0a* Fix VNC server bug; slows to a crawl after long uptime%0a* Add protection against bitrot in file system%0a* Write Plan101 course%0a* Support all Linux and BSDs (?)%0a* Provide 9fs for every operating system%0a* Port Drawterm to every platform:%0a  * iOS -- may be impossible, use vncs instead%0a  * Android%0a  * Linux%0a    * Debian%0a    * OpenSuSE%0a  * FreeBSD, NetBSD?%0a* Keep plan9port up to date for every platform%0a* Inferno?%0a* Host files -- tech books, gutenberg.org, RFCs, librivox, wikipedia, survival books%0a* Add filesystems: ircfs, xmppfs, matrixfs, check nntpfs, activitypubfs, check gopherfs, geminifs, check rssfs%0a%0aLow Priority%0a* Perhaps: searchable package manager with prebuilt binaries%0a* Write free drivers for wifi%0a* Write a working firewall%0a%0a* VCS conversion filesystem%0a* Dynamically generated filesystem? like CGI%0a* file type conversion filesystem?%0a* overload existing grammar for shell verbs (commands), prepositions (pipes)%0a%0aObsolete:%0a* Make it easy to port existing UNIX applications%0a* X11 -- just use unix and install plan9port%0a* Get working servers for:%0a  * IRC%0a  * psybnc fork%0a  * DNS ([[https://pirata.dev/delphinusdnsd/|delphinusdnsd]])%0a* HTTP server: provide compatibility with most web apps%0a
+time=1645636752
+author:1645636752=mkf
+diff:1645636752:1645559633:=7a8%0a> * Provide OpenSSH access -- Done with OpenBSD->drawterm bridge%0a12c13%0a%3c * Support all Linux and BSDs (?)%0a---%0a> * Support all Linux and BSDs%0a28a30%0a> * SMTP/IMAP/POP servers%0a
+host:1645636752=188.210.111.232
+author:1645559633=jrmu
+diff:1645559633:1642372086:=32,36d31%0a%3c %0a%3c * VCS conversion filesystem%0a%3c * Dynamically generated filesystem? like CGI%0a%3c * file type conversion filesystem?%0a%3c * overload existing grammar for shell verbs (commands), prepositions (pipes)%0a
+host:1645559633=38.87.162.8
+author:1642372086=mkf
+diff:1642372086:1636112800:=30a31%0a> * Add support for niche operating systems in the hypervisor, including Haiku, ReactOS, (all BSDs and Linux if not already done)%0a
+host:1642372086=188.210.105.217
+author:1636112800=jrmu
+diff:1636112800:1636103875:=25d24%0a%3c * Add filesystems: ircfs, xmppfs, matrixfs, check nntpfs, activitypubfs, check gopherfs, geminifs, check rssfs%0a
+host:1636112800=38.87.162.8
+author:1636103875=jrmu
+diff:1636103875:1636102050:=8,10c8,24%0a%3c * Provide OpenSSH access -- Done with OpenBSD->drawterm bridge%0a%3c * Accessibility for blind, Keyboard-only access: -- Write Serial Console Guide%0a%3c * Fix VNC server bug; slows to a crawl after long uptime%0a---%0a> * Provide support for legacy applications including:%0a>   * X11%0a>   * Teletype Terminals -- Write Serial Console Guide%0a>   * OpenSSH server -- Done with OpenBSD->drawterm bridge%0a> * Make it easy to port existing UNIX applications%0a> * Write free drivers for wifi%0a> * Write a working firewall%0a> * Get working servers for:%0a>   * IRC%0a>   * psybnc fork%0a>   * DNS ([[https://pirata.dev/delphinusdnsd/|delphinusdnsd]])%0a> * Improve reliability and quality of:%0a>   * VNC server%0a>   * SMTP/IMAP/POP servers%0a>   * HTTP server: provide compatibility with most web apps%0a> * Perhaps: searchable package manager with prebuilt binaries%0a> * Add support for niche operating systems in the hypervisor, including Haiku, ReactOS, (all BSDs and Linux if not already done)%0a13,16c27,33%0a%3c * Support all Linux and BSDs%0a%3c * Provide 9fs for every operating system%0a%3c * Port Drawterm to every platform:%0a%3c   * iOS -- may be impossible, use vncs instead%0a---%0a> * In addition to creating /mnt/term on 9, also create filesystem on drawterm's host operating system, so the user can use his own file manager and apps%0a> %0a> Drawterm:%0a> %0a> Cons: %0a> * Missing on:%0a>   * iOS%0a21,40c38,47%0a%3c   * FreeBSD, NetBSD?%0a%3c * Keep plan9port up to date for every platform%0a%3c * Inferno?%0a%3c * Host files -- tech books, gutenberg.org, RFCs, librivox, wikipedia, survival books%0a%3c %0a%3c Low Priority%0a%3c * Perhaps: searchable package manager with prebuilt binaries%0a%3c * Write free drivers for wifi%0a%3c * SMTP/IMAP/POP servers%0a%3c * Add support for niche operating systems in the hypervisor, including Haiku, ReactOS, (all BSDs and Linux if not already done)%0a%3c * Write a working firewall%0a%3c %0a%3c Obsolete:%0a%3c * Make it easy to port existing UNIX applications%0a%3c * X11 -- just use unix and install plan9port%0a%3c * Get working servers for:%0a%3c   * IRC%0a%3c   * psybnc fork%0a%3c   * DNS ([[https://pirata.dev/delphinusdnsd/|delphinusdnsd]])%0a%3c * HTTP server: provide compatibility with most web apps%0a---%0a>   * BSDs?%0a> %0a> Pros:%0a> * Can share audio%0a> * Better security with namespaces%0a> * Uses 9P%0a> * Can access filesystem%0a> * TLS Encryption (vncs supports it, but what about vnc clients?)%0a> %0a> %0a
+host:1636103875=38.87.162.8
+author:1636102050=jrmu
+diff:1636102050:1636102008:=27d26%0a%3c * In addition to creating /mnt/term on 9, also create filesystem on drawterm's host operating system, so the user can use his own file manager and apps%0a
+host:1636102050=38.87.162.8
+author:1636102008=jrmu
+diff:1636102008:1634546968:=10,11c10,11%0a%3c   * Teletype Terminals -- Write Serial Console Guide%0a%3c   * OpenSSH server -- Done with OpenBSD->drawterm bridge%0a---%0a>   * Teletype Terminals%0a>   * OpenSSH server%0a
+host:1636102008=38.87.162.8
+author:1634546968=mkf
+diff:1634546968:1633357382:=44,46d43%0a%3c * TLS Encryption (vncs supports it, but what about vnc clients?)%0a%3c %0a%3c %0a
+host:1634546968=86.106.193.126
+author:1633357382=jrmu
+diff:1633357382:1633357229:=23c23%0a%3c * Perhaps: searchable package manager with prebuilt binaries%0a---%0a> * Searchable package manager with prebuilt binaries%0a
+host:1633357382=125.231.16.47
+author:1633357229=jrmu
+diff:1633357229:1632899859:=23d22%0a%3c * Searchable package manager with prebuilt binaries%0a
+host:1633357229=125.231.16.47
+author:1632899859=jrmu
+diff:1632899859:1632898952:=20d19%0a%3c   * VNC server%0a25d23%0a%3c * Write Plan101 course%0a
+host:1632899859=125.231.16.216
+author:1632898952=jrmu
+diff:1632898952:1632896935:=24,40d23%0a%3c %0a%3c Drawterm:%0a%3c %0a%3c Cons: %0a%3c * Missing on:%0a%3c   * iOS%0a%3c   * Android%0a%3c   * Linux%0a%3c     * Debian%0a%3c     * OpenSuSE%0a%3c   * BSDs?%0a%3c %0a%3c Pros:%0a%3c * Can share audio%0a%3c * Better security with namespaces%0a%3c * Uses 9P%0a%3c * Can access filesystem%0a
+host:1632898952=125.231.16.216
+author:1632896935=jrmu
+diff:1632896935:1632893415:=17d16%0a%3c   * psybnc fork%0a
+host:1632896935=125.231.16.216
+author:1632893415=jrmu
+diff:1632893415:1632884074:=17d16%0a%3c   * DNS ([[https://pirata.dev/delphinusdnsd/|delphinusdnsd]])%0a
+host:1632893415=125.231.16.216
+author:1632884074=jrmu
+diff:1632884074:1632883864:=21d20%0a%3c * Add protection against bitrot in file system%0a
+host:1632884074=125.231.16.216
+author:1632883864=jrmu
+diff:1632883864:1632883844:=7c7%0a%3c * Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses. Create a tolerant base for users with different beliefs and skill levels.%0a---%0a> * Perhaps: Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses. Create a tolerant base for users with different beliefs and skill levels.%0a
+host:1632883864=125.231.16.216
+author:1632883844=jrmu
+diff:1632883844:1632883648:=6d5%0a%3c   * Replace Aladdin Ghostscript with freely licensed version%0a
+host:1632883844=125.231.16.216
+author:1632883648=jrmu
+diff:1632883648:1632883630:=6c6%0a%3c * Perhaps: Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses. Create a tolerant base for users with different beliefs and skill levels.%0a---%0a> * Perhaps: Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses. Create a tolerant base for users with different beliefs.%0a
+host:1632883648=125.231.16.216
+author:1632883630=jrmu
+diff:1632883630:1632883600:=6c6%0a%3c * Perhaps: Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses. Create a tolerant base for users with different beliefs.%0a---%0a> * Perhaps: Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses. Create a tolerant OS for users of different beliefs.%0a
+host:1632883630=125.231.16.216
+author:1632883600=jrmu
+diff:1632883600:1632883120:=6c6%0a%3c * Perhaps: Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses. Create a tolerant OS for users of different beliefs.%0a---%0a> * Perhaps: Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses.%0a
+host:1632883600=125.231.16.216
+author:1632883120=jrmu
+diff:1632883120:1632883085:=18c18%0a%3c   * HTTP server: provide compatibility with most web apps%0a---%0a>   * HTTP server%0a
+host:1632883120=125.231.16.216
+author:1632883085=jrmu
+diff:1632883085:1632883018:=16,18c16%0a%3c * Improve reliability and quality of:%0a%3c   * SMTP/IMAP/POP servers%0a%3c   * HTTP server%0a---%0a>   * SMTP/IMAP/POP%0a
+host:1632883085=125.231.16.216
+author:1632883018=jrmu
+diff:1632883018:1632882621:=6c6,7%0a%3c * Perhaps: Allow contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses.%0a---%0a> * Accept contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses.%0a> * %0a
+host:1632883018=125.231.16.216
+author:1632882621=jrmu
+diff:1632882621:1632882479:=18d17%0a%3c * Add support for niche operating systems in the hypervisor, including Haiku, ReactOS, (all BSDs and Linux if not already done)%0a
+host:1632882621=125.231.16.216
+author:1632882479=jrmu
+diff:1632882479:1632882431:=14,17d13%0a%3c * Write a working firewall%0a%3c * Get working servers for:%0a%3c   * IRC%0a%3c   * SMTP/IMAP/POP%0a
+host:1632882479=125.231.16.216
+author:1632882431=jrmu
+diff:1632882431:1632882381:=13d12%0a%3c * Write free drivers for wifi%0a
+host:1632882431=125.231.16.216
+author:1632882381=jrmu
+diff:1632882381:1632882316:=8,12d7%0a%3c * Provide support for legacy applications including:%0a%3c   * X11%0a%3c   * Teletype Terminals%0a%3c   * OpenSSH server%0a%3c * Make it easy to port existing UNIX applications%0a
+host:1632882381=125.231.16.216
+author:1632882316=jrmu
+diff:1632882316:1632882316:=1,7d0%0a%3c Fork of 9Front:%0a%3c %0a%3c Goals:%0a%3c %0a%3c * Separate non-free software from free software. Make sure non-free software is not downloaded by default but instead placed in a separate repository.%0a%3c * Accept contributions from any free license, whether it is GPL or BSD. All licenses must respect the four basic freedoms. Avoid discrimination based on licenses.%0a%3c * %0a
+host:1632882316=125.231.16.216
blob - /dev/null
blob + fd46ae554478dfd24e833496d8f2d6c2729cb137 (mode 644)
--- /dev/null
+++ wiki.d/9.Independent
@@ -0,0 +1,16 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:93.0) Gecko/20100101 Firefox/93.0
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1640004446
+host=125.231.26.67
+name=9.Independent
+rev=1
+targets=
+text=(:title 9: Independent:)%0a%0aIndependent software for independent minds.
+time=1640004446
+title=9: Independent
+author:1640004446=jrmu
+diff:1640004446:1640004446:=1,3d0%0a%3c (:title 9: Independent:)%0a%3c %0a%3c Independent software for independent minds.%0a\ No newline at end of file%0a
+host:1640004446=125.231.26.67
blob - /dev/null
blob + ee168b1c03a9161e0887af1847ed3244470626a4 (mode 644)
--- /dev/null
+++ wiki.d/9.Install
@@ -0,0 +1,96 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0 SeaMonkey/2.53.10.2
+author=mkf
+charset=UTF-8
+csum=
+ctime=1632371332
+host=38.87.162.40
+name=9.Install
+rev=28
+targets=
+text='+please see [[http://cloud9p.org/doc/vmm.html]] instead of this document.+'%0a%0aAttach:plan9-desktop.png%0a%0aIn /etc/vm.conf:%0a%0a[@%0avm "username-plan9" {%0a        owner username%0a        memory 1024M%0a        cdrom "/home/iso/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso"%0a        disk /home/username/username-plan9.qcow2 %0a        interface {%0a                locked lladdr aa:bb:cc:dd:ee:ff%0a                switch "switch0"%0a        }%0a}%0a@]%0a%0aDownload the plan9 ISO:%0a%0a[@%0a$ ftp http://9front.org/iso/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz%0a$ doas mv 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz /home/iso/%0a$ doas chown -R iso:iso /home/iso/%0a$ cd /home/iso%0a$ sha256 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz%0aSHA256 (9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz) = af6dfae894dcb1e43f1e7e3d085b50f6d1dcf396e09a37d23c174ea94d8bf244%0a$ gunzip 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz%0a@]%0a%0aCreate a user account and make sure to set the folder as go-rx:%0a%0a[@%0a$ doas chmod -R go-rx ~/%0a$ doas su username%0a@]%0a%0aIn the home folder:%0a%0a[@%0a$ vmctl create -s 20G ~/username-plan9.qcow2%0a@]%0a%0aThen log out of the user with ^D, then as admin user in group wheel:%0a%0a[@%0a$ doas vmctl reload%0a$ doas vmctl start -c username-plan9%0aConnected to /dev/ttypr (speed 115200)                                                  %0aBoot failed: not a bootable disk                                                        %0a                                                                                        %0a*e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000a0000 2 %0a0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x000000003fffc000 2 0x000000%0a003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x0000000100000000                   %0acdboot=yes                                                                              %0amouseport=ask                                                                           %0amonitor=ask                                                                             %0avgasize=ask                                                                             %0abootfile=/386/9pc                                                                       %0a>console=0                                                                              %0accoonnssoollee==00%0a%0a>>bboooott%0a%0abboooott%0a                                                                                        %0a                                                                                        %0aPlan 9%0a125 holes free%0a0x00021000 0x0009f000 516096%0a0x00100000 0x00110000 65536%0a0x005dd000 0x19cc8000 426684416%0a427266048 bytes free%0acpu0: 4600MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97F)%0aELCR: 02E8%0a#l0: virtio: 1000Mbps port 0x2000 irq 5 ea f2b2b3daeb05%0ai8042: kbd init failed%0a1000M memory: 413M kernel data, 587M user, 1212M swap%0anusb/usbd: no hubs%0a%0a/dev/sd00: OpenBSD VMM CD-ROM 001%0a/dev/sd00/data   9660%0a/dev/sdF0:%0a/dev/sdF0/data%0abootargs is (tcp, tls, il, local!device)[local!/dev/sd00/data] %0auser[glenda]: %0a%0ainit: starting /bin/rc%0acirno Sep 23 06:50:25 starting dns resolver on /net%0avgasize is (text, 640x480x8, 1024x768x16, ...) [1024x768x16] text%0abind: #i: no frame buffer%0ainit: rc exit status: rc 215: webcookies 330: interrupt%0a%0ainit: starting /bin/rc%0a%25 inst/start%0aThu Sep 23 04:51:42 CET 2021 Installation process started%0a%0a--------------------------------------%0a%0aPreparing menu...%0aThe following unfinished tasks are ready to be done:%0a        configfs        - choose the type of file system to install%0a        confignet       - configure the network%0a        tzsetup - choose time zone%0a%0aTask to do [configfs]: %0a%0a--------------------------------------%0aYou can install the following types of file systems:%0a%0a        cwfs64x the cached-worm file server%0a        hjfs    the new 9front file server (experimental!)%0a%0aFile system (cwfs64x, hjfs)[cwfs64x]: hjfs%0a%0a--------------------------------------%0a%0aPreparing menu...%0aThe following tasks are done: %0a        configfs        - choose the type of file system to install%0a%0aThe following unfinished tasks are ready to be done:%0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a        mountfs - choose and mount file system partition%0a        confignet       - configure the network%0a        tzsetup - choose time zone%0a%0aTask to do [partdisk]: %0a%0a--------------------------------------%0aThe following disk devices were found.%0a%0asd00 - OpenBSD VMM CD-ROM 001%0a   empty                0 485       (485 cylinders, 1.89 GB) %0a * p1                 485 486       (1 cylinders, 4.00 MB) ESP%0a%0asdF0 -%0a%0aDisk to partition (sd00, sdF0)[no default]: sdF0%0aThe disk you selected HAS NO master boot record on its first sector.%0a(Perhaps it is a completely blank disk.)%0aShall we create a blank EFI partition table (GPT)%0aor install traditional DOS partition table (MBR)?%0a%0aInstall mbr or gpt (mbr, gpt)[no default]: mbr%0a%0aThis is disk/fdisk; use it to create a Plan 9 partition.%0aIf there is enough room, a Plan 9 partition will be%0asuggested; you can probably just type 'w' and then 'q'.%0a%0acylinder = 8225280 bytes%0a'* p1                     0 2610        (2610 cylinders, 19.99 GB) PLAN9%0a>>> w%0a>>> q %0a                                                                                        %0a--------------------------------------%0a                                                                                        %0aPreparing menu...%0aThe following tasks are done:                                                           %0a        configfs        - choose the type of file system to install%0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%0aThe following unfinished tasks are ready to be done:                                    %0a        prepdisk        - subdivide plan 9 disk partition               %0a        mountfs - choose and mount file system partition                                %0a        confignet       - configure the network%0a        tzsetup - choose time zone%0a%0aTask to do [prepdisk]: %0a%0a--------------------------------------%0aThe following Plan 9 disk partitions were found.%0a%0a/dev/sdF0/plan9%0a  empty                  0 41929587    (41929587 sectors, 19.99 GB)%0a%0aPlan 9 partition to subdivide (/dev/sdF0/plan9)[/dev/sdF0/plan9]: %0aThis is disk/prep; use it to subdivide the Plan 9 partition.%0aIf it is not yet subdivided, a sensible layout will be suggested;%0ayou can probably just type 'w' and then 'q'.%0a%0ano plan9 partition table found%0a9fat 204800%0anvram 1%0afs 41724786%0a' 9fat                   0 204800      (204800 sectors, 100.00 MB)%0a' nvram             204800 204801      (1 sectors, 512 B )%0a' fs                204801 41929587    (41724786 sectors, 19.89 GB)%0a>>> w%0a>>> q%0a%0a--------------------------------------%0a%0aPreparing menu...%0aThe following tasks are done: %0a        configfs        - choose the type of file system to install%0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a        prepdisk        - subdivide plan 9 disk partition%0a%0aThe following unfinished tasks are ready to be done:%0a        mountfs - choose and mount file system partition%0a        confignet       - configure the network%0a        tzsetup - choose time zone%0a%0aTask to do [mountfs]: %0a%0a--------------------------------------%0a%0aPlease choose your hjfs partition%0a%0a--rw-r----- S 0 glenda glenda 21363090432 Jul 18 17:25 /dev/sdF0/fs%0a%0aHjfs partition (/dev/sdF0/fs)[/dev/sdF0/fs]: %0aSize of RAM filesystem cache (MB)? [192]: %0aReam the filesystem? (yes, no)[yes]: %0aStarting hjfs file server for /dev/sdF0/fs                                              %0ahjfs: reaming /dev/sdF0/fs                                                              %0ahjfs: ream successful                                                                   %0ahjfs: fs is /dev/sdF0/fs          %0aConfiguring hjfs file server for /dev/sdF0/fs%0ahjfs: >create /dist sys sys 775 d%0ahjfs: >create /usr sys sys 775 d%0ahjfs: >newuser glenda%0ahjfs: >newuser adm +glenda%0ahjfs: >newuser sys +glenda%0ahjfs: >newuser upas +glenda%0ahjfs: >echo off%0aMounting hjfs file server for /dev/sdF0/fs%0a%25 mount -c /srv/hjfs.newfs /n/newfs%0a%0a--------------------------------------%0a%0aPreparing menu...%0aThe following tasks are done: %0a        configfs        - choose the type of file system to install%0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a        prepdisk        - subdivide plan 9 disk partition%0a        mountfs - choose and mount file system partition%0a%0aThe following unfinished tasks are ready to be done:%0a        configdist      - choose the source of the distribution archive%0a        confignet       - configure the network%0a        tzsetup - choose time zone%0a%0aTask to do [configdist]: %0a%0a--------------------------------------%0aAre you going to download the distribution%0afrom the internet or do you have it on local media?%0a%0aDistribution is from (local, net)[local]: %0a%0a--------------------------------------%0a%0aPreparing menu...%0aThe following tasks are done: %0a        configfs        - choose the type of file system to install%0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a        prepdisk        - subdivide plan 9 disk partition%0a        mountfs - choose and mount file system partition%0a        configdist      - choose the source of the distribution archive%0a%0aThe following unfinished tasks are ready to be done:%0a        confignet       - configure the network%0a        mountdist       - locate and mount the distribution%0a        tzsetup - choose time zone%0a%0aTask to do [confignet]: %0a%0a--------------------------------------%0a%0aWe will configure the ethernet.%0a%0a%0aPlease choose a method for configuring your ethernet connection.%0a%0a        manual - specify IP address, network mask, gateway IP address%0a        automatic - use DHCP and SLAAC to automatically configure%0a%0aConfiguration method (manual, automatic)[automatic]: %0astarting ethernet automatic config                                                      %0aipconfig: write(try fe80::f0b2:b3ff:feda:eb05 /64): interface does not support multicast%0aipconfig: can't start IPv6 on /net/ether0, address fe80::f0b2:b3ff:feda:eb05%0aipconfig: dialicmp6: cs: can't translate address                                    %0a                                                                                        %0a--------------------------------------                                                  %0a                                                                                        %0aPreparing menu...                                                                       %0aThe following tasks are done:                                                           %0a        configfs        - choose the type of file system to install                     %0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)    %0a        prepdisk        - subdivide plan 9 disk partition                               %0a        mountfs - choose and mount file system partition                                %0a        configdist      - choose the source of the distribution archive                 %0a        confignet       - configure the network                                         %0a                                            %0aThe following unfinished tasks are ready to be done:                                    %0a        mountdist       - locate and mount the distribution                             %0a        download        - download or continue to download the distribution archives    %0a        tzsetup - choose time zone                                                      %0a                                                                                        %0aTask to do [mountdist]: %0a%0a--------------------------------------%0aPlease wait... Scanning storage devices...%0a        /dev/sd00/data%0a        /dev/sdF0/9fat%0a        /dev/sdF0/data%0a        /dev/sdF0/fs%0a%0aThe following storage media were detected.%0aChoose the one containing the distribution.%0a%0a        /dev/sd00/data (iso9660 cdrom)%0a%0aDistribution disk (/dev/sd00/data, /dev/sdF0/fs, /)[/]: %0a%25 mount /srv/boot /n/distmedia                                                          %0a                                            %0aWhich directory contains the distribution?                                              %0aAny of the following will suffice (in order of preference):                             %0a        - the root directory of the cd image                                            %0a        - the directory containing 9front.iso                                           %0a        - the directory containing 9front.iso.bz2                                       %0a                                                                                        %0aLocation of archives [/]:                   %0a%0a--------------------------------------%0a%0aPreparing menu...%0aThe following tasks are done: %0a        configfs        - choose the type of file system to install%0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a        prepdisk        - subdivide plan 9 disk partition%0a        mountfs - choose and mount file system partition%0a        configdist      - choose the source of the distribution archive%0a        confignet       - configure the network%0a        mountdist       - locate and mount the distribution%0a%0aThe following unfinished tasks are ready to be done:%0a        copydist        - copy the distribution into the file system%0a        tzsetup - choose time zone%0a%0aTask to do [copydist]: %0a%0a--------------------------------------                                                  %0aprocessing /sys/lib/sysconfig/proto/allproto                                            %0afile system made                                                              %0a                                            %0a--------------------------------------%0a                                            %0aPreparing menu...                           %0aThe following tasks are done:                                                           %0a        configfs        - choose the type of file system to install                     %0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a        prepdisk        - subdivide plan 9 disk partition                           %0a        mountfs - choose and mount file system partition               %0a        configdist      - choose the source of the distribution archive%0a        confignet       - configure the network                        %0a        mountdist       - locate and mount the distribution         %0a        copydist        - copy the distribution into the file system%0a                                                                                        %0aThe following unfinished tasks are ready to be done: %0a        ndbsetup        - setup network configuration               %0a        tzsetup - choose time zone                                                      %0a        bootsetup       - configure hard disk to boot plan 9%0a                                            %0aTask to do [ndbsetup]:  %0a%0a--------------------------------------%0a%0aSetup network configuration%0a%0asysname [cirno]: username.example.com%0a%0a--------------------------------------%0a%0aPreparing menu...%0aThe following tasks are done: %0a        configfs        - choose the type of file system to install%0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a        prepdisk        - subdivide plan 9 disk partition%0a        mountfs - choose and mount file system partition%0a        configdist      - choose the source of the distribution archive%0a        confignet       - configure the network%0a        mountdist       - locate and mount the distribution%0a        copydist        - copy the distribution into the file system%0a        ndbsetup        - setup network configuration%0a                                                                                        %0aThe following unfinished tasks are ready to be done:%0a        tzsetup - choose time zone                                                      %0a        bootsetup       - configure hard disk to boot plan 9        %0a                                                                                        %0aTask to do [tzsetup]: %0a%0a--------------------------------------                                                  %0a                                                                                        %0aSetup Time Zone                                                                         %0a                                                                                        %0aTime Zone (Argentina, Asia_Bahrain, Asia_India, Australia_ACT, Australia_Broken-Hill, Au%0astralia_LHI, Australia_NSW, Australia_North, Australia_Queensland, Australia_South, Aust%0aralia_Sturt, Australia_Tasmania, Australia_Victoria, Australia_West, Australia_Yancowinn%0aa, Brazil_Acre, Brazil_DeNoronha, Brazil_East, Brazil_West, CET, Canada_Atlantic, Canada%0a_Central, Canada_East-Saskatchewan, Canada_Eastern, Canada_Mountain, Canada_Newfoundland%0a, Canada_Pacific, Canada_Yukon, Chile_Continental, Chile_EasterIsland, Cuba, EET, Egypt,%0a GB-Eire, GMT, HST, Hongkong, Iceland, Iran, Israel, Jamaica, Japan, Libya, Mexico_BajaN%0aorte, Mexico_BajaSur, Mexico_General, NZ, NZ_CHAT, Navajo, PRC, Poland, ROC, ROK, Singap%0aore, Turkey, US_Alaska, US_Arizona, US_Central, US_East-Indiana, US_Eastern, US_Hawaii, %0aUS_Michigan, US_Mountain, US_Pacific, US_Yukon, Uruguay, W-SU, WET)[US_Eastern]: US_Central%0a%0a--------------------------------------                                                  %0a                                                                                        %0aPreparing menu...                                                                       %0aThe following tasks are done:                                                           %0a        configfs        - choose the type of file system to install                     %0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)    %0a        prepdisk        - subdivide plan 9 disk partition                               %0a        mountfs - choose and mount file system partition                                %0a        configdist      - choose the source of the distribution archive          %0a        confignet       - configure the network%0a        mountdist       - locate and mount the distribution%0a        copydist        - copy the distribution into the file system%0a        ndbsetup        - setup network configuration%0a        tzsetup - choose time zone%0a                                                                                        %0aThe following unfinished tasks are ready to be done:                                %0a        bootsetup       - configure hard disk to boot plan 9%0a                                                                                        %0aTask to do [bootsetup]:                                                                 %0a%0a--------------------------------------%0a%0aSetup Plan 9 FAT boot partition (9fat)                                        %0a%0aPlan 9 FAT partition (/dev/sdF0/9fat)[/dev/sdF0/9fat]: %0adossrv: serving #s/dos                                                        %0a%25 dd -bs 512 -count 1 -if /dev/sdF0/9fat -of /tmp/pbs.bak%0a1+0 records in                                                                %0a1+0 records out%0aInitializing Plan 9 FAT partition.                                            %0a%25 disk/format -r 2 -d -b /n/newfs/386/pbs -l PLAN9 /dev/sdF0/9fat%0aInitializing FAT file system%0atype hard, 12 tracks, 255 heads, 63 sectors/track, 512 bytes/sec%0aused 4096 bytes%0a%25 mount -c /srv/dos /n/9fat /dev/sdF0/9fat%0a%25 rm -f /n/9fat/9bootfat /n/9fat/plan9.ini /n/9fat/9pc%0a%25 cp /n/newfs/386/9bootfat /n/9fat/9bootfat%0a%25 chmod +al /n/9fat/9bootfat%0a%25 cp /tmp/plan9.ini /n/9fat/plan9.ini%0a%25 cp /n/newfs/386/9pc /n/9fat/%0a%25 mkdir -p /n/9fat/efi/boot%0a%25 cp /386/bootia32.efi /386/bootx64.efi /n/9fat/efi/boot%0a%25 cp /tmp/pbs.bak /n/9fat%0a%25 unmount /n/9fat%0a%0aIf you use the Windows NT/2000/XP master boot record%0aor a master boot record from a Unix clone (e.g., LILO or%0aFreeBSD bootmgr), it is probably safe to continue using%0athat boot record rather than install the Plan 9 boot record.%0a%0aInstall the Plan 9 master boot record (yes, no)[no default]: yes%0aMark the Plan 9 partition active (yes, no)[no default]: yes%0a%0aThe Plan 9 partition is now marked as active.%0a%0a--------------------------------------%0a%0aPreparing menu...%0aThe following tasks are done: %0a        configfs        - choose the type of file system to install%0a        partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a        prepdisk        - subdivide plan 9 disk partition%0a        mountfs - choose and mount file system partition%0a        configdist      - choose the source of the distribution archive%0a        confignet       - configure the network%0a        mountdist       - locate and mount the distribution%0a        copydist        - copy the distribution into the file system%0a        ndbsetup        - setup network configuration%0a        tzsetup - choose time zone%0a        bootsetup       - configure hard disk to boot plan 9%0a%0aThe following unfinished tasks are ready to be done:%0a        finish  - finish the installation and reboot%0a%0aTask to do [finish]: %0a%0a--------------------------------------%0aCongratulations; you've completed the install.%0a%0a%0ahalting...halted at Thu Sep 23 05:46:49 2021.%0a/srv/cwfs.newfs.cmd...%0adone halting%0arebooting...%0acpu0: exiting%0aTakes a licking and keeps on ticking...%0acan't reset%0a@]%0a%0aAt this point, plan9 is unable to reboot on its own, so type @@~~.@@ then:%0a%0a[@%0a$ doas vmctl stop username-plan9%0a$ doas vmctl start -c username-plan9%0a@]%0a%0a[@%0aConnected to /dev/ttyph (speed 115200)%0aMBR...pbs.................ok%0a*e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x000000000%0a00a0000 2 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x0000000%0a03fffc000 2 0x000000003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x00000%0a00100000000                                                                   %0abootfile=9pc%0abootargs=local!/dev/sdF0/fs -m 192%0amouseport=ask%0amonitor=ask%0avgasize=text%0accoonnssoollee==00%0a%0abboooott%0a%0a%0aPlan 9%0a126 holes free%0a0x0001a000 0x0009f000 544768%0a0x0060a000 0x0ffff000 262098944%0a262643712 bytes free%0acpu0: 4623MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97%0aF)%0aELCR: 02E8%0a#l0: virtio: 1000Mbps port 0x2000 irq 5 ea de4baa668f07%0ai8042: kbd init failed%0a1024M memory: 256M kernel data, 767M user, 1392M swap%0anusb/usbd: no hubs%0a%0a/dev/sd00: OpenBSD VMM CD-ROM 001%0a/dev/sd00/data   9660%0a/dev/sdF0:%0a/dev/sdF0/9fat   dos%0a/dev/sdF0/data%0a/dev/sdF0/fs     hjfs%0a/dev/sdF0/nvram%0a/dev/sdF0/plan9%0abootargs is (tcp, tls, il, local!device)[local!/dev/sdF0/fs -m 192] %0auser[glenda]: %0ahjfs: fs is /dev/sdF0/fs%0a%0ainit: starting /bin/rc%0aipconfig: write(try fe80::dc4b:aaff:fe66:8f07 /64): interface does not support multicast%0aipconfig: can't start IPv6 on /net/ether0, address fe80::dc4b:aaff:fe66:8f07%0aipconfig: dialicmp6: cs: can't translate address%0abind: #i: no frame buffer%0ario: can't open display: initdisplay: /dev/draw/new: '/dev/draw' file does not exist%0ainit: rc exit status: rc 260: rio 396: display open%0a%0ainit: starting /bin/rc%0a%25 auth/wrkey%0abad nvram des key%0abad authentication id%0abad authentication domain%0aauthid: glenda%0aauthdom: username.example.com%0asecstore key:                               %0apassword: %0a%25 9fs 9fat%0a%25 echo 'service=cpu' >> /n/9fat/plan9.ini%0a%25 echo 'while() { sleep 5; ip/ping 38.87.162.1 > /dev/null } &' >> /bin/cpurc%0a%25 fshalt -r%0a@]%0a%0a@@~~.@@ to escape serial console, then:%0a%0a[@%0ahost# vmctl stop username-plan9     %0astopping vm username-plan9: requested to shutdown vm 6%0ahost# vmctl start -c username-plan9 %0a@]%0a%0aTo start VNC (optional):%0a%0a[@%0a# vncs -A /bin/rio -s%0a@]%0a
+time=1642834646
+author:1642834646=mkf
+diff:1642834646:1642834618:=1c1%0a%3c '+please see [[http://cloud9p.org/doc/vmm.html]] instead of this document.+'%0a---%0a> '+please see [[http://cloud9p.org/doc/vmm.html]]+'%0a
+host:1642834646=38.87.162.40
+author:1642834618=mkf
+diff:1642834618:1634654219:=1,2d0%0a%3c '+please see [[http://cloud9p.org/doc/vmm.html]]+'%0a%3c %0a
+host:1642834618=38.87.162.40
+author:1634654219=jrmu
+diff:1634654219:1634528204:=566c566%0a%3c %25 echo 'while() { sleep 5; ip/ping 38.87.162.1 > /dev/null } &' >> /bin/cpurc%0a---%0a> %25 echo 'while() { sleep 5; ip/ping 138.87.162.1 > /dev/null } &' >> /bin/cpurc%0a
+host:1634654219=125.224.28.113
+author:1634528204=jrmu
+diff:1634528204:1633007047:=581c581%0a%3c # vncs -A /bin/rio -s%0a---%0a> # vncs -A /bin/rio%0a
+host:1634528204=38.87.162.8
+author:1633007047=jrmu
+diff:1633007047:1632643899:=1,2d0%0a%3c Attach:plan9-desktop.png%0a%3c %0a
+host:1633007047=125.231.16.216
+author:1632643899=jrmu
+diff:1632643899:1632642478:=574,579d573%0a%3c @]%0a%3c %0a%3c To start VNC (optional):%0a%3c %0a%3c [@%0a%3c # vncs -A /bin/rio%0a
+host:1632643899=125.231.18.235
+author:1632642478=jrmu
+diff:1632642478:1632642278:=564c564%0a%3c %25 echo 'while() { sleep 5; ip/ping 138.87.162.1 > /dev/null } &' >> /bin/cpurc%0a---%0a> %25 echo 'while() { sleep 5; ip/ping -n 138.87.162.1 > /dev/null } &' >> /bin/cpurc%0a
+host:1632642478=125.231.18.235
+author:1632642278=jrmu
+diff:1632642278:1632557533:=564d563%0a%3c %25 echo 'while() { sleep 5; ip/ping -n 138.87.162.1 > /dev/null } &' >> /bin/cpurc%0a
+host:1632642278=125.231.18.235
+author:1632557533=jrmu
+diff:1632557533:1632557235:=370,371c370,371%0a%3c sysname [cirno]: username.example.com%0a%3c %0a---%0a> sysname [cirno]: jrmu.host.bsdforall.org%0a> %0a503a504%0a> host# vmctl start -c jrmu %0a506,509c507,509%0a%3c *e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x000000000%0a%3c 00a0000 2 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x0000000%0a%3c 03fffc000 2 0x000000003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x00000%0a%3c 00100000000                                                                   %0a---%0a> *e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000a0000 2 %0a> 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x000000003fffc000 2 0x000000%0a> 003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x0000000100000000 %0a525,526c525%0a%3c cpu0: 4623MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97%0a%3c F)%0a---%0a> cpu0: 4609MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97F)%0a550,552c549,551%0a%3c rio: can't open display: initdisplay: /dev/draw/new: '/dev/draw' file does not exist%0a%3c init: rc exit status: rc 260: rio 396: display open%0a%3c %0a---%0a> Can't cd /usr/glenda: '/usr/glenda' does not exist%0a> init: rc exit status: rc 260: can't cd%0a> %0a558c557%0a%3c authid: glenda%0a---%0a> authid: glenda                                                                          %0a
+host:1632557533=125.231.18.235
+author:1632557235=jrmu
+diff:1632557235:1632544472:=344d343%0a%3c file system made                                                              %0a370,371c369,370%0a%3c sysname [cirno]: jrmu.host.bsdforall.org%0a%3c %0a---%0a> sysname [cirno]: %0a> %0a429,434c428,433%0a%3c Setup Plan 9 FAT boot partition (9fat)                                        %0a%3c %0a%3c Plan 9 FAT partition (/dev/sdF0/9fat)[/dev/sdF0/9fat]: %0a%3c dossrv: serving #s/dos                                                        %0a%3c %25 dd -bs 512 -count 1 -if /dev/sdF0/9fat -of /tmp/pbs.bak%0a%3c 1+0 records in                                                                %0a---%0a> Setup Plan 9 FAT boot partition (9fat)                                                  %0a>                                                                                         %0a> Plan 9 FAT partition (/dev/sdF0/9fat)[/dev/sdF0/9fat]:      %0a> dossrv: serving #s/dos%0a> %25 dd -bs 512 -count 1 -if /dev/sdF0/9fat -of /tmp/pbs.bak    %0a> 1+0 records in%0a436c435%0a%3c Initializing Plan 9 FAT partition.                                            %0a---%0a> Initializing Plan 9 FAT partition.%0a456c455%0a%3c %0a---%0a>                                                                                         %0a
+host:1632557235=125.231.18.235
+author:1632544472=jrmu
+diff:1632544472:1632544342:=570a571,630%0a> @]%0a> %0a> [@%0a> Connected to /dev/ttyp4 (speed 115200)%0a> MBR...pbs.................ok                                                            %0a> *e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000a0000 2 %0a> 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x000000003fffc000 2 0x000000%0a> 003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x0000000100000000 %0a> bootfile=9pc64                                                                          %0a> bootargs=local!/dev/sdF0/fscache%0a> mouseport=ask%0a> monitor=ask                                 %0a> vgasize=text         %0a> ccoonnssoollee==00%0a>                       %0a> sseerrvviiccee==ccppuu%0a>                                             %0a> bboooott        %0a>                       %0a> bboooott       %0a>                       %0a>                                                                                         %0a> Plan 9%0a> 125 holes free%0a> 0x00021000 0x0009f000 516096%0a> 0x00100000 0x00110000 65536%0a> 0x005dd000 0x136ea000 319868928%0a> 320450560 bytes free%0a> cpu0: 4602MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97F)%0a> ELCR: 02E8%0a> #l0: virtio: 1000Mbps port 0x2000 irq 5 ea f2b2b3daeb05%0a> i8042: kbd init failed%0a> 998M memory: 311M kernel data, 687M user, 1312M swap%0a> nusb/usbd: no hubs%0a> %0a> /dev/sd00: OpenBSD VMM CD-ROM 001%0a> /dev/sd00/data   9660%0a> /dev/sdF0:%0a> /dev/sdF0/9fat   dos%0a> /dev/sdF0/data%0a> /dev/sdF0/fscache        cwfs64x%0a> /dev/sdF0/fsworm%0a> /dev/sdF0/nvram%0a> /dev/sdF0/other%0a> /dev/sdF0/plan9%0a> bootargs is (tcp, tls, il, local!device)[local!/dev/sdF0/fscache] local!/dev/sdF0/fscache -c%0a> config: noauth%0a> auth disabled%0a> config: noauth%0a> auth enabled%0a> config: end%0a> current fs is "main"%0a> 10 uids read, 3 groups used%0a> 63-bit cwfs as of Sun Jul 18 11:21:58 2021%0a>         last boot Thu Sep 23 11:36:17 2021%0a> ipconfig: write(try fe80::f0b2:b3ff:feda:eb05 /64): interface does not support multicast%0a> ipconfig: can't start IPv6 on /net/ether0, address fe80::f0b2:b3ff:feda:eb05%0a> ipconfig: dialicmp6: cs: can't translate address%0a> %0a> init: starting /bin/rc%0a
+host:1632544472=125.231.18.235
+author:1632544342=jrmu
+diff:1632544342:1632544204:=
+host:1632544342=125.231.18.235
+author:1632544204=jrmu
+diff:1632544204:1632541484:=503,552c503%0a%3c host# vmctl start -c jrmu %0a%3c Connected to /dev/ttyph (speed 115200)%0a%3c MBR...pbs.................ok%0a%3c *e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000a0000 2 %0a%3c 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x000000003fffc000 2 0x000000%0a%3c 003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x0000000100000000 %0a%3c bootfile=9pc%0a%3c bootargs=local!/dev/sdF0/fs -m 192%0a%3c mouseport=ask%0a%3c monitor=ask%0a%3c vgasize=text%0a%3c ccoonnssoollee==00%0a%3c %0a%3c bboooott%0a%3c %0a%3c %0a%3c Plan 9%0a%3c 126 holes free%0a%3c 0x0001a000 0x0009f000 544768%0a%3c 0x0060a000 0x0ffff000 262098944%0a%3c 262643712 bytes free%0a%3c cpu0: 4609MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97F)%0a%3c ELCR: 02E8%0a%3c #l0: virtio: 1000Mbps port 0x2000 irq 5 ea de4baa668f07%0a%3c i8042: kbd init failed%0a%3c 1024M memory: 256M kernel data, 767M user, 1392M swap%0a%3c nusb/usbd: no hubs%0a%3c %0a%3c /dev/sd00: OpenBSD VMM CD-ROM 001%0a%3c /dev/sd00/data   9660%0a%3c /dev/sdF0:%0a%3c /dev/sdF0/9fat   dos%0a%3c /dev/sdF0/data%0a%3c /dev/sdF0/fs     hjfs%0a%3c /dev/sdF0/nvram%0a%3c /dev/sdF0/plan9%0a%3c bootargs is (tcp, tls, il, local!device)[local!/dev/sdF0/fs -m 192] %0a%3c user[glenda]: %0a%3c hjfs: fs is /dev/sdF0/fs%0a%3c %0a%3c init: starting /bin/rc%0a%3c ipconfig: write(try fe80::dc4b:aaff:fe66:8f07 /64): interface does not support multicast%0a%3c ipconfig: can't start IPv6 on /net/ether0, address fe80::dc4b:aaff:fe66:8f07%0a%3c ipconfig: dialicmp6: cs: can't translate address%0a%3c bind: #i: no frame buffer%0a%3c Can't cd /usr/glenda: '/usr/glenda' does not exist%0a%3c init: rc exit status: rc 260: can't cd%0a%3c %0a%3c init: starting /bin/rc%0a%3c %25 auth/wrkey%0a---%0a> term%25 auth/wrkey%0a556c507,512%0a%3c authid: glenda                                                                          %0a---%0a> authid: glenda%0a> authdom: username.term%25 auth/wrkey%0a> bad nvram des key%0a> bad authentication id%0a> bad authentication domain%0a> authid: glenda%0a558c514%0a%3c secstore key:                               %0a---%0a> secstore key: %0a560,562c516,519%0a%3c %25 9fs 9fat%0a%3c %25 echo 'service=cpu' >> /n/9fat/plan9.ini%0a%3c %25 fshalt -r%0a---%0a> %0a> term%25 9fs 9fat%0a> term%25 echo 'service=cpu' >> /n/9fat/plan9.ini%0a> term%25 fshalt -r%0a
+host:1632544204=125.231.18.235
+author:1632541484=jrmu
+diff:1632541484:1632536615:=343a344%0a> file system made%0a428,430c429,431%0a%3c Setup Plan 9 FAT boot partition (9fat)                                                  %0a%3c                                                                                         %0a%3c Plan 9 FAT partition (/dev/sdF0/9fat)[/dev/sdF0/9fat]:      %0a---%0a> Setup Plan 9 FAT boot partition (9fat)%0a> %0a> Plan 9 FAT partition (/dev/sdF0/9fat)[/dev/sdF0/9fat]: %0a441c442%0a%3c %25 rm -f /n/9fat/9bootfat /n/9fat/plan9.ini /n/9fat/9pc%0a---%0a> %25 rm -f /n/9fat/9bootfat /n/9fat/plan9.ini /n/9fat/9pc64%0a445c446%0a%3c %25 cp /n/newfs/386/9pc /n/9fat/%0a---%0a> %25 cp /n/newfs/amd64/9pc64 /n/9fat/%0a508c509%0a%3c authdom: username.term%25 auth/wrkey%0a---%0a> authdom: gry.term%25 auth/wrkey%0a525,527c526,528%0a%3c host# vmctl stop username-plan9     %0a%3c stopping vm username-plan9: requested to shutdown vm 6%0a%3c host# vmctl start -c username-plan9 %0a---%0a> host# vmctl stop gry-plan9     %0a> stopping vm gry-plan9: requested to shutdown vm 6%0a> host# vmctl start -c gry-plan9 %0a
+host:1632541484=125.231.18.235
+author:1632536615=jrmu
+diff:1632536615:1632411562:=111,112c111,112%0a%3c File system (cwfs64x, hjfs)[cwfs64x]: hjfs%0a%3c %0a---%0a> File system (cwfs64x, hjfs)[cwfs64x]: %0a> %0a131,133c131,133%0a%3c    empty                0 485       (485 cylinders, 1.89 GB) %0a%3c  * p1                 485 486       (1 cylinders, 4.00 MB) ESP%0a%3c %0a---%0a>    empty                0 494       (494 cylinders, 1.92 GB) %0a>  * p1                 494 495       (1 cylinders, 4.00 MB) ESP%0a> %0a147,148c147,148%0a%3c %0a%3c cylinder = 8225280 bytes%0a---%0a>                                             %0a> cylinder = 8225280 bytes                                                                %0a166,167c166,167%0a%3c Task to do [prepdisk]: %0a%3c %0a---%0a> Task to do [prepdisk]:%0a> %0a182c182,184%0a%3c fs 41724786%0a---%0a> other 5960683%0a> fscache 5960683%0a> fsworm 29803420%0a185c187,190%0a%3c ' fs                204801 41929587    (41724786 sectors, 19.89 GB)%0a---%0a> ' other             204801 6165484     (5960683 sectors, 2.84 GB)%0a> ' fscache          6165484 12126167    (5960683 sectors, 2.84 GB)%0a> ' fsworm          12126167 41929587    (29803420 sectors, 14.21 GB)%0a> >>> %0a206,211c211,221%0a%3c Please choose your hjfs partition%0a%3c %0a%3c --rw-r----- S 0 glenda glenda 21363090432 Jul 18 17:25 /dev/sdF0/fs%0a%3c %0a%3c Hjfs partition (/dev/sdF0/fs)[/dev/sdF0/fs]: %0a%3c Size of RAM filesystem cache (MB)? [192]: %0a---%0a> Please choose your cwfs64x partitions%0a> %0a> --rw-r----- S 0 glenda glenda 3051869696 Jul 18 17:22 /dev/sdF0/fscache%0a> %0a> Cwfs cache partition (/dev/sdF0/fscache)[/dev/sdF0/fscache]: %0a> --rw-r----- S 0 glenda glenda 15259351040 Jul 18 17:22 /dev/sdF0/fsworm%0a> %0a> Cwfs worm partition (/dev/sdF0/fsworm)[/dev/sdF0/fsworm]: %0a> --rw-r----- S 0 glenda glenda 3051869696 Jul 18 17:22 /dev/sdF0/other%0a> %0a> Cwfs other partition (/dev/sdF0/other)[/dev/sdF0/other]: %0a213,227c223,235%0a%3c Starting hjfs file server for /dev/sdF0/fs                                              %0a%3c hjfs: reaming /dev/sdF0/fs                                                              %0a%3c hjfs: ream successful                                                                   %0a%3c hjfs: fs is /dev/sdF0/fs          %0a%3c Configuring hjfs file server for /dev/sdF0/fs%0a%3c hjfs: >create /dist sys sys 775 d%0a%3c hjfs: >create /usr sys sys 775 d%0a%3c hjfs: >newuser glenda%0a%3c hjfs: >newuser adm +glenda%0a%3c hjfs: >newuser sys +glenda%0a%3c hjfs: >newuser upas +glenda%0a%3c hjfs: >echo off%0a%3c Mounting hjfs file server for /dev/sdF0/fs%0a%3c %25 mount -c /srv/hjfs.newfs /n/newfs%0a%3c %0a---%0a> Starting cwfs64x file server for /dev/sdF0/fscache%0a> Reaming filesystem                          %0a> config: config: config: auth disabled%0a> config: config: config: config: config: config: current fs is "main"%0a> cmd_users: cannot access /adm/users%0a> 63-bit cwfs as of Sun Jul 18 17:21:58 2021%0a>         last boot Thu Sep 23 04:55:59 2021%0a> Configuring cwfs64x file server for /dev/sdF0/fscache%0a> Mounting cwfs64x file server for /dev/sdF0/fscache%0a> %25 mount -c /srv/cwfs.newfs /n/newfs%0a> Mounting cwfs64x file server for /dev/sdF0/other%0a> %25 mount -c /srv/cwfs.newfs /n/other other%0a> %0a236c244%0a%3c %0a---%0a>                       %0a239,241c247,249%0a%3c         confignet       - configure the network%0a%3c         tzsetup - choose time zone%0a%3c %0a---%0a>         confignet       - configure the network                                     %0a>         tzsetup - choose time zone                                                      %0a>                                                                                         %0a299,313c307,323%0a%3c Task to do [mountdist]: %0a%3c %0a%3c --------------------------------------%0a%3c Please wait... Scanning storage devices...%0a%3c         /dev/sd00/data%0a%3c         /dev/sdF0/9fat%0a%3c         /dev/sdF0/data%0a%3c         /dev/sdF0/fs%0a%3c %0a%3c The following storage media were detected.%0a%3c Choose the one containing the distribution.%0a%3c %0a%3c         /dev/sd00/data (iso9660 cdrom)%0a%3c %0a%3c Distribution disk (/dev/sd00/data, /dev/sdF0/fs, /)[/]: %0a---%0a> Task to do [mountdist]:                                                                 %0a> %0a> --------------------------------------                                                  %0a> Please wait... Scanning storage devices...                                              %0a>         /dev/sd00/data                                                                  %0a>         /dev/sdF0/9fat                                                                  %0a>         /dev/sdF0/data                                                                  %0a>         /dev/sdF0/fscache                                                               %0a>         /dev/sdF0/fsworm                                                                %0a>         /dev/sdF0/other                                                                 %0a>                                                                                         %0a> The following storage media were detected.                                              %0a> Choose the one containing the distribution.                                             %0a>                                                                                         %0a>         /dev/sd00/data (iso9660 cdrom)                                                  %0a>                                                                                         %0a> Distribution disk (/dev/sd00/data, /dev/sdF0/fscache, /)[/]:                            %0a
+host:1632536615=125.231.18.235
+author:1632411562=jrmu
+diff:1632411562:1632411340:=513a514,517%0a> >>bboooott%0a> @]%0a> %0a> [@%0a539,598d542%0a%3c @]%0a%3c %0a%3c [@%0a%3c Connected to /dev/ttyp4 (speed 115200)%0a%3c MBR...pbs.................ok                                                            %0a%3c *e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000a0000 2 %0a%3c 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x000000003fffc000 2 0x000000%0a%3c 003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x0000000100000000 %0a%3c bootfile=9pc64                                                                          %0a%3c bootargs=local!/dev/sdF0/fscache%0a%3c mouseport=ask%0a%3c monitor=ask                                 %0a%3c vgasize=text         %0a%3c ccoonnssoollee==00%0a%3c                       %0a%3c sseerrvviiccee==ccppuu%0a%3c                                             %0a%3c bboooott        %0a%3c                       %0a%3c bboooott       %0a%3c                       %0a%3c                                                                                         %0a%3c Plan 9%0a%3c 125 holes free%0a%3c 0x00021000 0x0009f000 516096%0a%3c 0x00100000 0x00110000 65536%0a%3c 0x005dd000 0x136ea000 319868928%0a%3c 320450560 bytes free%0a%3c cpu0: 4602MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97F)%0a%3c ELCR: 02E8%0a%3c #l0: virtio: 1000Mbps port 0x2000 irq 5 ea f2b2b3daeb05%0a%3c i8042: kbd init failed%0a%3c 998M memory: 311M kernel data, 687M user, 1312M swap%0a%3c nusb/usbd: no hubs%0a%3c %0a%3c /dev/sd00: OpenBSD VMM CD-ROM 001%0a%3c /dev/sd00/data   9660%0a%3c /dev/sdF0:%0a%3c /dev/sdF0/9fat   dos%0a%3c /dev/sdF0/data%0a%3c /dev/sdF0/fscache        cwfs64x%0a%3c /dev/sdF0/fsworm%0a%3c /dev/sdF0/nvram%0a%3c /dev/sdF0/other%0a%3c /dev/sdF0/plan9%0a%3c bootargs is (tcp, tls, il, local!device)[local!/dev/sdF0/fscache] local!/dev/sdF0/fscache -c%0a%3c config: noauth%0a%3c auth disabled%0a%3c config: noauth%0a%3c auth enabled%0a%3c config: end%0a%3c current fs is "main"%0a%3c 10 uids read, 3 groups used%0a%3c 63-bit cwfs as of Sun Jul 18 11:21:58 2021%0a%3c         last boot Thu Sep 23 11:36:17 2021%0a%3c ipconfig: write(try fe80::f0b2:b3ff:feda:eb05 /64): interface does not support multicast%0a%3c ipconfig: can't start IPv6 on /net/ether0, address fe80::f0b2:b3ff:feda:eb05%0a%3c ipconfig: dialicmp6: cs: can't translate address%0a%3c %0a%3c init: starting /bin/rc%0a
+host:1632411562=38.87.162.8
+author:1632411340=jrmu
+diff:1632411340:1632410437:=511,514d510%0a%3c @]%0a%3c %0a%3c [@%0a%3c >>bboooott%0a
+host:1632411340=38.87.162.8
+author:1632410437=jrmu
+diff:1632410437:1632382263:=528d527%0a%3c term%25 9fs 9fat%0a
+host:1632410437=38.87.162.8
+author:1632382263=jrmu
+diff:1632382263:1632382075:=529,537d528%0a%3c term%25 fshalt -r%0a%3c @]%0a%3c %0a%3c @@~~.@@ to escape serial console, then:%0a%3c %0a%3c [@%0a%3c host# vmctl stop gry-plan9     %0a%3c stopping vm gry-plan9: requested to shutdown vm 6%0a%3c host# vmctl start -c gry-plan9 %0a
+host:1632382263=38.87.162.8
+author:1632382075=jrmu
+diff:1632382075:1632381315:=527,528d526%0a%3c %0a%3c term%25 echo 'service=cpu' >> /n/9fat/plan9.ini%0a
+host:1632382075=38.87.162.8
+author:1632381315=jrmu
+diff:1632381315:1632376599:=511,526d510%0a%3c @]%0a%3c %0a%3c [@%0a%3c term%25 auth/wrkey%0a%3c bad nvram des key%0a%3c bad authentication id%0a%3c bad authentication domain%0a%3c authid: glenda%0a%3c authdom: gry.term%25 auth/wrkey%0a%3c bad nvram des key%0a%3c bad authentication id%0a%3c bad authentication domain%0a%3c authid: glenda%0a%3c authdom: username.example.com%0a%3c secstore key: %0a%3c password: %0a
+host:1632381315=38.87.162.8
+author:1632376599=jrmu
+diff:1632376599:1632376109:=504,510d503%0a%3c @]%0a%3c %0a%3c At this point, plan9 is unable to reboot on its own, so type @@~~.@@ then:%0a%3c %0a%3c [@%0a%3c $ doas vmctl stop username-plan9%0a%3c $ doas vmctl start -c username-plan9%0a
+host:1632376599=38.87.162.8
+author:1632376109=jrmu
+diff:1632376109:1632375496:=352,503d351%0a%3c --------------------------------------                                                  %0a%3c processing /sys/lib/sysconfig/proto/allproto                                            %0a%3c file system made%0a%3c                                             %0a%3c --------------------------------------%0a%3c                                             %0a%3c Preparing menu...                           %0a%3c The following tasks are done:                                                           %0a%3c         configfs        - choose the type of file system to install                     %0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%3c         prepdisk        - subdivide plan 9 disk partition                           %0a%3c         mountfs - choose and mount file system partition               %0a%3c         configdist      - choose the source of the distribution archive%0a%3c         confignet       - configure the network                        %0a%3c         mountdist       - locate and mount the distribution         %0a%3c         copydist        - copy the distribution into the file system%0a%3c                                                                                         %0a%3c The following unfinished tasks are ready to be done: %0a%3c         ndbsetup        - setup network configuration               %0a%3c         tzsetup - choose time zone                                                      %0a%3c         bootsetup       - configure hard disk to boot plan 9%0a%3c                                             %0a%3c Task to do [ndbsetup]:  %0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Setup network configuration%0a%3c %0a%3c sysname [cirno]: %0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Preparing menu...%0a%3c The following tasks are done: %0a%3c         configfs        - choose the type of file system to install%0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%3c         prepdisk        - subdivide plan 9 disk partition%0a%3c         mountfs - choose and mount file system partition%0a%3c         configdist      - choose the source of the distribution archive%0a%3c         confignet       - configure the network%0a%3c         mountdist       - locate and mount the distribution%0a%3c         copydist        - copy the distribution into the file system%0a%3c         ndbsetup        - setup network configuration%0a%3c                                                                                         %0a%3c The following unfinished tasks are ready to be done:%0a%3c         tzsetup - choose time zone                                                      %0a%3c         bootsetup       - configure hard disk to boot plan 9        %0a%3c                                                                                         %0a%3c Task to do [tzsetup]: %0a%3c %0a%3c --------------------------------------                                                  %0a%3c                                                                                         %0a%3c Setup Time Zone                                                                         %0a%3c                                                                                         %0a%3c Time Zone (Argentina, Asia_Bahrain, Asia_India, Australia_ACT, Australia_Broken-Hill, Au%0a%3c stralia_LHI, Australia_NSW, Australia_North, Australia_Queensland, Australia_South, Aust%0a%3c ralia_Sturt, Australia_Tasmania, Australia_Victoria, Australia_West, Australia_Yancowinn%0a%3c a, Brazil_Acre, Brazil_DeNoronha, Brazil_East, Brazil_West, CET, Canada_Atlantic, Canada%0a%3c _Central, Canada_East-Saskatchewan, Canada_Eastern, Canada_Mountain, Canada_Newfoundland%0a%3c , Canada_Pacific, Canada_Yukon, Chile_Continental, Chile_EasterIsland, Cuba, EET, Egypt,%0a%3c  GB-Eire, GMT, HST, Hongkong, Iceland, Iran, Israel, Jamaica, Japan, Libya, Mexico_BajaN%0a%3c orte, Mexico_BajaSur, Mexico_General, NZ, NZ_CHAT, Navajo, PRC, Poland, ROC, ROK, Singap%0a%3c ore, Turkey, US_Alaska, US_Arizona, US_Central, US_East-Indiana, US_Eastern, US_Hawaii, %0a%3c US_Michigan, US_Mountain, US_Pacific, US_Yukon, Uruguay, W-SU, WET)[US_Eastern]: US_Central%0a%3c %0a%3c --------------------------------------                                                  %0a%3c                                                                                         %0a%3c Preparing menu...                                                                       %0a%3c The following tasks are done:                                                           %0a%3c         configfs        - choose the type of file system to install                     %0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)    %0a%3c         prepdisk        - subdivide plan 9 disk partition                               %0a%3c         mountfs - choose and mount file system partition                                %0a%3c         configdist      - choose the source of the distribution archive          %0a%3c         confignet       - configure the network%0a%3c         mountdist       - locate and mount the distribution%0a%3c         copydist        - copy the distribution into the file system%0a%3c         ndbsetup        - setup network configuration%0a%3c         tzsetup - choose time zone%0a%3c                                                                                         %0a%3c The following unfinished tasks are ready to be done:                                %0a%3c         bootsetup       - configure hard disk to boot plan 9%0a%3c                                                                                         %0a%3c Task to do [bootsetup]:                                                                 %0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Setup Plan 9 FAT boot partition (9fat)%0a%3c %0a%3c Plan 9 FAT partition (/dev/sdF0/9fat)[/dev/sdF0/9fat]: %0a%3c dossrv: serving #s/dos%0a%3c %25 dd -bs 512 -count 1 -if /dev/sdF0/9fat -of /tmp/pbs.bak    %0a%3c 1+0 records in%0a%3c 1+0 records out%0a%3c Initializing Plan 9 FAT partition.%0a%3c %25 disk/format -r 2 -d -b /n/newfs/386/pbs -l PLAN9 /dev/sdF0/9fat%0a%3c Initializing FAT file system%0a%3c type hard, 12 tracks, 255 heads, 63 sectors/track, 512 bytes/sec%0a%3c used 4096 bytes%0a%3c %25 mount -c /srv/dos /n/9fat /dev/sdF0/9fat%0a%3c %25 rm -f /n/9fat/9bootfat /n/9fat/plan9.ini /n/9fat/9pc64%0a%3c %25 cp /n/newfs/386/9bootfat /n/9fat/9bootfat%0a%3c %25 chmod +al /n/9fat/9bootfat%0a%3c %25 cp /tmp/plan9.ini /n/9fat/plan9.ini%0a%3c %25 cp /n/newfs/amd64/9pc64 /n/9fat/%0a%3c %25 mkdir -p /n/9fat/efi/boot%0a%3c %25 cp /386/bootia32.efi /386/bootx64.efi /n/9fat/efi/boot%0a%3c %25 cp /tmp/pbs.bak /n/9fat%0a%3c %25 unmount /n/9fat%0a%3c %0a%3c If you use the Windows NT/2000/XP master boot record%0a%3c or a master boot record from a Unix clone (e.g., LILO or%0a%3c FreeBSD bootmgr), it is probably safe to continue using%0a%3c that boot record rather than install the Plan 9 boot record.%0a%3c                                                                                         %0a%3c Install the Plan 9 master boot record (yes, no)[no default]: yes%0a%3c Mark the Plan 9 partition active (yes, no)[no default]: yes%0a%3c %0a%3c The Plan 9 partition is now marked as active.%0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Preparing menu...%0a%3c The following tasks are done: %0a%3c         configfs        - choose the type of file system to install%0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%3c         prepdisk        - subdivide plan 9 disk partition%0a%3c         mountfs - choose and mount file system partition%0a%3c         configdist      - choose the source of the distribution archive%0a%3c         confignet       - configure the network%0a%3c         mountdist       - locate and mount the distribution%0a%3c         copydist        - copy the distribution into the file system%0a%3c         ndbsetup        - setup network configuration%0a%3c         tzsetup - choose time zone%0a%3c         bootsetup       - configure hard disk to boot plan 9%0a%3c %0a%3c The following unfinished tasks are ready to be done:%0a%3c         finish  - finish the installation and reboot%0a%3c %0a%3c Task to do [finish]: %0a%3c %0a%3c --------------------------------------%0a%3c Congratulations; you've completed the install.%0a%3c %0a%3c %0a%3c halting...halted at Thu Sep 23 05:46:49 2021.%0a%3c /srv/cwfs.newfs.cmd...%0a%3c done halting%0a%3c rebooting...%0a%3c cpu0: exiting%0a%3c Takes a licking and keeps on ticking...%0a%3c can't reset%0a
+host:1632376109=38.87.162.8
+author:1632375496=jrmu
+diff:1632375496:1632372743:=105,352d104%0a%3c --------------------------------------%0a%3c You can install the following types of file systems:%0a%3c %0a%3c         cwfs64x the cached-worm file server%0a%3c         hjfs    the new 9front file server (experimental!)%0a%3c %0a%3c File system (cwfs64x, hjfs)[cwfs64x]: %0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Preparing menu...%0a%3c The following tasks are done: %0a%3c         configfs        - choose the type of file system to install%0a%3c %0a%3c The following unfinished tasks are ready to be done:%0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%3c         mountfs - choose and mount file system partition%0a%3c         confignet       - configure the network%0a%3c         tzsetup - choose time zone%0a%3c %0a%3c Task to do [partdisk]: %0a%3c %0a%3c --------------------------------------%0a%3c The following disk devices were found.%0a%3c %0a%3c sd00 - OpenBSD VMM CD-ROM 001%0a%3c    empty                0 494       (494 cylinders, 1.92 GB) %0a%3c  * p1                 494 495       (1 cylinders, 4.00 MB) ESP%0a%3c %0a%3c sdF0 -%0a%3c %0a%3c Disk to partition (sd00, sdF0)[no default]: sdF0%0a%3c The disk you selected HAS NO master boot record on its first sector.%0a%3c (Perhaps it is a completely blank disk.)%0a%3c Shall we create a blank EFI partition table (GPT)%0a%3c or install traditional DOS partition table (MBR)?%0a%3c %0a%3c Install mbr or gpt (mbr, gpt)[no default]: mbr%0a%3c %0a%3c This is disk/fdisk; use it to create a Plan 9 partition.%0a%3c If there is enough room, a Plan 9 partition will be%0a%3c suggested; you can probably just type 'w' and then 'q'.%0a%3c                                             %0a%3c cylinder = 8225280 bytes                                                                %0a%3c '* p1                     0 2610        (2610 cylinders, 19.99 GB) PLAN9%0a%3c >>> w%0a%3c >>> q %0a%3c                                                                                         %0a%3c --------------------------------------%0a%3c                                                                                         %0a%3c Preparing menu...%0a%3c The following tasks are done:                                                           %0a%3c         configfs        - choose the type of file system to install%0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%3c %0a%3c The following unfinished tasks are ready to be done:                                    %0a%3c         prepdisk        - subdivide plan 9 disk partition               %0a%3c         mountfs - choose and mount file system partition                                %0a%3c         confignet       - configure the network%0a%3c         tzsetup - choose time zone%0a%3c %0a%3c Task to do [prepdisk]:%0a%3c %0a%3c --------------------------------------%0a%3c The following Plan 9 disk partitions were found.%0a%3c %0a%3c /dev/sdF0/plan9%0a%3c   empty                  0 41929587    (41929587 sectors, 19.99 GB)%0a%3c %0a%3c Plan 9 partition to subdivide (/dev/sdF0/plan9)[/dev/sdF0/plan9]: %0a%3c This is disk/prep; use it to subdivide the Plan 9 partition.%0a%3c If it is not yet subdivided, a sensible layout will be suggested;%0a%3c you can probably just type 'w' and then 'q'.%0a%3c %0a%3c no plan9 partition table found%0a%3c 9fat 204800%0a%3c nvram 1%0a%3c other 5960683%0a%3c fscache 5960683%0a%3c fsworm 29803420%0a%3c ' 9fat                   0 204800      (204800 sectors, 100.00 MB)%0a%3c ' nvram             204800 204801      (1 sectors, 512 B )%0a%3c ' other             204801 6165484     (5960683 sectors, 2.84 GB)%0a%3c ' fscache          6165484 12126167    (5960683 sectors, 2.84 GB)%0a%3c ' fsworm          12126167 41929587    (29803420 sectors, 14.21 GB)%0a%3c >>> %0a%3c >>> w%0a%3c >>> q%0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Preparing menu...%0a%3c The following tasks are done: %0a%3c         configfs        - choose the type of file system to install%0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%3c         prepdisk        - subdivide plan 9 disk partition%0a%3c %0a%3c The following unfinished tasks are ready to be done:%0a%3c         mountfs - choose and mount file system partition%0a%3c         confignet       - configure the network%0a%3c         tzsetup - choose time zone%0a%3c %0a%3c Task to do [mountfs]: %0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Please choose your cwfs64x partitions%0a%3c %0a%3c --rw-r----- S 0 glenda glenda 3051869696 Jul 18 17:22 /dev/sdF0/fscache%0a%3c %0a%3c Cwfs cache partition (/dev/sdF0/fscache)[/dev/sdF0/fscache]: %0a%3c --rw-r----- S 0 glenda glenda 15259351040 Jul 18 17:22 /dev/sdF0/fsworm%0a%3c %0a%3c Cwfs worm partition (/dev/sdF0/fsworm)[/dev/sdF0/fsworm]: %0a%3c --rw-r----- S 0 glenda glenda 3051869696 Jul 18 17:22 /dev/sdF0/other%0a%3c %0a%3c Cwfs other partition (/dev/sdF0/other)[/dev/sdF0/other]: %0a%3c Ream the filesystem? (yes, no)[yes]: %0a%3c Starting cwfs64x file server for /dev/sdF0/fscache%0a%3c Reaming filesystem                          %0a%3c config: config: config: auth disabled%0a%3c config: config: config: config: config: config: current fs is "main"%0a%3c cmd_users: cannot access /adm/users%0a%3c 63-bit cwfs as of Sun Jul 18 17:21:58 2021%0a%3c         last boot Thu Sep 23 04:55:59 2021%0a%3c Configuring cwfs64x file server for /dev/sdF0/fscache%0a%3c Mounting cwfs64x file server for /dev/sdF0/fscache%0a%3c %25 mount -c /srv/cwfs.newfs /n/newfs%0a%3c Mounting cwfs64x file server for /dev/sdF0/other%0a%3c %25 mount -c /srv/cwfs.newfs /n/other other%0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Preparing menu...%0a%3c The following tasks are done: %0a%3c         configfs        - choose the type of file system to install%0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%3c         prepdisk        - subdivide plan 9 disk partition%0a%3c         mountfs - choose and mount file system partition%0a%3c                       %0a%3c The following unfinished tasks are ready to be done:%0a%3c         configdist      - choose the source of the distribution archive%0a%3c         confignet       - configure the network                                     %0a%3c         tzsetup - choose time zone                                                      %0a%3c                                                                                         %0a%3c Task to do [configdist]: %0a%3c %0a%3c --------------------------------------%0a%3c Are you going to download the distribution%0a%3c from the internet or do you have it on local media?%0a%3c %0a%3c Distribution is from (local, net)[local]: %0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Preparing menu...%0a%3c The following tasks are done: %0a%3c         configfs        - choose the type of file system to install%0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%3c         prepdisk        - subdivide plan 9 disk partition%0a%3c         mountfs - choose and mount file system partition%0a%3c         configdist      - choose the source of the distribution archive%0a%3c %0a%3c The following unfinished tasks are ready to be done:%0a%3c         confignet       - configure the network%0a%3c         mountdist       - locate and mount the distribution%0a%3c         tzsetup - choose time zone%0a%3c %0a%3c Task to do [confignet]: %0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c We will configure the ethernet.%0a%3c %0a%3c %0a%3c Please choose a method for configuring your ethernet connection.%0a%3c %0a%3c         manual - specify IP address, network mask, gateway IP address%0a%3c         automatic - use DHCP and SLAAC to automatically configure%0a%3c %0a%3c Configuration method (manual, automatic)[automatic]: %0a%3c starting ethernet automatic config                                                      %0a%3c ipconfig: write(try fe80::f0b2:b3ff:feda:eb05 /64): interface does not support multicast%0a%3c ipconfig: can't start IPv6 on /net/ether0, address fe80::f0b2:b3ff:feda:eb05%0a%3c ipconfig: dialicmp6: cs: can't translate address                                    %0a%3c                                                                                         %0a%3c --------------------------------------                                                  %0a%3c                                                                                         %0a%3c Preparing menu...                                                                       %0a%3c The following tasks are done:                                                           %0a%3c         configfs        - choose the type of file system to install                     %0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)    %0a%3c         prepdisk        - subdivide plan 9 disk partition                               %0a%3c         mountfs - choose and mount file system partition                                %0a%3c         configdist      - choose the source of the distribution archive                 %0a%3c         confignet       - configure the network                                         %0a%3c                                             %0a%3c The following unfinished tasks are ready to be done:                                    %0a%3c         mountdist       - locate and mount the distribution                             %0a%3c         download        - download or continue to download the distribution archives    %0a%3c         tzsetup - choose time zone                                                      %0a%3c                                                                                         %0a%3c Task to do [mountdist]:                                                                 %0a%3c %0a%3c --------------------------------------                                                  %0a%3c Please wait... Scanning storage devices...                                              %0a%3c         /dev/sd00/data                                                                  %0a%3c         /dev/sdF0/9fat                                                                  %0a%3c         /dev/sdF0/data                                                                  %0a%3c         /dev/sdF0/fscache                                                               %0a%3c         /dev/sdF0/fsworm                                                                %0a%3c         /dev/sdF0/other                                                                 %0a%3c                                                                                         %0a%3c The following storage media were detected.                                              %0a%3c Choose the one containing the distribution.                                             %0a%3c                                                                                         %0a%3c         /dev/sd00/data (iso9660 cdrom)                                                  %0a%3c                                                                                         %0a%3c Distribution disk (/dev/sd00/data, /dev/sdF0/fscache, /)[/]:                            %0a%3c %25 mount /srv/boot /n/distmedia                                                          %0a%3c                                             %0a%3c Which directory contains the distribution?                                              %0a%3c Any of the following will suffice (in order of preference):                             %0a%3c         - the root directory of the cd image                                            %0a%3c         - the directory containing 9front.iso                                           %0a%3c         - the directory containing 9front.iso.bz2                                       %0a%3c                                                                                         %0a%3c Location of archives [/]:                   %0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Preparing menu...%0a%3c The following tasks are done: %0a%3c         configfs        - choose the type of file system to install%0a%3c         partdisk        - edit partition tables (e.g., to create a plan 9 partition)%0a%3c         prepdisk        - subdivide plan 9 disk partition%0a%3c         mountfs - choose and mount file system partition%0a%3c         configdist      - choose the source of the distribution archive%0a%3c         confignet       - configure the network%0a%3c         mountdist       - locate and mount the distribution%0a%3c %0a%3c The following unfinished tasks are ready to be done:%0a%3c         copydist        - copy the distribution into the file system%0a%3c         tzsetup - choose time zone%0a%3c %0a%3c Task to do [copydist]: %0a%3c %0a%3c @]%0a
+host:1632375496=38.87.162.8
+author:1632372743=jrmu
+diff:1632372743:1632372116:=40,103d39%0a%3c %0a%3c Then log out of the user with ^D, then as admin user in group wheel:%0a%3c %0a%3c [@%0a%3c $ doas vmctl reload%0a%3c $ doas vmctl start -c username-plan9%0a%3c Connected to /dev/ttypr (speed 115200)                                                  %0a%3c Boot failed: not a bootable disk                                                        %0a%3c                                                                                         %0a%3c *e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000a0000 2 %0a%3c 0x00000000000f0000 0x0000000000100000 1 0x0000000000100000 0x000000003fffc000 2 0x000000%0a%3c 003fffc000 0x0000000040000000 2 0x00000000fffc0000 0x0000000100000000                   %0a%3c cdboot=yes                                                                              %0a%3c mouseport=ask                                                                           %0a%3c monitor=ask                                                                             %0a%3c vgasize=ask                                                                             %0a%3c bootfile=/386/9pc                                                                       %0a%3c >console=0                                                                              %0a%3c ccoonnssoollee==00%0a%3c %0a%3c >>bboooott%0a%3c %0a%3c bboooott%0a%3c                                                                                         %0a%3c                                                                                         %0a%3c Plan 9%0a%3c 125 holes free%0a%3c 0x00021000 0x0009f000 516096%0a%3c 0x00100000 0x00110000 65536%0a%3c 0x005dd000 0x19cc8000 426684416%0a%3c 427266048 bytes free%0a%3c cpu0: 4600MHz GenuineIntel Xeon5000-series (AX 000206D7 CX 96982203 DX 079BA97F)%0a%3c ELCR: 02E8%0a%3c #l0: virtio: 1000Mbps port 0x2000 irq 5 ea f2b2b3daeb05%0a%3c i8042: kbd init failed%0a%3c 1000M memory: 413M kernel data, 587M user, 1212M swap%0a%3c nusb/usbd: no hubs%0a%3c %0a%3c /dev/sd00: OpenBSD VMM CD-ROM 001%0a%3c /dev/sd00/data   9660%0a%3c /dev/sdF0:%0a%3c /dev/sdF0/data%0a%3c bootargs is (tcp, tls, il, local!device)[local!/dev/sd00/data] %0a%3c user[glenda]: %0a%3c %0a%3c init: starting /bin/rc%0a%3c cirno Sep 23 06:50:25 starting dns resolver on /net%0a%3c vgasize is (text, 640x480x8, 1024x768x16, ...) [1024x768x16] text%0a%3c bind: #i: no frame buffer%0a%3c init: rc exit status: rc 215: webcookies 330: interrupt%0a%3c %0a%3c init: starting /bin/rc%0a%3c %25 inst/start%0a%3c Thu Sep 23 04:51:42 CET 2021 Installation process started%0a%3c %0a%3c --------------------------------------%0a%3c %0a%3c Preparing menu...%0a%3c The following unfinished tasks are ready to be done:%0a%3c         configfs        - choose the type of file system to install%0a%3c         confignet       - configure the network%0a%3c         tzsetup - choose time zone%0a%3c %0a%3c Task to do [configfs]: %0a
+host:1632372743=38.87.162.8
+author:1632372116=jrmu
+diff:1632372116:1632371417:=7c7%0a%3c         cdrom "/home/iso/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso"%0a---%0a>         cdrom "/home/iso/install69.iso"%0a24d23%0a%3c SHA256 (9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz) = af6dfae894dcb1e43f1e7e3d085b50f6d1dcf396e09a37d23c174ea94d8bf244%0a
+host:1632372116=38.87.162.8
+author:1632371417=jrmu
+diff:1632371417:1632371332:=3d2%0a%3c [@%0a14,15c13%0a%3c @]%0a%3c %0a---%0a> %0a18d15%0a%3c [@%0a25,26c22%0a%3c @]%0a%3c %0a---%0a> %0a29d24%0a%3c [@%0a32,33c27%0a%3c @]%0a%3c %0a---%0a> %0a36d29%0a%3c [@%0a38d30%0a%3c @]%0a
+host:1632371417=38.87.162.8
+author:1632371332=jrmu
+diff:1632371332:1632371332:=1,31d0%0a%3c In /etc/vm.conf:%0a%3c %0a%3c vm "username-plan9" {%0a%3c         owner username%0a%3c         memory 1024M%0a%3c         cdrom "/home/iso/install69.iso"%0a%3c         disk /home/username/username-plan9.qcow2 %0a%3c         interface {%0a%3c                 locked lladdr aa:bb:cc:dd:ee:ff%0a%3c                 switch "switch0"%0a%3c         }%0a%3c }%0a%3c %0a%3c Download the plan9 ISO:%0a%3c %0a%3c $ ftp http://9front.org/iso/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz%0a%3c $ doas mv 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz /home/iso/%0a%3c $ doas chown -R iso:iso /home/iso/%0a%3c $ cd /home/iso%0a%3c $ sha256 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz%0a%3c $ gunzip 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz%0a%3c %0a%3c Create a user account and make sure to set the folder as go-rx:%0a%3c %0a%3c $ doas chmod -R go-rx ~/%0a%3c $ doas su username%0a%3c %0a%3c In the home folder:%0a%3c %0a%3c $ vmctl create -s 20G ~/username-plan9.qcow2%0a%3c %0a
+host:1632371332=38.87.162.8
blob - /dev/null
blob + 39de6c08604959f7150e584a185f74bb28476038 (mode 644)
--- /dev/null
+++ wiki.d/9.Inter9
@@ -0,0 +1,67 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1692298472
+host=38.87.162.8
+name=9.Inter9
+rev=18
+targets=
+text=(:title A Free and Open Inter9:)%0a%0aThe Inter9 is an experimental attempt to create a free and open internet. It is modeled closely after the original Internet, with a few design modificationsdesigned to prevent centralized control. The Inter9 is an attempt to apply the federation model to united splintered internets.%0a%0aSome key principles from the old Internet are preserved. Anyone can write new applications and suggest new standards. Like the original Internet, standards should not be dictated by any centralized agency, corporation, or government. Instead, all users are invited to contribute to its creation. Its principles reflect the spirit of the old RFCs: rough consensus and running code. It requires open protocols and expects open implementations.%0a%0aBy design, the network is amenable to experimentation with new ideas and customization by its users. The goal is to encourage a vibrant ecosystem of applications developed by the network's users.%0a%0aAlthough there have been many proposed overlay networks, the ones in use today fail to preserve many of the principles that led to the success of the original Internet.%0a%0aThe Inter9's first goal is backwards compatibility. It is necessary to transparently support all existing networking applications that were originally written for the centralized internet, without any modifications.%0a%0aThe network layer protocol must be IP with at most a few modifications. Internet Protocol is packet-switching which is important for routing around censorship nodes. However, this IP must be encapsulated and transported via tunnels to avoid censorship, and the nodes must be spread out globally across the world in multiple countries to allow for routing around national firewalls.%0a%0aLike the original ARPAnet, the design goals of this internet are low-latency and high bandwidth.%0a%0aMany existing overlay networks are connection-oriented and require the formation of circuits. This is a serious weakness because it makes it difficult to route around firewalls and censored nodes. Especially in the presence of changing firewalls, the path taken to a destination may be obstructed sporadically. Dynamic routing of packets, namely packet-switching, is preferred. Moreover, many of these overlay networks intentionally choose convoluted routing methods in order to improve anonymity. Unfortunately this has the effect of increasing latency and decreasing bandwidth, making them unsuitable for a general purpose alternative internet.%0a%0aVPN tunnels will be used at first to avoid the costs of building expensive infrastructure. Because encapsulated data is simply IP, any form of tunnel can be used in theory (IPSec, Wireguard, OpenVPN). If tunnels are blocked, many other transport methods (wireless links, sneakernet) can be used.%0a%0aThe Inter9 anticipates a future where each national government attempts control of its network infrastructure by imposing national firewalls and blocking connections to foreign enemies. As a result, it assumes that there are multiple valid internets existing simultaneously and multiple DNS roots with contradictory but equally valid answers.%0a%0aLike the original Internet, the goal of the Inter9 is to connect together isolated networks. It aims to act as a bridge between disparate, incompatible networks and protocols. Gateways sit at the boundary of two incompatible networks to bridge them together.%0a%0aIts model for moderation is a distributed, federated model. It does not rely entirely on centralized authorities like the old Internet. Instead, moderation powers are distributed to each node, and the nodes voluntarily choose to federation or part. Any node has full capability of starting its own federation or joining and participating in an existing one. This is designed to help reduce the high crime rate experienced by anarchic overlay networks that are entirely censorship-resistant.%0a%0aThe explicit goal of the Inter9 is universal access to information, regardless of the user's platform or operating system. For this purpose, the 9p protocol is chosen to provide a consistent, uniform file interface.%0a
+time=1692749471
+title=A Free and Open Inter9
+author:1692749471=jrmu
+diff:1692749471:1692749462:=1c1%0a%3c (:title A Free and Open Inter9:)%0a---%0a> (:A Free and Open Inter9:)%0a
+host:1692749471=38.87.162.8
+author:1692749462=jrmu
+diff:1692749462:1692724912:=1,12c1,12%0a%3c (:A Free and Open Inter9:)%0a%3c %0a%3c The Inter9 is an experimental attempt to create a free and open internet. It is modeled closely after the original Internet, with a few design modificationsdesigned to prevent centralized control. The Inter9 is an attempt to apply the federation model to united splintered internets.%0a%3c %0a%3c Some key principles from the old Internet are preserved. Anyone can write new applications and suggest new standards. Like the original Internet, standards should not be dictated by any centralized agency, corporation, or government. Instead, all users are invited to contribute to its creation. Its principles reflect the spirit of the old RFCs: rough consensus and running code. It requires open protocols and expects open implementations.%0a%3c %0a%3c By design, the network is amenable to experimentation with new ideas and customization by its users. The goal is to encourage a vibrant ecosystem of applications developed by the network's users.%0a%3c %0a%3c Although there have been many proposed overlay networks, the ones in use today fail to preserve many of the principles that led to the success of the original Internet.%0a%3c %0a%3c The Inter9's first goal is backwards compatibility. It is necessary to transparently support all existing networking applications that were originally written for the centralized internet, without any modifications.%0a%3c %0a---%0a> Towards a Global Inter9%0a> %0a> A new internet where anyone can write new applications and suggest new standards%0a> Like the original internet, the alternative should not be controlled by a single standards body. Instead, all users are invited to contribute to its creation. The principles should be like the old RFCs: rough consensus and running code.%0a> %0a> The network should be customizable and amenable to experimentation with new ideas.%0a> Vibrant ecosystem of applications developed by a network's users%0a> %0a> Although there have been many proposed overlay networks, the ones reported so far fail to uphold many of the same principles of the original Internet.%0a> %0a> The first goal is backwards compatibility. It is necessary to transparently support all existing networking applications that were originally written for the centralized internet, without any modifications.%0a> %0a17,27c17,50%0a%3c Many existing overlay networks are connection-oriented and require the formation of circuits. This is a serious weakness because it makes it difficult to route around firewalls and censored nodes. Especially in the presence of changing firewalls, the path taken to a destination may be obstructed sporadically. Dynamic routing of packets, namely packet-switching, is preferred. Moreover, many of these overlay networks intentionally choose convoluted routing methods in order to improve anonymity. Unfortunately this has the effect of increasing latency and decreasing bandwidth, making them unsuitable for a general purpose alternative internet.%0a%3c %0a%3c VPN tunnels will be used at first to avoid the costs of building expensive infrastructure. Because encapsulated data is simply IP, any form of tunnel can be used in theory (IPSec, Wireguard, OpenVPN). If tunnels are blocked, many other transport methods (wireless links, sneakernet) can be used.%0a%3c %0a%3c The Inter9 anticipates a future where each national government attempts control of its network infrastructure by imposing national firewalls and blocking connections to foreign enemies. As a result, it assumes that there are multiple valid internets existing simultaneously and multiple DNS roots with contradictory but equally valid answers.%0a%3c %0a%3c Like the original Internet, the goal of the Inter9 is to connect together isolated networks. It aims to act as a bridge between disparate, incompatible networks and protocols. Gateways sit at the boundary of two incompatible networks to bridge them together.%0a%3c %0a%3c Its model for moderation is a distributed, federated model. It does not rely entirely on centralized authorities like the old Internet. Instead, moderation powers are distributed to each node, and the nodes voluntarily choose to federation or part. Any node has full capability of starting its own federation or joining and participating in an existing one. This is designed to help reduce the high crime rate experienced by anarchic overlay networks that are entirely censorship-resistant.%0a%3c %0a%3c The explicit goal of the Inter9 is universal access to information, regardless of the user's platform or operating system. For this purpose, the 9p protocol is chosen to provide a consistent, uniform file interface.%0a---%0a> Many existing overlay networks are connection-oriented and require the formation of circuits. This is a serious mistake because it makes it difficult to route around firewalls and censored nodes. Especially if there is censorship, the path taken to a destination may be obstructed sporadically. Dynamic routing of packets, namely packet-switching, is preferred. Moreover many of these overlay networks intentionally choose convoluted routing methods in order to improve anonymity. Unfortunately this has the effect of increasing latency and decreasing bandwidth, making them unsuitable for a general purpose alternative internet.%0a> %0a> VPN tunnels will be used at first to avoid the costs of building expensive infrastructure. Because encapsulated data is simply IP, any form of tunnel can be used in theory (IPSec, Wireguard, OpenVPN).%0a> %0a> %0a> In a world of parallel splinternets, the way to communicate with foreign networks is with NAT. Even IPv6 would need NAT%0a> %0a> If the world's major powers should go to war, national firewalls would be developed which will cause the Internet to splinter. Without ICANN coordinating IP address space, nations would likely end up with address collisions. Under such a scenario, even IPv6 would need NAT in order to communicate between splinternets.%0a> %0a> For example, if two nations claim the ownership of the IP address 2602:fccf:1::, the assumption that each IP address is globally unique will no longer hold true. There would be no way to relay messages between them without resorting to a gateway to translate the addresses, in other words, Network Address Translation.%0a> [@%0a> Revive the old internet principles:%0a> %0a> low latency, low censorship, open for people on every system, universal accessibility%0a> open protocols, open implementations%0a> users control the standards, not corporate/government%0a> rough consensus and running code%0a> %0a> connect existing networks%0a> dn42, tor, gnunet, i2p, ipfs, torrents, matrix, xmpp, irc, fediverse, email, netnews%0a> %0a> Inter9: federated, distributed moderation%0a> %0a> Not centralized Internet%0a> Not anarchic darkweb%0a> %0a> Each node/server can control its own moderation%0a> Anyone should be able to join and participate, or run their own%0a> %0a> Gateways should be built to bridge incompatible networks together%0a> %0a> 9p is the universal protocol%0a> Write new systems programs in lua for faster development%0a> @]%0a
+host:1692749462=38.87.162.8
+author:1692724912=jrmu
+diff:1692724912:1692724756:=0a1,24%0a> [@%0a> Revive the old internet principles:%0a> %0a> low latency, low censorship, open for people on every system, universal accessibility%0a> open protocols, open implementations%0a> users control the standards, not corporate/government%0a> rough consensus and running code%0a> %0a> connect existing networks%0a> dn42, tor, gnunet, i2p, ipfs, torrents, matrix, xmpp, irc, fediverse, email, netnews%0a> %0a> Inter9: federated, distributed moderation%0a> %0a> Not centralized Internet%0a> Not anarchic darkweb%0a> %0a> Each node/server can control its own moderation%0a> Anyone should be able to join and participate, or run their own%0a> %0a> Gateways should be built to bridge incompatible networks together%0a> %0a> 9p is the universal protocol%0a> Write new systems programs in lua for faster development%0a> %0a27,49d50%0a%3c [@%0a%3c Revive the old internet principles:%0a%3c %0a%3c low latency, low censorship, open for people on every system, universal accessibility%0a%3c open protocols, open implementations%0a%3c users control the standards, not corporate/government%0a%3c rough consensus and running code%0a%3c %0a%3c connect existing networks%0a%3c dn42, tor, gnunet, i2p, ipfs, torrents, matrix, xmpp, irc, fediverse, email, netnews%0a%3c %0a%3c Inter9: federated, distributed moderation%0a%3c %0a%3c Not centralized Internet%0a%3c Not anarchic darkweb%0a%3c %0a%3c Each node/server can control its own moderation%0a%3c Anyone should be able to join and participate, or run their own%0a%3c %0a%3c Gateways should be built to bridge incompatible networks together%0a%3c %0a%3c 9p is the universal protocol%0a%3c Write new systems programs in lua for faster development%0a
+host:1692724912=38.87.162.8
+author:1692724756=jrmu
+diff:1692724756:1692724637:=0a1,31%0a> (:The Internet is Dead, Long Live the Inter9:)%0a> %0a> The Internet is fundamentally broken:%0a> %0a> # DNS assumes a single central root, but China and Russia have begun to%0a> create their own alternative roots%0a> # The default certificate authorities trusted by our operating systems and browsers have proven themselves untrustworthy. They are controlled by malicious corporations or government agents. These authorities are likely to get blacklisted along political boundaries during a major war%0a> # The official Internet standards bodies are no longer controlled by the its users. They are now controlled by corporations with no accountability. Many malicious standards are now being drafted and rubberstamped by these bodies.%0a> # The W3C is now effectively controlled by Silicon Valley, so that the web is becoming infected with DRM. For example, Google's WEI proposal would make web browsers uniquely identifiable, and may be used to discriminate against free software users.%0a> # National firewalls are being implemented everywhere%0a> # The Internet was designed to be a distributed network, but its network topology today resembles a centralized network%0a> # Average users can no longer participate as peers or equals on this internet. The upfront capital costs are too high.%0a> # Reviving old protocols is insufficient to protect the FOSS community when the entire foundation of the Internet (IP addressing, certificate authorities, and domain name system) are becoming closed and non-free%0a> %0a> In order to achieve a free internet, it is important for users to host their own servers from machines they control (ie, from home). However, self-hosting from home faces many serious obstacles to self hosting:%0a> %0a> # IPv4 addresses are becoming increasingly expensive%0a> # IPv6 addressing increases the learning curve and complexity%0a> # Most residential ISP users lack support for dual stack ipv4/ipv6 networking%0a> # It is very easy to geolocate an IP address, so that self-hosting offers zero privacy%0a> # Hosting servers puts users at risk of DDoS attacks, and DDoS protection is too expensive for most. This has chilling effects on free speech%0a> # Most residential ISPs do not provide static IP addresses, or may employ NAT%0a> # Dynamic DNS is difficult to set up properly%0a> # A lack of static rDNS make it impossible to host applications like IRC or email%0a> # Residential IPs are often blacklisted%0a> # Hosting servers is contractually forbidden by most ISPs, and can be grounds for termination if caught%0a> # Domain names are at risk of being seized by government%0a> https://www.bleepstatic.com/images/news/sites/z/z-library/new-seizure-notice.jpg%0a> %0a> There are parallels between the closing of the formerly open Internet and the closing of the formerly open UNIX system:%0a> %0a2,50c33,49%0a%3c Revive the old internet principles:%0a%3c %0a%3c low latency, low censorship, open for people on every system, universal accessibility%0a%3c open protocols, open implementations%0a%3c users control the standards, not corporate/government%0a%3c rough consensus and running code%0a%3c %0a%3c connect existing networks%0a%3c dn42, tor, gnunet, i2p, ipfs, torrents, matrix, xmpp, irc, fediverse, email, netnews%0a%3c %0a%3c Inter9: federated, distributed moderation%0a%3c %0a%3c Not centralized Internet%0a%3c Not anarchic darkweb%0a%3c %0a%3c Each node/server can control its own moderation%0a%3c Anyone should be able to join and participate, or run their own%0a%3c %0a%3c Gateways should be built to bridge incompatible networks together%0a%3c %0a%3c 9p is the universal protocol%0a%3c Write new systems programs in lua for faster development%0a%3c %0a%3c Towards a Global Inter9%0a%3c %0a%3c A new internet where anyone can write new applications and suggest new standards%0a%3c Like the original internet, the alternative should not be controlled by a single standards body. Instead, all users are invited to contribute to its creation. The principles should be like the old RFCs: rough consensus and running code.%0a%3c %0a%3c The network should be customizable and amenable to experimentation with new ideas.%0a%3c Vibrant ecosystem of applications developed by a network's users%0a%3c %0a%3c Although there have been many proposed overlay networks, the ones reported so far fail to uphold many of the same principles of the original Internet.%0a%3c %0a%3c The first goal is backwards compatibility. It is necessary to transparently support all existing networking applications that were originally written for the centralized internet, without any modifications.%0a%3c %0a%3c The network layer protocol must be IP with at most a few modifications. Internet Protocol is packet-switching which is important for routing around censorship nodes. However, this IP must be encapsulated and transported via tunnels to avoid censorship, and the nodes must be spread out globally across the world in multiple countries to allow for routing around national firewalls.%0a%3c %0a%3c Like the original ARPAnet, the design goals of this internet are low-latency and high bandwidth.%0a%3c %0a%3c Many existing overlay networks are connection-oriented and require the formation of circuits. This is a serious mistake because it makes it difficult to route around firewalls and censored nodes. Especially if there is censorship, the path taken to a destination may be obstructed sporadically. Dynamic routing of packets, namely packet-switching, is preferred. Moreover many of these overlay networks intentionally choose convoluted routing methods in order to improve anonymity. Unfortunately this has the effect of increasing latency and decreasing bandwidth, making them unsuitable for a general purpose alternative internet.%0a%3c %0a%3c VPN tunnels will be used at first to avoid the costs of building expensive infrastructure. Because encapsulated data is simply IP, any form of tunnel can be used in theory (IPSec, Wireguard, OpenVPN).%0a%3c %0a%3c %0a%3c In a world of parallel splinternets, the way to communicate with foreign networks is with NAT. Even IPv6 would need NAT%0a%3c %0a%3c If the world's major powers should go to war, national firewalls would be developed which will cause the Internet to splinter. Without ICANN coordinating IP address space, nations would likely end up with address collisions. Under such a scenario, even IPv6 would need NAT in order to communicate between splinternets.%0a%3c %0a%3c For example, if two nations claim the ownership of the IP address 2602:fccf:1::, the assumption that each IP address is globally unique will no longer hold true. There would be no way to relay messages between them without resorting to a gateway to translate the addresses, in other words, Network Address Translation.%0a---%0a> History of UNIX%0a> ~1970 -- Unix is born%0a> ~1976 -- Sixth edition is released to the world, open source%0a> 1980s -- Unix licensing becomes more strict%0a> 1985 -- Source code taken away%0a> 1985 -- Minix, BSD try to create a free version of UNIX%0a> 1990 -- GNU almost finishes%0a> 1993 -- Linux succeeds, the world's first free operating system%0a> %0a> History of Internet%0a> 1969 -- BBN creates first ARPAnet%0a> ~1975 -- TCP/IP being designed%0a> ~1980 -- NSF takes over ARPAnet%0a> ~1990 -- Internet becomes open for commerce and to the public%0a> ~2000 -- Government begins to regulate Internet%0a> ~2024 -- Internet freedom is taken away%0a> ?FUTURE? -- Birth of inter9, the world's first free network%0a
+host:1692724756=38.87.162.8
+author:1692724637=jrmu
+diff:1692724637:1692723159:=1,31d0%0a%3c (:The Internet is Dead, Long Live the Inter9:)%0a%3c %0a%3c The Internet is fundamentally broken:%0a%3c %0a%3c # DNS assumes a single central root, but China and Russia have begun to%0a%3c create their own alternative roots%0a%3c # The default certificate authorities trusted by our operating systems and browsers have proven themselves untrustworthy. They are controlled by malicious corporations or government agents. These authorities are likely to get blacklisted along political boundaries during a major war%0a%3c # The official Internet standards bodies are no longer controlled by the its users. They are now controlled by corporations with no accountability. Many malicious standards are now being drafted and rubberstamped by these bodies.%0a%3c # The W3C is now effectively controlled by Silicon Valley, so that the web is becoming infected with DRM. For example, Google's WEI proposal would make web browsers uniquely identifiable, and may be used to discriminate against free software users.%0a%3c # National firewalls are being implemented everywhere%0a%3c # The Internet was designed to be a distributed network, but its network topology today resembles a centralized network%0a%3c # Average users can no longer participate as peers or equals on this internet. The upfront capital costs are too high.%0a%3c # Reviving old protocols is insufficient to protect the FOSS community when the entire foundation of the Internet (IP addressing, certificate authorities, and domain name system) are becoming closed and non-free%0a%3c %0a%3c In order to achieve a free internet, it is important for users to host their own servers from machines they control (ie, from home). However, self-hosting from home faces many serious obstacles to self hosting:%0a%3c %0a%3c # IPv4 addresses are becoming increasingly expensive%0a%3c # IPv6 addressing increases the learning curve and complexity%0a%3c # Most residential ISP users lack support for dual stack ipv4/ipv6 networking%0a%3c # It is very easy to geolocate an IP address, so that self-hosting offers zero privacy%0a%3c # Hosting servers puts users at risk of DDoS attacks, and DDoS protection is too expensive for most. This has chilling effects on free speech%0a%3c # Most residential ISPs do not provide static IP addresses, or may employ NAT%0a%3c # Dynamic DNS is difficult to set up properly%0a%3c # A lack of static rDNS make it impossible to host applications like IRC or email%0a%3c # Residential IPs are often blacklisted%0a%3c # Hosting servers is contractually forbidden by most ISPs, and can be grounds for termination if caught%0a%3c # Domain names are at risk of being seized by government%0a%3c https://www.bleepstatic.com/images/news/sites/z/z-library/new-seizure-notice.jpg%0a%3c %0a%3c There are parallels between the closing of the formerly open Internet and the closing of the formerly open UNIX system:%0a%3c %0a32a2,44%0a> The Old Internet is Dead%0a> %0a> It is fundamentally broken and cannot be fixed:%0a> %0a> 1) DNS requires a central root and China and Russia have already broken off%0a> 2) Certificate Authorities are untrustworthy, controlled by government%0a> agents and likely to get blacklisted based on political boundaries%0a> 4) Internet standards bodies are no longer controlled by academia/scientific%0a> committee but by corporations%0a> 3) W3C is no longer controlled by users but by Silicon Valley, so that DRM%0a> and unique identifiable user ID (see Google's WEI) is inevitable. The web%0a> may be inaccessible to free software users in a few years%0a> 5) National firewalls are being implemented everywhere%0a> 6) The Internet is no longer a distributed network but a centralized network%0a> 7) We cannot participate as peers/equals on this internet. Is there any%0a> possibility for us to do peering on this network?%0a> 8) All we do currently is revive old protocols, but the entire foundation of%0a> the Internet needs to be replaced, and this would give us more initiative%0a> %0a> %0a> 1) you can't lease a huge chunk of IPv4 addresses%0a> 2) you don't need 128 bits for IPv6 addressing%0a> 3) you can't be an equal peer on the Internet%0a> 4) it's very easy to geolocate an IP address%0a> 5) your IoT junk is leaking your whereabouts%0a> 6) the IPv6 RFCs are way too complex%0a> 7) it's probably even easier for random joes to geolocate you with ipv6%0a> rather than ipv4%0a> 8) DDoS protection is too expensive%0a> %0a> Problems with self-hosting%0a> %0a> 1) lack of static IP addresses and NAT%0a> 2) dynamic DNS is hard to set up properly%0a> 3) lack of rdns for email, IRC%0a> 4) residential IPs are blacklisted%0a> 5) lack of dual stack ipv4/ivp6%0a> 6) self-hosting banned by most ISPs%0a> 7) DNS is centralized and will get seized%0a> @]%0a> https://www.bleepstatic.com/images/news/sites/z/z-library/new-seizure-notice.jpg%0a> %0a> [@%0a40,41c52,53%0a%3c 1993 -- Linux succeeds, the world's first free operating system%0a%3c %0a---%0a> 1993 -- Linux succeeds, world has first free operating system%0a> %0a48,49c60,113%0a%3c ~2024 -- Internet freedom is taken away%0a%3c ?FUTURE? -- Birth of inter9, the world's first free network%0a---%0a> ~2010 -- Internet losing freedom%0a> ???FUTURE??? -- Birth of inter9, world's first free network%0a> @]%0a> %0a> [@%0a> Revive the old internet principles:%0a> %0a> low latency, low censorship, open for people on every system, universal accessibility%0a> open protocols, open implementations%0a> users control the standards, not corporate/government%0a> rough consensus and running code%0a> %0a> connect existing networks%0a> dn42, tor, gnunet, i2p, ipfs, torrents, matrix, xmpp, irc, fediverse, email, netnews%0a> %0a> Inter9: federated, distributed moderation%0a> %0a> Not centralized Internet%0a> Not anarchic darkweb%0a> %0a> Each node/server can control its own moderation%0a> Anyone should be able to join and participate, or run their own%0a> %0a> Gateways should be built to bridge incompatible networks together%0a> %0a> 9p is the universal protocol%0a> Write new systems programs in lua for faster development%0a> %0a> Towards a Global Inter9%0a> %0a> A new internet where anyone can write new applications and suggest new standards%0a> Like the original internet, the alternative should not be controlled by a single standards body. Instead, all users are invited to contribute to its creation. The principles should be like the old RFCs: rough consensus and running code.%0a> %0a> The network should be customizable and amenable to experimentation with new ideas.%0a> Vibrant ecosystem of applications developed by a network's users%0a> %0a> Although there have been many proposed overlay networks, the ones reported so far fail to uphold many of the same principles of the original Internet.%0a> %0a> The first goal is backwards compatibility. It is necessary to transparently support all existing networking applications that were originally written for the centralized internet, without any modifications.%0a> %0a> The network layer protocol must be IP with at most a few modifications. Internet Protocol is packet-switching which is important for routing around censorship nodes. However, this IP must be encapsulated and transported via tunnels to avoid censorship, and the nodes must be spread out globally across the world in multiple countries to allow for routing around national firewalls.%0a> %0a> Like the original ARPAnet, the design goals of this internet are low-latency and high bandwidth.%0a> %0a> Many existing overlay networks are connection-oriented and require the formation of circuits. This is a serious mistake because it makes it difficult to route around firewalls and censored nodes. Especially if there is censorship, the path taken to a destination may be obstructed sporadically. Dynamic routing of packets, namely packet-switching, is preferred. Moreover many of these overlay networks intentionally choose convoluted routing methods in order to improve anonymity. Unfortunately this has the effect of increasing latency and decreasing bandwidth, making them unsuitable for a general purpose alternative internet.%0a> %0a> VPN tunnels will be used at first to avoid the costs of building expensive infrastructure. Because encapsulated data is simply IP, any form of tunnel can be used in theory (IPSec, Wireguard, OpenVPN).%0a> %0a> %0a> In a world of parallel splinternets, the way to communicate with foreign networks is with NAT. Even IPv6 would need NAT%0a> %0a> If the world's major powers should go to war, national firewalls would be developed which will cause the Internet to splinter. Without ICANN coordinating IP address space, nations would likely end up with address collisions. Under such a scenario, even IPv6 would need NAT in order to communicate between splinternets.%0a> %0a> For example, if two nations claim the ownership of the IP address 2602:fccf:1::, the assumption that each IP address is globally unique will no longer hold true. There would be no way to relay messages between them without resorting to a gateway to translate the addresses, in other words, Network Address Translation.%0a
+host:1692724637=38.87.162.8
+author:1692723159=jrmu
+diff:1692723159:1692678769:=87,113d86%0a%3c %0a%3c Towards a Global Inter9%0a%3c %0a%3c A new internet where anyone can write new applications and suggest new standards%0a%3c Like the original internet, the alternative should not be controlled by a single standards body. Instead, all users are invited to contribute to its creation. The principles should be like the old RFCs: rough consensus and running code.%0a%3c %0a%3c The network should be customizable and amenable to experimentation with new ideas.%0a%3c Vibrant ecosystem of applications developed by a network's users%0a%3c %0a%3c Although there have been many proposed overlay networks, the ones reported so far fail to uphold many of the same principles of the original Internet.%0a%3c %0a%3c The first goal is backwards compatibility. It is necessary to transparently support all existing networking applications that were originally written for the centralized internet, without any modifications.%0a%3c %0a%3c The network layer protocol must be IP with at most a few modifications. Internet Protocol is packet-switching which is important for routing around censorship nodes. However, this IP must be encapsulated and transported via tunnels to avoid censorship, and the nodes must be spread out globally across the world in multiple countries to allow for routing around national firewalls.%0a%3c %0a%3c Like the original ARPAnet, the design goals of this internet are low-latency and high bandwidth.%0a%3c %0a%3c Many existing overlay networks are connection-oriented and require the formation of circuits. This is a serious mistake because it makes it difficult to route around firewalls and censored nodes. Especially if there is censorship, the path taken to a destination may be obstructed sporadically. Dynamic routing of packets, namely packet-switching, is preferred. Moreover many of these overlay networks intentionally choose convoluted routing methods in order to improve anonymity. Unfortunately this has the effect of increasing latency and decreasing bandwidth, making them unsuitable for a general purpose alternative internet.%0a%3c %0a%3c VPN tunnels will be used at first to avoid the costs of building expensive infrastructure. Because encapsulated data is simply IP, any form of tunnel can be used in theory (IPSec, Wireguard, OpenVPN).%0a%3c %0a%3c %0a%3c In a world of parallel splinternets, the way to communicate with foreign networks is with NAT. Even IPv6 would need NAT%0a%3c %0a%3c If the world's major powers should go to war, national firewalls would be developed which will cause the Internet to splinter. Without ICANN coordinating IP address space, nations would likely end up with address collisions. Under such a scenario, even IPv6 would need NAT in order to communicate between splinternets.%0a%3c %0a%3c For example, if two nations claim the ownership of the IP address 2602:fccf:1::, the assumption that each IP address is globally unique will no longer hold true. There would be no way to relay messages between them without resorting to a gateway to translate the addresses, in other words, Network Address Translation.%0a
+host:1692723159=38.87.162.8
+author:1692678769=jrmu
+diff:1692678769:1692300361:=25c25%0a%3c 4) it's very easy to geolocate an IP address%0a---%0a> 4) it's very easy for feds to geolocate you%0a
+host:1692678769=38.87.162.8
+author:1692300361=jrmu
+diff:1692300361:1692299146:=81d80%0a%3c Anyone should be able to join and participate, or run their own%0a
+host:1692300361=38.87.162.8
+author:1692299146=jrmu
+diff:1692299146:1692299029:=73c73%0a%3c dn42, tor, gnunet, i2p, ipfs, torrents, matrix, xmpp, irc, fediverse, email, netnews%0a---%0a> dn42, tor, gnunet, i2p, ipfs, matrix, xmpp, irc, fediverse, email%0a
+host:1692299146=38.87.162.8
+author:1692299029=jrmu
+diff:1692299029:1692298999:=70,71c70%0a%3c rough consensus and running code%0a%3c %0a---%0a> %0a84c83,84%0a%3c 9p is the universal protocol%0a---%0a> Plan 9 will be the operating system, 9p the universal protocol%0a> %0a
+host:1692299029=38.87.162.8
+author:1692298999=jrmu
+diff:1692298999:1692298949:=84,85d83%0a%3c %0a%3c Write new systems programs in lua for faster development%0a
+host:1692298999=38.87.162.8
+author:1692298949=jrmu
+diff:1692298949:1692298841:=31,40d30%0a%3c %0a%3c Problems with self-hosting%0a%3c %0a%3c 1) lack of static IP addresses and NAT%0a%3c 2) dynamic DNS is hard to set up properly%0a%3c 3) lack of rdns for email, IRC%0a%3c 4) residential IPs are blacklisted%0a%3c 5) lack of dual stack ipv4/ivp6%0a%3c 6) self-hosting banned by most ISPs%0a%3c 7) DNS is centralized and will get seized%0a42d31%0a%3c https://www.bleepstatic.com/images/news/sites/z/z-library/new-seizure-notice.jpg%0a
+host:1692298949=38.87.162.8
+author:1692298841=jrmu
+diff:1692298841:1692298765:=57,59d56%0a%3c open protocols, open implementations%0a%3c users control the standards, not corporate/government%0a%3c %0a
+host:1692298841=38.87.162.8
+author:1692298765=jrmu
+diff:1692298765:1692298701:=66,69d65%0a%3c %0a%3c Gateways should be built to bridge incompatible networks together%0a%3c %0a%3c Plan 9 will be the operating system, 9p the universal protocol%0a
+host:1692298765=38.87.162.8
+author:1692298701=jrmu
+diff:1692298701:1692298587:=51,65d50%0a%3c @]%0a%3c %0a%3c [@%0a%3c Revive the old internet principles:%0a%3c %0a%3c low latency, low censorship, open for people on every system, universal accessibility%0a%3c connect existing networks%0a%3c dn42, tor, gnunet, i2p, ipfs, matrix, xmpp, irc, fediverse, email%0a%3c %0a%3c Inter9: federated, distributed moderation%0a%3c %0a%3c Not centralized Internet%0a%3c Not anarchic darkweb%0a%3c %0a%3c Each node/server can control its own moderation%0a
+host:1692298701=38.87.162.8
+author:1692298587=jrmu
+diff:1692298587:1692298505:=1,32d0%0a%3c [@%0a%3c The Old Internet is Dead%0a%3c %0a%3c It is fundamentally broken and cannot be fixed:%0a%3c %0a%3c 1) DNS requires a central root and China and Russia have already broken off%0a%3c 2) Certificate Authorities are untrustworthy, controlled by government%0a%3c agents and likely to get blacklisted based on political boundaries%0a%3c 4) Internet standards bodies are no longer controlled by academia/scientific%0a%3c committee but by corporations%0a%3c 3) W3C is no longer controlled by users but by Silicon Valley, so that DRM%0a%3c and unique identifiable user ID (see Google's WEI) is inevitable. The web%0a%3c may be inaccessible to free software users in a few years%0a%3c 5) National firewalls are being implemented everywhere%0a%3c 6) The Internet is no longer a distributed network but a centralized network%0a%3c 7) We cannot participate as peers/equals on this internet. Is there any%0a%3c possibility for us to do peering on this network?%0a%3c 8) All we do currently is revive old protocols, but the entire foundation of%0a%3c the Internet needs to be replaced, and this would give us more initiative%0a%3c %0a%3c %0a%3c 1) you can't lease a huge chunk of IPv4 addresses%0a%3c 2) you don't need 128 bits for IPv6 addressing%0a%3c 3) you can't be an equal peer on the Internet%0a%3c 4) it's very easy for feds to geolocate you%0a%3c 5) your IoT junk is leaking your whereabouts%0a%3c 6) the IPv6 RFCs are way too complex%0a%3c 7) it's probably even easier for random joes to geolocate you with ipv6%0a%3c rather than ipv4%0a%3c 8) DDoS protection is too expensive%0a%3c @]%0a%3c %0a
+host:1692298587=38.87.162.8
+author:1692298505=jrmu
+diff:1692298505:1692298472:=1d0%0a%3c [@%0a19d17%0a%3c @]%0a
+host:1692298505=38.87.162.8
+author:1692298472=jrmu
+diff:1692298472:1692298472:=1,17d0%0a%3c History of UNIX%0a%3c ~1970 -- Unix is born%0a%3c ~1976 -- Sixth edition is released to the world, open source%0a%3c 1980s -- Unix licensing becomes more strict%0a%3c 1985 -- Source code taken away%0a%3c 1985 -- Minix, BSD try to create a free version of UNIX%0a%3c 1990 -- GNU almost finishes%0a%3c 1993 -- Linux succeeds, world has first free operating system%0a%3c %0a%3c History of Internet%0a%3c 1969 -- BBN creates first ARPAnet%0a%3c ~1975 -- TCP/IP being designed%0a%3c ~1980 -- NSF takes over ARPAnet%0a%3c ~1990 -- Internet becomes open for commerce and to the public%0a%3c ~2000 -- Government begins to regulate Internet%0a%3c ~2010 -- Internet losing freedom%0a%3c ???FUTURE??? -- Birth of inter9, world's first free network%0a
+host:1692298472=38.87.162.8
blob - /dev/null
blob + 903d05d997433cba3e69ce0fc9cb04fbe6cb9d01 (mode 644)
--- /dev/null
+++ wiki.d/9.Irc
@@ -0,0 +1,29 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
+author=xfnw
+charset=UTF-8
+csum=spelling
+ctime=1683748159
+host=2600:4040:2c67:1000::25
+name=9.Irc
+rev=5
+targets=
+text=http://9front.org/extra/rc/ has wcirc and%0a%0ahttp://9front.org/extra/src/ has irc7 and ircs%0a%0athere are probably newer versions of these in sources, or shithub, or other places%0a%0ahttp://code.9front.org/hg/irc7/%0a%0aA few TUI IRC clients like irssi and weechat can easily handle 100s of networks with 1000s of channels.%0a%0aImagine for a moment 9 had an irc filesystem, similar to the existing ircfs%0aprojects [[https://github.com/Plan9-Archive/ircfs-limbo|for inferno]] and%0a[[https://github.com/machinaut/ircfs|for linux]]. A general purpose tool%0acan be run inside acme to keep track of any changes within a tree hierarchy.%0aAll recently written files can be highlighted inside acme, and the most%0arecently updated file can be jumped to, and a tail of the last few lines%0adisplayed.  This would be a general purpose replacement not just for irssi%0aand weechat, but would be useful for monitoring any type of communications%0a(email, xmpp, matrix) as well as system logs.%0a
+time=1692713724
+author:1692713724=xfnw
+csum:1692713724=spelling
+diff:1692713724:1692713665:minor=5c5%0a%3c there are probably newer versions of these in sources, or shithub, or other places%0a---%0a> there are probable newer versions of these in sources, or shithub, or other places%0a
+host:1692713724=2600:4040:2c67:1000::25
+author:1692713665=xfnw
+csum:1692713665=mention existing ircfs projects
+diff:1692713665:1692662542:=11,13c11%0a%3c Imagine for a moment 9 had an irc filesystem, similar to the existing ircfs%0a%3c projects [[https://github.com/Plan9-Archive/ircfs-limbo|for inferno]] and%0a%3c [[https://github.com/machinaut/ircfs|for linux]]. A general purpose tool%0a---%0a> Imagine for a moment 9 had an irc filesystem, ircfs. A general purpose tool%0a
+host:1692713665=2600:4040:2c67:1000::25
+author:1692662542=jrmu
+diff:1692662542:1683748179:=8,17d7%0a%3c %0a%3c A few TUI IRC clients like irssi and weechat can easily handle 100s of networks with 1000s of channels.%0a%3c %0a%3c Imagine for a moment 9 had an irc filesystem, ircfs. A general purpose tool%0a%3c can be run inside acme to keep track of any changes within a tree hierarchy.%0a%3c All recently written files can be highlighted inside acme, and the most%0a%3c recently updated file can be jumped to, and a tail of the last few lines%0a%3c displayed.  This would be a general purpose replacement not just for irssi%0a%3c and weechat, but would be useful for monitoring any type of communications%0a%3c (email, xmpp, matrix) as well as system logs.%0a
+host:1692662542=38.87.162.8
+author:1683748179=jrmu
+diff:1683748179:1683748159:=2d1%0a%3c %0a4d2%0a%3c %0a6d3%0a%3c %0a
+host:1683748179=38.87.162.8
+author:1683748159=jrmu
+diff:1683748159:1683748159:=1,4d0%0a%3c http://9front.org/extra/rc/ has wcirc and%0a%3c http://9front.org/extra/src/ has irc7 and ircs%0a%3c there are probable newer versions of these in sources, or shithub, or other places%0a%3c http://code.9front.org/hg/irc7/%0a
+host:1683748159=38.87.162.8
blob - /dev/null
blob + a0298235cc90d5435f61ca97a233b2799df56db2 (mode 644)
--- /dev/null
+++ wiki.d/9.JSDrawterm
@@ -0,0 +1,18 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:88.0) Gecko/20100101 Firefox/88.0
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1633025015
+host=125.231.16.216
+name=9.JSDrawterm
+rev=2
+targets=
+text=[[https://github.com/aiju/jsdrawterm|JSDrawterm]]: Drawterm for your web browser.%0a%0a%0aAttach:JSDrawterm.png%0a
+time=1633025189
+author:1633025189=jrmu
+diff:1633025189:1633025015:=1,4c1%0a%3c [[https://github.com/aiju/jsdrawterm|JSDrawterm]]: Drawterm for your web browser.%0a%3c %0a%3c %0a%3c Attach:JSDrawterm.png%0a---%0a> Attach:JSDrawterm.png%0a\ No newline at end of file%0a
+host:1633025189=125.231.16.216
+author:1633025015=jrmu
+diff:1633025015:1633025015:=1d0%0a%3c Attach:JSDrawterm.png%0a\ No newline at end of file%0a
+host:1633025015=125.231.16.216
blob - /dev/null
blob + 8333758ed1a74c784bfa1c0c78d131cbf5bfd546 (mode 644)
--- /dev/null
+++ wiki.d/9.Keybindings
@@ -0,0 +1,26 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
+author=mkf
+charset=UTF-8
+csum=heheheheheh
+ctime=1635056013
+host=2.178.211.174
+name=9.Keybindings
+rev=4
+targets=
+text=||border=1 width=80%25%0a||!What||!Unix||!9||%0a|| Kills running program || ctrl-c || delete ||%0a|| Moves to end of line || ctrl-e/end || ctrl-e ||%0a|| Moves to begining of line || ctrl-a/home || ctrl-a ||%0a|| Returning to first line of window || N/A || home ||%0a|| Moving to last line of window || N/A || end ||%0a|| Hold mode || N/A || esc ||%0a|| List files in current directory || tab || ctrl-f/insert ||%0a|| Deletes one character || ctrl-h/backspace || ctrl-h/backspace ||%0a|| Clears whole line || ctrl-u || ctrl-u ||
+time=1635056121
+author:1635056121=mkf
+csum:1635056121=heheheheheh
+diff:1635056121:1635056075:=9,10c9,10%0a%3c || List files in current directory || tab || ctrl-f/insert ||%0a%3c || Deletes one character || ctrl-h/backspace || ctrl-h/backspace ||%0a---%0a> || Lists files || tab || ctrl-f/insert ||%0a> || Deletes one character || ctrl-h/Backspace || ctrl-h/backspace ||%0a
+host:1635056121=2.178.211.174
+author:1635056075=mkf
+csum:1635056075=heheheh
+diff:1635056075:1635056057:=6c6%0a%3c || Returning to first line of window || N/A || home ||%0a---%0a> || Returning to first line of window || N/A|| home ||%0a
+host:1635056075=2.178.211.174
+author:1635056057=mkf
+diff:1635056057:1635056013:=2c2%0a%3c ||!What||!Unix||!9||%0a---%0a> ||!What||!Unix||!9 ||%0a6,8c6,8%0a%3c || Returning to first line of window || N/A|| home ||%0a%3c || Moving to last line of window || N/A || end ||%0a%3c || Hold mode || N/A || esc ||%0a---%0a> || Returning to first line of window || || home ||%0a> || Moving to last line of window || || end ||%0a> || Hold mode || || esc ||%0a
+host:1635056057=2.178.211.174
+author:1635056013=mkf
+diff:1635056013:1635056013:=1,11d0%0a%3c ||border=1 width=80%25%0a%3c ||!What||!Unix||!9 ||%0a%3c || Kills running program || ctrl-c || delete ||%0a%3c || Moves to end of line || ctrl-e/end || ctrl-e ||%0a%3c || Moves to begining of line || ctrl-a/home || ctrl-a ||%0a%3c || Returning to first line of window || || home ||%0a%3c || Moving to last line of window || || end ||%0a%3c || Hold mode || || esc ||%0a%3c || Lists files || tab || ctrl-f/insert ||%0a%3c || Deletes one character || ctrl-h/Backspace || ctrl-h/backspace ||%0a%3c || Clears whole line || ctrl-u || ctrl-u ||%0a\ No newline at end of file%0a
+host:1635056013=2.178.211.174
blob - /dev/null
blob + e39e0cc3db7b338f3918bba655752e2d649acc5e (mode 644)
--- /dev/null
+++ wiki.d/9.Links
@@ -0,0 +1,21 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
+author=mkf
+charset=UTF-8
+csum=
+ctime=1634011416
+host=2.178.211.174
+name=9.Links
+rev=3
+targets=
+text=# https://pspodcasting.net/dan/blog/2019/plan9_desktop.html%0a# http://www.covingtoninnovations.com/michael/newbie-guide.pdf%0a# http://felloff.net%0a# https://t3x.org/s9book/index.html%0a# http://plan9.stanleylieber.com%0a# http://debu.gs/entries/inferno-part-0-namespaces%0a# https://research.swtch.com%0a# https://wiki.9front.org/unix2plan9%0a# http://fqa.9front.org/%0a# https://t3x.org/s9fes/index.html%0a# https://r-36.net/9front%0a# https://orib.dev/simplicty%0a# http://acme.cat-v.org/readme%0a# https://shithub.us%0a# https://9p.io/%0a# https://pspodcasting.net/dan/blog/2020/complexity.pdf%0a# https://github.com/henesy/awesome-plan9%0a# https://franjballest.wordpress.com/books-papers/%0a# http://helpful.cat-v.org%0a# http://mirtchovski.postnix.pw/p9/
+time=1635056976
+author:1635056976=mkf
+diff:1635056976:1634875379:=20c20%0a%3c # http://mirtchovski.postnix.pw/p9/%0a\ No newline at end of file%0a---%0a> # https://harmful.neocities.org%0a
+host:1635056976=2.178.211.174
+author:1634875379=jrmu
+diff:1634875379:1634011416:=1,20c1,37%0a%3c # https://pspodcasting.net/dan/blog/2019/plan9_desktop.html%0a%3c # http://www.covingtoninnovations.com/michael/newbie-guide.pdf%0a%3c # http://felloff.net%0a%3c # https://t3x.org/s9book/index.html%0a%3c # http://plan9.stanleylieber.com%0a%3c # http://debu.gs/entries/inferno-part-0-namespaces%0a%3c # https://research.swtch.com%0a%3c # https://wiki.9front.org/unix2plan9%0a%3c # http://fqa.9front.org/%0a%3c # https://t3x.org/s9fes/index.html%0a%3c # https://r-36.net/9front%0a%3c # https://orib.dev/simplicty%0a%3c # http://acme.cat-v.org/readme%0a%3c # https://shithub.us%0a%3c # https://9p.io/%0a%3c # https://pspodcasting.net/dan/blog/2020/complexity.pdf%0a%3c # https://github.com/henesy/awesome-plan9%0a%3c # https://franjballest.wordpress.com/books-papers/%0a%3c # http://helpful.cat-v.org%0a%3c # https://harmful.neocities.org%0a---%0a> http://felloff.net%0a> %0a> https://t3x.org/s9book/index.html%0a> %0a> http://plan9.stanleylieber.com%0a> %0a> http://debu.gs/entries/inferno-part-0-namespaces%0a> https://research.swtch.com%0a> https://wiki.9front.org/unix2plan9%0a> http://fqa.9front.org/%0a> https://t3x.org/s9fes/index.html%0a> %0a> https://r-36.net/9front%0a> %0a> %0a> https://r-36.net/9front%0a> %0a> %0a> https://orib.dev/simplicty%0a> %0a> https://pspodcasting.net/dan/blog/2020/complexity.pdf%0a> %0a> %0a> http://acme.cat-v.org/readme%0a> %0a> https://shithub.us%0a> %0a> https://9p.io/%0a> %0a> https://pspodcasting.net/dan/blog/2019/plan9_desktop.html%0a> https://pspodcasting.net/dan/blog/2020/complexity.pdf%0a> %0a> https://github.com/henesy/awesome-plan9%0a> https://franjballest.wordpress.com/books-papers/%0a> %0a> http://helpful.cat-v.org%0a> https://harmful.neocities.org%0a
+host:1634875379=38.87.162.8
+author:1634011416=jrmu
+diff:1634011416:1634011416:=1,37d0%0a%3c http://felloff.net%0a%3c %0a%3c https://t3x.org/s9book/index.html%0a%3c %0a%3c http://plan9.stanleylieber.com%0a%3c %0a%3c http://debu.gs/entries/inferno-part-0-namespaces%0a%3c https://research.swtch.com%0a%3c https://wiki.9front.org/unix2plan9%0a%3c http://fqa.9front.org/%0a%3c https://t3x.org/s9fes/index.html%0a%3c %0a%3c https://r-36.net/9front%0a%3c %0a%3c %0a%3c https://r-36.net/9front%0a%3c %0a%3c %0a%3c https://orib.dev/simplicty%0a%3c %0a%3c https://pspodcasting.net/dan/blog/2020/complexity.pdf%0a%3c %0a%3c %0a%3c http://acme.cat-v.org/readme%0a%3c %0a%3c https://shithub.us%0a%3c %0a%3c https://9p.io/%0a%3c %0a%3c https://pspodcasting.net/dan/blog/2019/plan9_desktop.html%0a%3c https://pspodcasting.net/dan/blog/2020/complexity.pdf%0a%3c %0a%3c https://github.com/henesy/awesome-plan9%0a%3c https://franjballest.wordpress.com/books-papers/%0a%3c %0a%3c http://helpful.cat-v.org%0a%3c https://harmful.neocities.org%0a
+host:1634011416=125.231.64.245
blob - /dev/null
blob + 260d6c0962bd0406fec15d074e962dba3ae49753 (mode 644)
--- /dev/null
+++ wiki.d/9.Ndb,del-1642358792
@@ -0,0 +1,15 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows NT 6.1; rv:68.0) Gecko/20100101 Firefox/68.0 SeaMonkey/2.53.10.2
+author=mkf
+charset=UTF-8
+csum=
+ctime=1642357585
+host=188.210.105.217
+name=9.Ndb
+rev=1
+targets=
+text=TLDR: no dot on end of FQDN.
+time=1642357585
+author:1642357585=mkf
+diff:1642357585:1642357585:=1d0%0a%3c TLDR: no dot on end of FQDN.%0a\ No newline at end of file%0a
+host:1642357585=188.210.105.217
blob - /dev/null
blob + ef5139957daa3d4a0dff6f242482e4448ada9c50 (mode 644)
--- /dev/null
+++ wiki.d/9.Netcat
@@ -0,0 +1,18 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1635168561
+host=38.87.162.8
+name=9.Netcat
+rev=2
+targets=
+text=To create a netcat connection to use paste.ircnow.org:%0a%0a[@%0atelnet -n tcp!paste.ircnow.org!7777 %3c /path/to/file%0a@]%0a%0aTo upload a file to tcp.st:%0a%0a[@%0atelnet -n tcp!tcp.st!7777 %3c /path/to/file%0a@]%0a
+time=1635176443
+author:1635176443=jrmu
+diff:1635176443:1635168561:=3d2%0a%3c [@%0a5,11d3%0a%3c @]%0a%3c %0a%3c To upload a file to tcp.st:%0a%3c %0a%3c [@%0a%3c telnet -n tcp!tcp.st!7777 %3c /path/to/file%0a%3c @]%0a
+host:1635176443=38.87.162.8
+author:1635168561=jrmu
+diff:1635168561:1635168561:=1,3d0%0a%3c To create a netcat connection to use paste.ircnow.org:%0a%3c %0a%3c telnet -n tcp!paste.ircnow.org!7777 %3c /path/to/file%0a
+host:1635168561=38.87.162.8
blob - /dev/null
blob + c19dde17321d2526e52ebfa05e5d4bac13cc6258 (mode 644)
--- /dev/null
+++ wiki.d/9.Netsurf
@@ -0,0 +1,19 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Linux; Android 8.1.0; vivo 1820 Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/109.0.5414.118 Mobile Safari/537.36
+author=Yonle
+charset=UTF-8
+csum=
+ctime=1678072470
+host=114.125.26.255
+name=9.Netsurf
+rev=2
+targets=
+text=(:title NetSurf in 9front:)%0a%0ahttps://fedi.lecturify.net/media/d414500c2b89252b3c16708caef7c49a7e8d9369f228653278e32768fad4c8e5.png%0a%0a!! Installation%0a[@%0agit/clone https://github.com/netsurf-plan9/nsport%0acd nsport%0a%0afetch clone http%0amk%0a@]%0a%0aTo install netsurf to system globally, You could do @@mk install@@. \%0a%0aAlternatively, You could launch it without @@mk install@@ by running:%0a[@%0acd netsurf%0aprepns%0a*.netsurf%0a@]%0a
+time=1678460901
+title=NetSurf in 9front
+author:1678460901=Yonle
+diff:1678460901:1678072470:=1c1%0a%3c (:title NetSurf in 9front:)%0a---%0a> (:title NetSurf on 9front:)%0a
+host:1678460901=114.125.26.255
+author:1678072470=Yonle
+diff:1678072470:1678072470:=1,21d0%0a%3c (:title NetSurf on 9front:)%0a%3c %0a%3c https://fedi.lecturify.net/media/d414500c2b89252b3c16708caef7c49a7e8d9369f228653278e32768fad4c8e5.png%0a%3c %0a%3c !! Installation%0a%3c [@%0a%3c git/clone https://github.com/netsurf-plan9/nsport%0a%3c cd nsport%0a%3c %0a%3c fetch clone http%0a%3c mk%0a%3c @]%0a%3c %0a%3c To install netsurf to system globally, You could do @@mk install@@. \%0a%3c %0a%3c Alternatively, You could launch it without @@mk install@@ by running:%0a%3c [@%0a%3c cd netsurf%0a%3c prepns%0a%3c *.netsurf%0a%3c @]%0a
+host:1678072470=114.125.42.86
blob - /dev/null
blob + 101ad17e4d251c9017083612ad65652c273d430b (mode 644)
--- /dev/null
+++ wiki.d/9.PKI
@@ -0,0 +1,34 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1692409889
+host=38.87.162.8
+name=9.PKI
+rev=7
+targets=9.FNS
+text=(:title Request For Complaints #2:)%0aInter9 Engineering Task Force%0a%0aPath Key Infrastructure (PKI)%0a%0aThe path key infrastructure (PKI) relies on [[9/FNS|FNS]]. It is necessary to%0abe familiar with FNS before reading this document.%0a%0aPKI is designed to replace the centralized public key infrastructure, which%0auses certificate authorities which are difficult to replace and which%0aend-users have no control over.%0a%0aWhen a client connects to the Inter9, it must choose a local server to trust.%0aIt imports a single certificate authority from the local server.%0a%0aFor example, suppose the user jrmu joins the server freeirc. He imports%0aFreeIRC as a certificate authority. The hierarchy of the server is /freeirc%0a%0aFreeIRC then signs the certificate for the root authority /. The / root%0aauthority then signs certificates for each of the entries in its directories,%0asuch as /ircnow and /cloud9p.%0a%0aA user from /freeirc can therefore verify the certificate from /cloud9p as a%0aresult of this chain of signatures:%0a%0alocal FreeIRC CA -> root CA -> cloud9p -> subdomain certificates%0a%0aIf the root CA becomes abusive, the local servers can revoke the signature on%0athe root certificate and sign a new root CA, forking the path key%0ainfrastructure. Because clients trust the local server directly, this fork%0awould be seamless. This gives more power for local certificate authorities to%0adeter the root CA from an abuse of power.%0a%0aMore importantly, users are not required to blindly import a list of 200+%0aCertificate Authorities they don't actually know or trust. Instead, only one%0asingle CA is imported, from the local server.%0a
+time=1692820066
+title=Request For Complaints #2
+author:1692820066=jrmu
+diff:1692820066:1692819995:=26c26%0a%3c local FreeIRC CA -> root CA -> cloud9p -> subdomain certificates%0a---%0a> local FreeIRC CA -> root CA -> cloud9p%0a
+host:1692820066=38.87.162.8
+author:1692819995=jrmu
+diff:1692819995:1692819387:=6,36c6,24%0a%3c The path key infrastructure (PKI) relies on [[9/FNS|FNS]]. It is necessary to%0a%3c be familiar with FNS before reading this document.%0a%3c %0a%3c PKI is designed to replace the centralized public key infrastructure, which%0a%3c uses certificate authorities which are difficult to replace and which%0a%3c end-users have no control over.%0a%3c %0a%3c When a client connects to the Inter9, it must choose a local server to trust.%0a%3c It imports a single certificate authority from the local server.%0a%3c %0a%3c For example, suppose the user jrmu joins the server freeirc. He imports%0a%3c FreeIRC as a certificate authority. The hierarchy of the server is /freeirc%0a%3c %0a%3c FreeIRC then signs the certificate for the root authority /. The / root%0a%3c authority then signs certificates for each of the entries in its directories,%0a%3c such as /ircnow and /cloud9p.%0a%3c %0a%3c A user from /freeirc can therefore verify the certificate from /cloud9p as a%0a%3c result of this chain of signatures:%0a%3c %0a%3c local FreeIRC CA -> root CA -> cloud9p%0a%3c %0a%3c If the root CA becomes abusive, the local servers can revoke the signature on%0a%3c the root certificate and sign a new root CA, forking the path key%0a%3c infrastructure. Because clients trust the local server directly, this fork%0a%3c would be seamless. This gives more power for local certificate authorities to%0a%3c deter the root CA from an abuse of power.%0a%3c %0a%3c More importantly, users are not required to blindly import a list of 200+%0a%3c Certificate Authorities they don't actually know or trust. Instead, only one%0a%3c single CA is imported, from the local server.%0a---%0a> The path key infrastructure (PKI) relies on [[9/FNS|FNS]]. It is necessary to be familiar with FNS before reading this document.%0a> %0a> PKI is designed to replace the centralized public key infrastructure, which uses certificate authorities which are difficult to replace and which end-users have no control over.%0a> %0a> When a client connects to the Inter9, it must choose a local server to trust. It imports a single certificate authority from the local server.%0a> %0a> For example, user jrmu joins the server freeirc. He imports FreeIRC as a certificate authority.%0a> %0a> The hierarchy of the server is /freeirc%0a> %0a> FreeIRC then signs the certificate from the root authority from /. The / root authority then signs certificates for each of the entries in its directories, such as /ircnow and /cloud9p.%0a> %0a> A user from /freeirc can therefore verify the certificate from /cloud9p as a result of this chain of signatures:%0a> %0a> client -> local FreeIRC CA -> root CA -> other CAs -> cloud9p%0a> %0a> If the root CA becomes abusive, the local servers can revoke the signature on the root certificate and sign a new root CA, forking the path key infrastructure. Because clients trust the local server directly, this fork would be seamless. This gives more power for local certificate authorities to deter the root CA from an abuse of power.%0a> %0a> More importantly, users are not required to blindly import a list of 200+ Certificate Authorities they don't actually know or trust. Instead, only one single CA is imported, from the local server.%0a
+host:1692819995=38.87.162.8
+author:1692819387=jrmu
+diff:1692819387:1692819293:=5,6d4%0a%3c %0a%3c The path key infrastructure (PKI) relies on [[9/FNS|FNS]]. It is necessary to be familiar with FNS before reading this document.%0a
+host:1692819387=38.87.162.8
+author:1692819293=jrmu
+diff:1692819293:1692411417:=12,16c12,16%0a%3c The hierarchy of the server is /freeirc%0a%3c %0a%3c FreeIRC then signs the certificate from the root authority from /. The / root authority then signs certificates for each of the entries in its directories, such as /ircnow and /cloud9p.%0a%3c %0a%3c A user from /freeirc can therefore verify the certificate from /cloud9p as a result of this chain of signatures:%0a---%0a> The hierarchy of the server is /net/freeirc%0a> %0a> FreeIRC then signs the certificate from the root authority from /net/. The /net/ root authority then signs certificates for each of the entries in its directories, such as /net/ircnow and /net/cloud9p.%0a> %0a> A user from /net/freeirc can therefore verify the certificate from /net/cloud9p as a result of this chain of signatures:%0a
+host:1692819293=38.87.162.8
+author:1692411417=jrmu
+diff:1692411417:1692411326:=21,22d20%0a%3c %0a%3c More importantly, users are not required to blindly import a list of 200+ Certificate Authorities they don't actually know or trust. Instead, only one single CA is imported, from the local server.%0a
+host:1692411417=38.87.162.8
+author:1692411326=jrmu
+diff:1692411326:1692409889:=8,20c8,14%0a%3c When a client connects to the Inter9, it must choose a local server to trust. It imports a single certificate authority from the local server.%0a%3c %0a%3c For example, user jrmu joins the server freeirc. He imports FreeIRC as a certificate authority.%0a%3c %0a%3c The hierarchy of the server is /net/freeirc%0a%3c %0a%3c FreeIRC then signs the certificate from the root authority from /net/. The /net/ root authority then signs certificates for each of the entries in its directories, such as /net/ircnow and /net/cloud9p.%0a%3c %0a%3c A user from /net/freeirc can therefore verify the certificate from /net/cloud9p as a result of this chain of signatures:%0a%3c %0a%3c client -> local FreeIRC CA -> root CA -> other CAs -> cloud9p%0a%3c %0a%3c If the root CA becomes abusive, the local servers can revoke the signature on the root certificate and sign a new root CA, forking the path key infrastructure. Because clients trust the local server directly, this fork would be seamless. This gives more power for local certificate authorities to deter the root CA from an abuse of power.%0a---%0a> A client will trust its local server and imports it as a single certificate authority.%0a> %0a> This authority then signs a root authority, which signs other certificate authorities.%0a> %0a> So the path goes from%0a> %0a> client -> single CA -> root CA -> other CAs -> target server%0a
+host:1692411326=38.87.162.8
+author:1692409889=jrmu
+diff:1692409889:1692409889:=1,14d0%0a%3c (:title Request For Complaints #2:)%0a%3c Inter9 Engineering Task Force%0a%3c %0a%3c Path Key Infrastructure (PKI)%0a%3c %0a%3c PKI is designed to replace the centralized public key infrastructure, which uses certificate authorities which are difficult to replace and which end-users have no control over.%0a%3c %0a%3c A client will trust its local server and imports it as a single certificate authority.%0a%3c %0a%3c This authority then signs a root authority, which signs other certificate authorities.%0a%3c %0a%3c So the path goes from%0a%3c %0a%3c client -> single CA -> root CA -> other CAs -> target server%0a
+host:1692409889=38.87.162.8
blob - /dev/null
blob + 22ec99ac0db4fb516c19cff0b16eb519b27e1ec0 (mode 644)
--- /dev/null
+++ wiki.d/9.PNS
@@ -0,0 +1,49 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1692408186
+host=38.87.162.8
+name=9.PNS
+rev=12
+targets=
+text=(:redirect 9/FNS:)%0a(:title Request For Complaints #1:)%0aInter9 Engineering Task Force%0a%0aFile Name System (FNS)%0a%0aFNS is designed to replace the centralized domain name system with an alternative that can easily be federated and defederated.%0a%0aThe namespace is divided by the delimeter / like pathnames in a filesystem:%0a%0a[@%0aFNS path            | DNS equivalent%0a====================+===================%0a/shelltalk/jrmu/www | www.jrmu.shelltalk%0a/cloud9p/mkf/mail   | mail.mkf.cloud9p%0a/com/google/www     | www.google.com%0a@]%0a%0aEach FNS server keeps track of its own entries (files and subdirectories) as well as a pointer to its parent, .. in a relative path system. It is analogous to how the UNIX filesystem works, where each inode contains listing of its own files/subdirectories and its parent ..%0a%0aIn the above example, /cloud9p/mkf/mail, / root handles the records for cloud9p; cloud9p handles the record for mkf; and mkf handles the record for mail. FNS queries are distributed in the same way that traditional DNS queries are handled.%0a%0aWhat makes FNS unique is that there is no concept of an absolute root, and there are no hard-coded root servers. Instead, to find root, clients must query the parent node .. recursively, until .. points to itself.%0a%0aBy definition, a root node is one where the .. entry points to itself. Because there are no official roots, there can and will exist multiple roots. Any node can declare itself a root simply by pointing its .. entry to itself. The lookup to root always involves recursively querying .. until the root is reached.%0a%0aPathnames are all relative and can be moved at any time moved to a new location in the hierarchy, or even a new root. To change the position in the FNS hierarchy, simply change the .. pointer to a new address. This ease of changing parent directories is designed to make it easy to switch FNS root nodes.%0a%0aBecause of the absence of hard-coded root servers, there are no absolute%0apaths, and any given FNS node only keeps track of its children and immediate%0aparent.%0a%0aEach FNS server chooses where it wants to join the hierarchy, namely, which / root it wants to belong to. It is possible to defederate from this / root and choose a new / root (a chroot FNS split).%0a%0aIn general, users will prefer to have fewer / roots in order to prevent confusion, for simplicity and ease of use. However, because pathnames are relative, it is possible and relatively easy for FNS nameservers to fork. A node simply needs to declare itself as root by setting the .. pointer to itself; and persuade other nodes to set their ... pointer to the new root. This forking mechanism allows forks to take a large chunk of the namespace with them, to deter an abuse of power from / root.%0a%0aEven though there are multiple roots, it is possible for one root to refer to another.%0a%0aFor example, consider the scenario where ircnow and ircnever both run their own separate, independent FNS roots. Suppose a user is connected to shelltalk, a subdirectory of the ircnow network. He would still be able to lookup and resolve the name turtlespeak on the ircnever namespace:%0a%0a/shelltalk/../ircnever/turtlespeak%0a%0aThe shelltalk user would first query .. to get to ircnow's / root, then query%0aircnow's / root to get the address for ircnever, then query ircnever to get%0athe address for turtlespeak.%0a%0aAlthough the two nodes, ircnow and ircnever, are independent roots, they can%0arefer to each other as children inodes with pointers, making it possible to%0aconnect to independent networks.%0a%0aIn the event of conflicts between networks, it may ircnever may choose to%0a"sanction" ircnow by removing its directory listing, and ircnow may likewise%0aremove ircnever's directory listing. The users within each respective network%0acan still resolve FNS entries within their own network, but can no longer%0aresolve on enemy networks.%0a
+time=1692464701
+title=Request For Complaints #1
+author:1692464701=jrmu
+diff:1692464701:1692464646:=1d0%0a%3c (:redirect 9/FNS:)%0a
+host:1692464701=38.87.162.8
+author:1692464646=jrmu
+diff:1692464646:1692463963:=4,7c4,7%0a%3c File Name System (FNS)%0a%3c %0a%3c FNS is designed to replace the centralized domain name system with an alternative that can easily be federated and defederated.%0a%3c %0a---%0a> Path Name System (PNS)%0a> %0a> PNS is designed to replace the centralized domain name system with an alternative that can easily be federated and defederated.%0a> %0a11c11%0a%3c FNS path            | DNS equivalent%0a---%0a> PNS path            | DNS equivalent%0a18,23c18,23%0a%3c Each FNS server keeps track of its own entries (files and subdirectories) as well as a pointer to its parent, .. in a relative path system. It is analogous to how the UNIX filesystem works, where each inode contains listing of its own files/subdirectories and its parent ..%0a%3c %0a%3c In the above example, /cloud9p/mkf/mail, / root handles the records for cloud9p; cloud9p handles the record for mkf; and mkf handles the record for mail. FNS queries are distributed in the same way that traditional DNS queries are handled.%0a%3c %0a%3c What makes FNS unique is that there is no concept of an absolute root, and there are no hard-coded root servers. Instead, to find root, clients must query the parent node .. recursively, until .. points to itself.%0a%3c %0a---%0a> Each PNS server keeps track of its own entries (files and subdirectories) as well as a pointer to its parent, .. in a relative path system. It is analogous to how the UNIX filesystem works, where each inode contains listing of its own files/subdirectories and its parent ..%0a> %0a> In the above example, /cloud9p/mkf/mail, / root handles the records for cloud9p; cloud9p handles the record for mkf; and mkf handles the record for mail. PNS queries are distributed in the same way that traditional DNS queries are handled.%0a> %0a> What makes PNS unique is that there is no concept of an absolute root, and there are no hard-coded root servers. Instead, to find root, clients must query the parent node .. recursively, until .. points to itself.%0a> %0a26,27c26,27%0a%3c Pathnames are all relative and can be moved at any time moved to a new location in the hierarchy, or even a new root. To change the position in the FNS hierarchy, simply change the .. pointer to a new address. This ease of changing parent directories is designed to make it easy to switch FNS root nodes.%0a%3c %0a---%0a> Pathnames are all relative and can be moved at any time moved to a new location in the hierarchy, or even a new root. To change the position in the PNS hierarchy, simply change the .. pointer to a new address. This ease of changing parent directories is designed to make it easy to switch PNS root nodes.%0a> %0a29c29%0a%3c paths, and any given FNS node only keeps track of its children and immediate%0a---%0a> paths, and any given PNS node only keeps track of its children and immediate%0a32,35c32,35%0a%3c Each FNS server chooses where it wants to join the hierarchy, namely, which / root it wants to belong to. It is possible to defederate from this / root and choose a new / root (a chroot FNS split).%0a%3c %0a%3c In general, users will prefer to have fewer / roots in order to prevent confusion, for simplicity and ease of use. However, because pathnames are relative, it is possible and relatively easy for FNS nameservers to fork. A node simply needs to declare itself as root by setting the .. pointer to itself; and persuade other nodes to set their ... pointer to the new root. This forking mechanism allows forks to take a large chunk of the namespace with them, to deter an abuse of power from / root.%0a%3c %0a---%0a> Each PNS server chooses where it wants to join the hierarchy, namely, which / root it wants to belong to. It is possible to defederate from this / root and choose a new / root (a chroot PNS split).%0a> %0a> In general, users will prefer to have fewer / roots in order to prevent confusion, for simplicity and ease of use. However, because pathnames are relative, it is possible and relatively easy for PNS nameservers to fork. A node simply needs to declare itself as root by setting the .. pointer to itself; and persuade other nodes to set their ... pointer to the new root. This forking mechanism allows forks to take a large chunk of the namespace with them, to deter an abuse of power from / root.%0a> %0a38,39c38,39%0a%3c For example, consider the scenario where ircnow and ircnever both run their own separate, independent FNS roots. Suppose a user is connected to shelltalk, a subdirectory of the ircnow network. He would still be able to lookup and resolve the name turtlespeak on the ircnever namespace:%0a%3c %0a---%0a> For example, consider the scenario where ircnow and ircnever both run their own separate, independent PNS roots. Suppose a user is connected to shelltalk, a subdirectory of the ircnow network. He would still be able to lookup and resolve the name turtlespeak on the ircnever namespace:%0a> %0a53c53%0a%3c can still resolve FNS entries within their own network, but can no longer%0a---%0a> can still resolve PNS entries within their own network, but can no longer%0a
+host:1692464646=38.87.162.8
+author:1692463963=jrmu
+diff:1692463963:1692463810:=32c32%0a%3c Each PNS server chooses where it wants to join the hierarchy, namely, which / root it wants to belong to. It is possible to defederate from this / root and choose a new / root (a chroot PNS split).%0a---%0a> Each PNS server chooses where it wants to join the hierarchy, namely, which /net/ root it wants to belong to. It is possible to defederate from this /net/ root and choose a new /net/ root (a chroot PNS split).%0a
+host:1692463963=38.87.162.8
+author:1692463810=jrmu
+diff:1692463810:1692409373:=11,15c11,15%0a%3c PNS path            | DNS equivalent%0a%3c ====================+===================%0a%3c /shelltalk/jrmu/www | www.jrmu.shelltalk%0a%3c /cloud9p/mkf/mail   | mail.mkf.cloud9p%0a%3c /com/google/www     | www.google.com%0a---%0a> PNS path                | DNS equivalent%0a> ========================+===================%0a> /net/shelltalk/jrmu/www | www.jrmu.shelltalk%0a> /net/cloud9p/mkf/mail   | mail.mkf.cloud9p%0a> /net/com/google/www     | www.google.com%0a18,31c18,27%0a%3c Each PNS server keeps track of its own entries (files and subdirectories) as well as a pointer to its parent, .. in a relative path system. It is analogous to how the UNIX filesystem works, where each inode contains listing of its own files/subdirectories and its parent ..%0a%3c %0a%3c In the above example, /cloud9p/mkf/mail, / root handles the records for cloud9p; cloud9p handles the record for mkf; and mkf handles the record for mail. PNS queries are distributed in the same way that traditional DNS queries are handled.%0a%3c %0a%3c What makes PNS unique is that there is no concept of an absolute root, and there are no hard-coded root servers. Instead, to find root, clients must query the parent node .. recursively, until .. points to itself.%0a%3c %0a%3c By definition, a root node is one where the .. entry points to itself. Because there are no official roots, there can and will exist multiple roots. Any node can declare itself a root simply by pointing its .. entry to itself. The lookup to root always involves recursively querying .. until the root is reached.%0a%3c %0a%3c Pathnames are all relative and can be moved at any time moved to a new location in the hierarchy, or even a new root. To change the position in the PNS hierarchy, simply change the .. pointer to a new address. This ease of changing parent directories is designed to make it easy to switch PNS root nodes.%0a%3c %0a%3c Because of the absence of hard-coded root servers, there are no absolute%0a%3c paths, and any given PNS node only keeps track of its children and immediate%0a%3c parent.%0a%3c %0a---%0a> Each PNS server only keeps track of its subdirectories in a relative path system.%0a> %0a> In the above example, /net/cloud9p/mkf/mail, mkf handles the mail PNS records, cloud9p handles mkf, and the net root /net/ handles cloud9p. In this sense, PNS is distributed like DNS is distributed.%0a> %0a> Each PNS server delegates the next component in the path to another PNS server. /net/ has control over its directory entries. For example, /net/ would set the entries for freeirc, cloud9p, and ircnow. FreeIRC would then set up its own PNS server to control the directory entries for /net/freeirc, and so forth.%0a> %0a> However, the key difference is that in PNS, there is no absolute root /net/. Pathnames are all relative and can be moved to new locations, and it is possible for any PNS server to become  /net/ root. Multiple roots are allowed (and expected) to coexist.%0a> %0a> Entries in a given PNS server do *not* keep track of their absolute path. They only keep track of their relative position, and have flexibility to move around in the hierarchy (similar to rearrangements of a filesystem hierarchy).%0a> %0a34,54c30,34%0a%3c In general, users will prefer to have fewer / roots in order to prevent confusion, for simplicity and ease of use. However, because pathnames are relative, it is possible and relatively easy for PNS nameservers to fork. A node simply needs to declare itself as root by setting the .. pointer to itself; and persuade other nodes to set their ... pointer to the new root. This forking mechanism allows forks to take a large chunk of the namespace with them, to deter an abuse of power from / root.%0a%3c %0a%3c Even though there are multiple roots, it is possible for one root to refer to another.%0a%3c %0a%3c For example, consider the scenario where ircnow and ircnever both run their own separate, independent PNS roots. Suppose a user is connected to shelltalk, a subdirectory of the ircnow network. He would still be able to lookup and resolve the name turtlespeak on the ircnever namespace:%0a%3c %0a%3c /shelltalk/../ircnever/turtlespeak%0a%3c %0a%3c The shelltalk user would first query .. to get to ircnow's / root, then query%0a%3c ircnow's / root to get the address for ircnever, then query ircnever to get%0a%3c the address for turtlespeak.%0a%3c %0a%3c Although the two nodes, ircnow and ircnever, are independent roots, they can%0a%3c refer to each other as children inodes with pointers, making it possible to%0a%3c connect to independent networks.%0a%3c %0a%3c In the event of conflicts between networks, it may ircnever may choose to%0a%3c "sanction" ircnow by removing its directory listing, and ircnow may likewise%0a%3c remove ircnever's directory listing. The users within each respective network%0a%3c can still resolve PNS entries within their own network, but can no longer%0a%3c resolve on enemy networks.%0a---%0a> Forking the federation and setting up a new root would be equivalent to mv cloud9p ../%0a> %0a> In general, it is preferable to have a single /net/ root in order to prevent confusion (multiple roots will result in conflicting namespaces). However, because pathnames are relative, it is possible for PNS nameservers to fork, create a new /net/ root, and take a large chunk of the namespace with them. This makes forking much more powerful than with DNS, and will serve as a deterrent to the abuse of power.%0a> %0a> If the /net/ root abuses power, subdirectories can choose to create a new /net/ root and preserve the entire namespace intact. /net/freeirc under the old /net/root/ remains /net/freeirc under the new net root, since all paths are relative.%0a
+host:1692463810=38.87.162.8
+author:1692409373=jrmu
+diff:1692409373:1692408848:=22,23d21%0a%3c Each PNS server delegates the next component in the path to another PNS server. /net/ has control over its directory entries. For example, /net/ would set the entries for freeirc, cloud9p, and ircnow. FreeIRC would then set up its own PNS server to control the directory entries for /net/freeirc, and so forth.%0a%3c %0a33,34d30%0a%3c %0a%3c If the /net/ root abuses power, subdirectories can choose to create a new /net/ root and preserve the entire namespace intact. /net/freeirc under the old /net/root/ remains /net/freeirc under the new net root, since all paths are relative.%0a
+host:1692409373=38.87.162.8
+author:1692408848=jrmu
+diff:1692408848:1692408722:=29,30d28%0a%3c %0a%3c In general, it is preferable to have a single /net/ root in order to prevent confusion (multiple roots will result in conflicting namespaces). However, because pathnames are relative, it is possible for PNS nameservers to fork, create a new /net/ root, and take a large chunk of the namespace with them. This makes forking much more powerful than with DNS, and will serve as a deterrent to the abuse of power.%0a
+host:1692408848=38.87.162.8
+author:1692408722=jrmu
+diff:1692408722:1692408431:=1,3d0%0a%3c (:title Request For Complaints #1:)%0a%3c Inter9 Engineering Task Force%0a%3c %0a
+host:1692408722=38.87.162.8
+author:1692408431=jrmu
+diff:1692408431:1692408411:=21c21%0a%3c Entries in a given PNS server do *not* keep track of their absolute path. They only keep track of their relative position, and have flexibility to move around in the hierarchy (similar to rearrangements of a filesystem hierarchy).%0a---%0a> Entries in a given PNS server do *not* keep track of their absolute path. They only keep track of their relative position, and have flexibility to move around in the hierarchy.%0a
+host:1692408431=38.87.162.8
+author:1692408411=jrmu
+diff:1692408411:1692408334:=20,21d19%0a%3c %0a%3c Entries in a given PNS server do *not* keep track of their absolute path. They only keep track of their relative position, and have flexibility to move around in the hierarchy.%0a
+host:1692408411=38.87.162.8
+author:1692408334=jrmu
+diff:1692408334:1692408254:=22,23d21%0a%3c %0a%3c Forking the federation and setting up a new root would be equivalent to mv cloud9p ../%0a
+host:1692408334=38.87.162.8
+author:1692408254=jrmu
+diff:1692408254:1692408186:=7d6%0a%3c [@%0a10a10%0a> %0a11a12%0a> %0a13d13%0a%3c @]%0a
+host:1692408254=38.87.162.8
+author:1692408186=jrmu
+diff:1692408186:1692408186:=1,21d0%0a%3c Path Name System (PNS)%0a%3c %0a%3c PNS is designed to replace the centralized domain name system with an alternative that can easily be federated and defederated.%0a%3c %0a%3c The namespace is divided by the delimeter / like pathnames in a filesystem:%0a%3c %0a%3c PNS path                | DNS equivalent%0a%3c ========================+===================%0a%3c /net/shelltalk/jrmu/www | www.jrmu.shelltalk%0a%3c %0a%3c /net/cloud9p/mkf/mail   | mail.mkf.cloud9p%0a%3c %0a%3c /net/com/google/www     | www.google.com%0a%3c %0a%3c Each PNS server only keeps track of its subdirectories in a relative path system.%0a%3c %0a%3c In the above example, /net/cloud9p/mkf/mail, mkf handles the mail PNS records, cloud9p handles mkf, and the net root /net/ handles cloud9p. In this sense, PNS is distributed like DNS is distributed.%0a%3c %0a%3c However, the key difference is that in PNS, there is no absolute root /net/. Pathnames are all relative and can be moved to new locations, and it is possible for any PNS server to become  /net/ root. Multiple roots are allowed (and expected) to coexist.%0a%3c %0a%3c Each PNS server chooses where it wants to join the hierarchy, namely, which /net/ root it wants to belong to. It is possible to defederate from this /net/ root and choose a new /net/ root (a chroot PNS split).%0a
+host:1692408186=38.87.162.8
blob - /dev/null
blob + 49f0414858121a93f1342a4a8a7f28ead35b75bf (mode 644)
--- /dev/null
+++ wiki.d/9.Partdisk
@@ -0,0 +1,21 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1632730404
+host=38.87.162.8
+name=9.Partdisk
+rev=3
+targets=
+text=At installation time if you see something like the following:%0a%0a[@%0a/dev/sdE0: M4-C5064M4SSD2%0a/dev/sdE0/data%0a/dev/sdE0/plan9%0a%0aterm%25 inst/start%0a%0a...%0a%0aThe following Plan 9 disk partitions were found.%0a%0a/dev/sdE0/plan9%0a%0aPlan 9 partition to subdivide (/dev/sdE0/plan9)[/dev/sdE0/plan9]:%0a%0a%0aThis is disk/prep; use it to subdivide the PLan 9 partition.%0aIf it is not yet subdivided, a sensible layout will be suggested;%0ayou can probably just type 'w' and then 'q'.%0a%0athere's a fat partition where the%0aplan 9 partition table would go.%0aIf you really want to overwrite it, zero%0athe second sector of the disk adn try again%0a@]%0a%0a%25 dd -if /dev/zero -of /dev/sdE0/data -count 50000%0a%0aThat will wipe out the first sectors of the disk and allow Plan 9 to%0acontinue installation.%0a
+time=1640000382
+author:1640000382=jrmu
+diff:1640000382:1632730408:=1c1%0a%3c At installation time if you see something like the following:%0a---%0a> At installation time ify ou see something like the following:%0a
+host:1640000382=38.87.162.8
+author:1632730408=jrmu
+diff:1632730408:1632730404:=
+host:1632730408=125.231.18.235
+author:1632730404=Miniontoby
+diff:1632730404:1632730404:=1,32d0%0a%3c At installation time ify ou see something like the following:%0a%3c %0a%3c [@%0a%3c /dev/sdE0: M4-C5064M4SSD2%0a%3c /dev/sdE0/data%0a%3c /dev/sdE0/plan9%0a%3c %0a%3c term%25 inst/start%0a%3c %0a%3c ...%0a%3c %0a%3c The following Plan 9 disk partitions were found.%0a%3c %0a%3c /dev/sdE0/plan9%0a%3c %0a%3c Plan 9 partition to subdivide (/dev/sdE0/plan9)[/dev/sdE0/plan9]:%0a%3c %0a%3c %0a%3c This is disk/prep; use it to subdivide the PLan 9 partition.%0a%3c If it is not yet subdivided, a sensible layout will be suggested;%0a%3c you can probably just type 'w' and then 'q'.%0a%3c %0a%3c there's a fat partition where the%0a%3c plan 9 partition table would go.%0a%3c If you really want to overwrite it, zero%0a%3c the second sector of the disk adn try again%0a%3c @]%0a%3c %0a%3c %25 dd -if /dev/zero -of /dev/sdE0/data -count 50000%0a%3c %0a%3c That will wipe out the first sectors of the disk and allow Plan 9 to%0a%3c continue installation.%0a
+host:1632730404=125.231.18.235
blob - /dev/null
blob + a274fe6c730dc92da9e14c86b9cb8c49876e67c8 (mode 644)
--- /dev/null
+++ wiki.d/9.Plan9ini
@@ -0,0 +1,18 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1632913919
+host=38.87.162.8
+name=9.Plan9ini
+rev=2
+targets=
+text=To customize resolution for thinkpad x200:%0a%0a[@%0a%25 9fs 9fat%0a@]%0a%0aThen edit /n/9/plan9.ini. Replace the default value of:%0a%0a[@%0avgasize=1024x768x16%0a@]%0a%0awith:%0a%0a[@%0amonitor=x200%0avgasize=1280x800x32%0a@]%0a%0a
+time=1635093029
+author:1635093029=jrmu
+diff:1635093029:1632913919:=7,8c7,8%0a%3c Then edit /n/9/plan9.ini. Replace the default value of:%0a%3c %0a---%0a> Then edit /n/9/plan9.ini:%0a> %0a10c10,11%0a%3c vgasize=1024x768x16%0a---%0a> monitor=x200%0a> vgasize=1280x800x32%0a12,19d12%0a%3c %0a%3c with:%0a%3c %0a%3c [@%0a%3c monitor=x200%0a%3c vgasize=1280x800x32%0a%3c @]%0a%3c %0a
+host:1635093029=38.87.162.8
+author:1632913919=Miniontoby
+diff:1632913919:1632913919:=1,12d0%0a%3c To customize resolution for thinkpad x200:%0a%3c %0a%3c [@%0a%3c %25 9fs 9fat%0a%3c @]%0a%3c %0a%3c Then edit /n/9/plan9.ini:%0a%3c %0a%3c [@%0a%3c monitor=x200%0a%3c vgasize=1280x800x32%0a%3c @]%0a
+host:1632913919=125.231.16.216
blob - /dev/null
blob + 215d7c2d6eb7fcdee49932e757a7441d9779dc6d (mode 644)
--- /dev/null
+++ wiki.d/9.Ramfs
@@ -0,0 +1,21 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1695827580
+host=38.87.162.8
+name=9.Ramfs
+rev=3
+targets=
+text=To use ramfs for /tmp, replace these two lines in $home/lib/profile:%0a%0a[@%0aif(! syscall create /tmp/xxx 1 0666 >[2]/dev/null)%0a	ramfs	# in case we're running off a cd%0a@]%0a%0aWith these lines:%0a%0a[@%0aramfs /usr/$user/tmp%0abind -c /usr/$user/tmp /tmp%0a@]%0a
+time=1695829435
+author:1695829435=jrmu
+diff:1695829435:1695827935:=1,2c1,2%0a%3c To use ramfs for /tmp, replace these two lines in $home/lib/profile:%0a%3c %0a---%0a> To use ramfs for /tmp, replace these two lines in /lib/namespace:%0a> %0a4,5c4,5%0a%3c if(! syscall create /tmp/xxx 1 0666 >[2]/dev/null)%0a%3c 	ramfs	# in case we're running off a cd%0a---%0a> bind -c /n/other/usr/$user/tmp /usr/$user/tmp%0a> bind -c /usr/$user/tmp /tmp%0a
+host:1695829435=38.87.162.8
+author:1695827935=jrmu
+diff:1695827935:1695827580:=8,9c8,9%0a%3c With these lines:%0a%3c %0a---%0a> With these 3 new lines:%0a> %0a11c11,12%0a%3c ramfs /usr/$user/tmp%0a---%0a> ramfs -m /n/other/usr/$user/tmp%0a> bind -c /n/other/usr/$user/tmp /usr/$user/tmp%0a
+host:1695827935=38.87.162.8
+author:1695827580=jrmu
+diff:1695827580:1695827580:=1,14d0%0a%3c To use ramfs for /tmp, replace these two lines in /lib/namespace:%0a%3c %0a%3c [@%0a%3c bind -c /n/other/usr/$user/tmp /usr/$user/tmp%0a%3c bind -c /usr/$user/tmp /tmp%0a%3c @]%0a%3c %0a%3c With these 3 new lines:%0a%3c %0a%3c [@%0a%3c ramfs -m /n/other/usr/$user/tmp%0a%3c bind -c /n/other/usr/$user/tmp /usr/$user/tmp%0a%3c bind -c /usr/$user/tmp /tmp%0a%3c @]%0a
+host:1695827580=38.87.162.8
blob - /dev/null
blob + bf6cf60abff8bbab324ad1f195a2af2f34f6e116 (mode 644)
--- /dev/null
+++ wiki.d/9.Rcpu
@@ -0,0 +1,21 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1642457909
+host=38.87.162.8
+name=9.Rcpu
+rev=3
+targets=
+text=To connect to cloud9p.org:%0a%0a[@%0a; echo "auth=cloud9p.org authdom=wm\%0aip=104.244.78.185 sys=cloud9p.org auth=cloud9p.org authdom=wm dom=cloud9p.org" >> /lib/ndb/local%0a; rcpu -u $USER -h cloud9p.org%0a@]%0a%0aTo create a new user:%0a%0a[@%0a; /sys/lib/newuser%0a@]%0a%0aTo connect to the old watermelon.ircnow.org:%0a%0a[@%0a; echo 'sys=wm ip=45.61.185.213 auth=wm authdom=watermelon' >> /lib/ndb/local%0a; rcpu -u $USER -h watermelon.ircnow.org%0a@]%0a%0aTo create a new user:%0a%0a[@%0a; /sys/lib/newuser%0a@]%0a
+time=1692638514
+author:1692638514=jrmu
+diff:1692638514:1642457942:=1,15c1,2%0a%3c To connect to cloud9p.org:%0a%3c %0a%3c [@%0a%3c ; echo "auth=cloud9p.org authdom=wm\%0a%3c ip=104.244.78.185 sys=cloud9p.org auth=cloud9p.org authdom=wm dom=cloud9p.org" >> /lib/ndb/local%0a%3c ; rcpu -u $USER -h cloud9p.org%0a%3c @]%0a%3c %0a%3c To create a new user:%0a%3c %0a%3c [@%0a%3c ; /sys/lib/newuser%0a%3c @]%0a%3c %0a%3c To connect to the old watermelon.ircnow.org:%0a---%0a> To connect to watermelon.ircnow.org:%0a> %0a
+host:1692638514=38.87.162.8
+author:1642457942=jrmu
+diff:1642457942:1642457909:=6,11d5%0a%3c @]%0a%3c %0a%3c To create a new user:%0a%3c %0a%3c [@%0a%3c ; /sys/lib/newuser%0a
+host:1642457942=38.87.162.8
+author:1642457909=jrmu
+diff:1642457909:1642457909:=1,6d0%0a%3c To connect to watermelon.ircnow.org:%0a%3c %0a%3c [@%0a%3c ; echo 'sys=wm ip=45.61.185.213 auth=wm authdom=watermelon' >> /lib/ndb/local%0a%3c ; rcpu -u $USER -h watermelon.ircnow.org%0a%3c @]%0a
+host:1642457909=38.87.162.8
blob - /dev/null
blob + ec1363e7c82c563869bf22c53c7e00ad9e15c386 (mode 644)
--- /dev/null
+++ wiki.d/9.Reading
@@ -0,0 +1,24 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1691979439
+host=38.87.162.8
+name=9.Reading
+rev=4
+targets=
+text=# * The RISC-V Reader: An Open Architecture Atlas%0a  * Waterman, Andrew,Patterson, David%0a  * Published by Strawberry Canyon, 2017%0a  * ISBN 10: 099924910XISBN 13: 9780999249109 %0a# * RISC-V Assembly Language%0a  * Dos Reis, Anthony J.%0a  * Published by Independently published, 2019%0a  * ISBN 10: 1088462006ISBN 13: 9781088462003 %0a# * Computer Organization and Design: The Hardware Software Interface: RISC-V Edition (The Morgan Kaufmann Series in Computer Architecture and Design)%0a  * David A. Patterson,John L. Hennessy%0a  * Published by Morgan Kaufmann, 2017%0a  * ISBN 10: 0128122757ISBN 13: 9780128122754 %0a
+time=1691980666
+author:1691980666=jrmu
+diff:1691980666:1691979532:=10,12c10,12%0a%3c   * David A. Patterson,John L. Hennessy%0a%3c   * Published by Morgan Kaufmann, 2017%0a%3c   * ISBN 10: 0128122757ISBN 13: 9780128122754 %0a---%0a>  * David A. Patterson,John L. Hennessy%0a>  * Published by Morgan Kaufmann, 2017%0a>  * ISBN 10: 0128122757ISBN 13: 9780128122754 %0a
+host:1691980666=38.87.162.8
+author:1691979532=jrmu
+diff:1691979532:1691979475:=9,12d8%0a%3c # * Computer Organization and Design: The Hardware Software Interface: RISC-V Edition (The Morgan Kaufmann Series in Computer Architecture and Design)%0a%3c  * David A. Patterson,John L. Hennessy%0a%3c  * Published by Morgan Kaufmann, 2017%0a%3c  * ISBN 10: 0128122757ISBN 13: 9780128122754 %0a
+host:1691979532=38.87.162.8
+author:1691979475=jrmu
+diff:1691979475:1691979439:=5,8d4%0a%3c # * RISC-V Assembly Language%0a%3c   * Dos Reis, Anthony J.%0a%3c   * Published by Independently published, 2019%0a%3c   * ISBN 10: 1088462006ISBN 13: 9781088462003 %0a
+host:1691979475=38.87.162.8
+author:1691979439=jrmu
+diff:1691979439:1691979439:=1,4d0%0a%3c # * The RISC-V Reader: An Open Architecture Atlas%0a%3c   * Waterman, Andrew,Patterson, David%0a%3c   * Published by Strawberry Canyon, 2017%0a%3c   * ISBN 10: 099924910XISBN 13: 9780999249109 %0a
+host:1691979439=38.87.162.8
blob - /dev/null
blob + 68be8bd6252b1d8ca7f67652db409ed76cabe63c (mode 644)
--- /dev/null
+++ wiki.d/9.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+charset=UTF-8
+ctime=1631917902
+host=104.167.242.140
+name=9.RecentChanges
+rev=268
+text=* [[9/Drawterm]]  . . . @2024-02-10T17:15:50Z by [[~jrmu]]: [==]%0a* [[9/Authsrv]]  . . . @2023-12-18T09:11:44Z by [[~mkf]]: [=delete empty page=]%0a* [[9/Ramfs]]  . . . @2023-09-27T15:43:55Z by [[~jrmu]]: [==]%0a* [[9/9pideas]]  . . . @2023-09-03T18:58:43Z by [[~jrmu]]: [==]%0a* [[9/9gridchan]]  . . . @2023-09-03T06:16:25Z by [[~jrmu]]: [==]%0a* [[9/Acmemail]]  . . . @2023-09-01T18:05:18Z by [[~jrmu]]: [==]%0a* [[9/Account]]  . . . @2023-09-01T17:09:51Z by [[~zleap]]: [==]%0a* [[9/Date]]  . . . @2023-09-01T13:46:05Z by [[~jrmu]]: [==]%0a* [[9/Shell]]  . . . @2023-08-27T18:52:33Z by [[~jrmu]]: [==]%0a* [[9/Why9]]  . . . @2023-08-25T17:15:16Z by [[~jrmu]]: [==]%0a* [[9/Splinternet]]  . . . @2023-08-24T02:31:30Z by [[~jrmu]]: [==]%0a* [[9/PKI]]  . . . @2023-08-23T19:47:46Z by [[~jrmu]]: [==]%0a* [[9/IP]]  . . . @2023-08-23T00:12:14Z by [[~jrmu]]: [==]%0a* [[9/Inter9]]  . . . @2023-08-23T00:11:11Z by [[~jrmu]]: [==]%0a* [[9/Irc]]  . . . @2023-08-22T14:15:24Z by [[~xfnw]]: [=spelling=]%0a* [[9/Rcpu]]  . . . @2023-08-21T17:21:54Z by [[~jrmu]]: [==]%0a* [[9/FNS]]  . . . @2023-08-19T17:30:06Z by [[~jrmu]]: [==]%0a* [[9/PNS]]  . . . @2023-08-19T17:05:01Z by [[~jrmu]]: [==]%0a* [[9/Reading]]  . . . @2023-08-14T02:37:46Z by [[~jrmu]]: [==]%0a* [[9/Cheatsheet]]  . . . @2023-04-26T04:06:46Z by [[~jrmu]]: [==]%0a* [[9/9p]]  . . . @2023-03-23T12:00:13Z by [[~mkf]]: [==]%0a* [[9/Ideas]]  . . . February 23, 2022, at 05:19 PM by [[~mkf]]: [==]%0a* [[9/Audio]]  . . . February 20, 2022, at 08:07 PM by [[~jrmu]]: [==]%0a* [[9/Install]]  . . . January 22, 2022, at 06:57 AM by [[~mkf]]: [==]%0a* [[9/Ndb]]  . . . January 16, 2022, at 06:46 PM by [[~mkf]]: [==]%0a* [[9/Hostowner]]  . . . January 06, 2022, at 11:29 AM by [[~mkf]]: [==]%0a* [[9/Chording]]  . . . January 03, 2022, at 02:40 PM by [[~jrmu]]: [==]%0a* [[9/9]]  . . . December 22, 2021, at 11:30 AM by [[~xfnw]]: [=fix some grammatical errors=]%0a* [[9/Independent]]  . . . December 20, 2021, at 12:47 PM by [[~jrmu]]: [==]%0a* [[9/Partdisk]]  . . . December 20, 2021, at 11:39 AM by [[~jrmu]]: [==]%0a* [[9/Todo]]  . . . December 03, 2021, at 07:52 PM by [[~mkf]]: [==]%0a* [[9/9pfs]]  . . . November 24, 2021, at 02:00 PM by [[~mkf]]: [==]%0a* [[9/Stone]]  . . . November 04, 2021, at 04:09 PM by [[~meeekeeef]]: [==]%0a* [[9/Zuke]]  . . . November 04, 2021, at 04:01 PM by [[~meeekeeef]]: [==]%0a* [[9/Sysupdate]]  . . . October 31, 2021, at 10:21 PM by [[~meeekeeef]]: [==]%0a* [[9/Netcat]]  . . . October 25, 2021, at 03:40 PM by [[~jrmu]]: [==]%0a* [[9/Plan9ini]]  . . . October 24, 2021, at 04:30 PM by [[~jrmu]]: [==]%0a* [[9/Links]]  . . . October 24, 2021, at 06:29 AM by [[~mkf]]: [==]%0a* [[9/Keybindings]]  . . . October 24, 2021, at 06:15 AM by [[~mkf]]: [=heheheheheh=]%0a* [[9/Ssh]]  . . . October 22, 2021, at 12:54 AM by [[~jrmu]]: [==]%0a* [[9/101]]  . . . October 20, 2021, at 04:53 PM by [[~jrmu]]: [==]%0a* [[9/Cvsfs]]  . . . October 15, 2021, at 12:58 PM by [[~mkf]]: [==]%0a* [[9/JSDrawterm]]  . . . September 30, 2021, at 06:06 PM by [[~jrmu]]: [==]%0a* [[9/Fonts]]  . . . September 28, 2021, at 05:13 PM by [[~jrmu]]: [==]%0a
+time=1707585350
blob - /dev/null
blob + 3fafd1b2446877423b52dd66533aa1568be5ee99 (mode 644)
--- /dev/null
+++ wiki.d/9.Shell
@@ -0,0 +1,15 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1693162353
+host=38.87.162.8
+name=9.Shell
+rev=1
+targets=
+text=To create a new user:%0a%0a[@%0a con -C /srv/cwfs.cmd # this connects your cwfs console%0anewuser $username # makes the account%0anewuser upas +$username # adds to upas group, allows user to have an local mailbox%0anewuser cron +$username # same but for cron%0a# i personally don't do these unless user asks for them.%0a# ctrl-\ return q to exit con%0a; auth/keyfs # important!%0a; auth/changeuser $user%0aassign new Inferno/POP secret? [y/n]: y%0amake it the same as Plan 9 password? [y/n]: y%0a# rest is easy, better to fill the email and sposoner email address (some programs need them)%0aauth/enable $username%0a@]%0a
+time=1693162353
+author:1693162353=jrmu
+diff:1693162353:1693162353:=1,16d0%0a%3c To create a new user:%0a%3c %0a%3c [@%0a%3c  con -C /srv/cwfs.cmd # this connects your cwfs console%0a%3c newuser $username # makes the account%0a%3c newuser upas +$username # adds to upas group, allows user to have an local mailbox%0a%3c newuser cron +$username # same but for cron%0a%3c # i personally don't do these unless user asks for them.%0a%3c # ctrl-\ return q to exit con%0a%3c ; auth/keyfs # important!%0a%3c ; auth/changeuser $user%0a%3c assign new Inferno/POP secret? [y/n]: y%0a%3c make it the same as Plan 9 password? [y/n]: y%0a%3c # rest is easy, better to fill the email and sposoner email address (some programs need them)%0a%3c auth/enable $username%0a%3c @]%0a
+host:1693162353=38.87.162.8
blob - /dev/null
blob + 2cc11840bef49a955f1264d067abe002faef149e (mode 644)
--- /dev/null
+++ wiki.d/9.Splinternet
@@ -0,0 +1,34 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1692724737
+host=38.87.162.8
+name=9.Splinternet
+rev=7
+targets=
+text=(:title The Net is Dead, Long Live Inter9:)%0a%0aThe Internet is fundamentally broken:%0a%0a# DNS assumes a single central root, but China and Russia have begun to create their own alternative roots%0a# The default certificate authorities trusted by our operating systems and browsers have proven themselves untrustworthy. They are controlled by malicious corporations or government agents. These authorities are likely to get blacklisted along political boundaries during a major war%0a# The official Internet standards bodies are no longer controlled by the its users. They are now controlled by corporations with no accountability. Many malicious standards are now being drafted and rubberstamped by these bodies.%0a# The W3C is now effectively controlled by Silicon Valley, so that the web is becoming infected with DRM. For example, Google's WEI proposal would make web browsers uniquely identifiable, and may be used to discriminate against free software users.%0a# National firewalls are being implemented everywhere%0a# The Internet was designed to be a distributed network, but its network topology today resembles a centralized network%0a# Average users can no longer participate as peers or equals on this internet. The upfront capital costs are too high.%0a# Reviving old protocols is insufficient to protect the FOSS community when the entire foundation of the Internet (IP addressing, certificate authorities, and domain name system) are becoming closed and non-free%0a# Internet standards are suffering from the second system effect: TCP/2 (QUIC), HTTP/3, IPv6, ...%0a%0aIn order to achieve a free internet, it is important for users to host their own servers from machines they control (ie, from home). However, self-hosting from home faces many serious obstacles to self hosting:%0a%0a# IPv4 addresses are becoming increasingly expensive%0a# IPv6 addressing increases the learning curve and complexity%0a# Most residential ISP users lack support for dual stack ipv4/ipv6 networking%0a# It is very easy to geolocate an IP address, so that self-hosting offers zero privacy%0a# Hosting servers puts users at risk of DDoS attacks, and DDoS protection is too expensive for most. This has chilling effects on free speech%0a# Most residential ISPs do not provide static IP addresses, or may employ NAT%0a# Dynamic DNS is difficult to set up properly%0a# A lack of static rDNS make it impossible to host applications like IRC or email%0a# Residential IPs are often blacklisted%0a# Hosting servers is contractually forbidden by most ISPs, and can be grounds for termination if caught%0a# Domain names are at risk of being seized by government%0a%0ahttps://www.bleepstatic.com/images/news/sites/z/z-library/new-seizure-notice.jpg%0a%0aThere are parallels between the closing of the formerly open Internet and the closing of the formerly open UNIX system:%0a%0a[@%0aHistory of UNIX%0a~1970 -- Unix is born%0a~1976 -- Sixth edition is released to the world, open source%0a1980s -- Unix licensing becomes more strict%0a1985 -- Source code taken away%0a1985 -- Minix, BSD try to create a free version of UNIX%0a1990 -- GNU almost finishes%0a1993 -- Linux succeeds, the world's first free operating system%0a%0aHistory of Internet%0a1969 -- BBN creates first ARPAnet%0a~1975 -- TCP/IP being designed%0a~1980 -- NSF takes over ARPAnet%0a~1990 -- Internet becomes open for commerce and to the public%0a~2000 -- Government begins to regulate Internet%0a~2024 -- Internet freedom is taken away%0a?FUTURE? -- Birth of inter9, the world's first free network%0a@]%0a%0aThere is a race now to create a new, free and open internet. Our network should aim to be the first to create one with the right pinciples.%0a
+time=1692844290
+title=The Net is Dead, Long Live Inter9
+author:1692844290=jrmu
+diff:1692844290:1692818998:=13d12%0a%3c # Internet standards are suffering from the second system effect: TCP/2 (QUIC), HTTP/3, IPv6, ...%0a
+host:1692844290=38.87.162.8
+author:1692818998=jrmu
+diff:1692818998:1692747522:=27d26%0a%3c %0a51,52d49%0a%3c %0a%3c There is a race now to create a new, free and open internet. Our network should aim to be the first to create one with the right pinciples.%0a
+host:1692818998=38.87.162.8
+author:1692747522=jrmu
+diff:1692747522:1692724875:=1c1%0a%3c (:title The Net is Dead, Long Live Inter9:)%0a---%0a> (:title The Internet is Dead, Long Live the Inter9:)%0a
+host:1692747522=38.87.162.8
+author:1692724875=jrmu
+diff:1692724875:1692724804:=48a49,100%0a> @]%0a> %0a> [@%0a> Revive the old internet principles:%0a> %0a> low latency, low censorship, open for people on every system, universal accessibility%0a> open protocols, open implementations%0a> users control the standards, not corporate/government%0a> rough consensus and running code%0a> %0a> connect existing networks%0a> dn42, tor, gnunet, i2p, ipfs, torrents, matrix, xmpp, irc, fediverse, email, netnews%0a> %0a> Inter9: federated, distributed moderation%0a> %0a> Not centralized Internet%0a> Not anarchic darkweb%0a> %0a> Each node/server can control its own moderation%0a> Anyone should be able to join and participate, or run their own%0a> %0a> Gateways should be built to bridge incompatible networks together%0a> %0a> 9p is the universal protocol%0a> Write new systems programs in lua for faster development%0a> %0a> Towards a Global Inter9%0a> %0a> A new internet where anyone can write new applications and suggest new standards%0a> Like the original internet, the alternative should not be controlled by a single standards body. Instead, all users are invited to contribute to its creation. The principles should be like the old RFCs: rough consensus and running code.%0a> %0a> The network should be customizable and amenable to experimentation with new ideas.%0a> Vibrant ecosystem of applications developed by a network's users%0a> %0a> Although there have been many proposed overlay networks, the ones reported so far fail to uphold many of the same principles of the original Internet.%0a> %0a> The first goal is backwards compatibility. It is necessary to transparently support all existing networking applications that were originally written for the centralized internet, without any modifications.%0a> %0a> The network layer protocol must be IP with at most a few modifications. Internet Protocol is packet-switching which is important for routing around censorship nodes. However, this IP must be encapsulated and transported via tunnels to avoid censorship, and the nodes must be spread out globally across the world in multiple countries to allow for routing around national firewalls.%0a> %0a> Like the original ARPAnet, the design goals of this internet are low-latency and high bandwidth.%0a> %0a> Many existing overlay networks are connection-oriented and require the formation of circuits. This is a serious mistake because it makes it difficult to route around firewalls and censored nodes. Especially if there is censorship, the path taken to a destination may be obstructed sporadically. Dynamic routing of packets, namely packet-switching, is preferred. Moreover many of these overlay networks intentionally choose convoluted routing methods in order to improve anonymity. Unfortunately this has the effect of increasing latency and decreasing bandwidth, making them unsuitable for a general purpose alternative internet.%0a> %0a> VPN tunnels will be used at first to avoid the costs of building expensive infrastructure. Because encapsulated data is simply IP, any form of tunnel can be used in theory (IPSec, Wireguard, OpenVPN).%0a> %0a> %0a> In a world of parallel splinternets, the way to communicate with foreign networks is with NAT. Even IPv6 would need NAT%0a> %0a> If the world's major powers should go to war, national firewalls would be developed which will cause the Internet to splinter. Without ICANN coordinating IP address space, nations would likely end up with address collisions. Under such a scenario, even IPv6 would need NAT in order to communicate between splinternets.%0a> %0a> For example, if two nations claim the ownership of the IP address 2602:fccf:1::, the assumption that each IP address is globally unique will no longer hold true. There would be no way to relay messages between them without resorting to a gateway to translate the addresses, in other words, Network Address Translation.%0a
+host:1692724875=38.87.162.8
+author:1692724804=jrmu
+diff:1692724804:1692724789:=5c5,6%0a%3c # DNS assumes a single central root, but China and Russia have begun to create their own alternative roots%0a---%0a> # DNS assumes a single central root, but China and Russia have begun to%0a> create their own alternative roots%0a
+host:1692724804=38.87.162.8
+author:1692724789=jrmu
+diff:1692724789:1692724737:=1c1%0a%3c (:title The Internet is Dead, Long Live the Inter9:)%0a---%0a> (:The Internet is Dead, Long Live the Inter9:)%0a
+host:1692724789=38.87.162.8
+author:1692724737=jrmu
+diff:1692724737:1692724737:=1,102d0%0a%3c (:The Internet is Dead, Long Live the Inter9:)%0a%3c %0a%3c The Internet is fundamentally broken:%0a%3c %0a%3c # DNS assumes a single central root, but China and Russia have begun to%0a%3c create their own alternative roots%0a%3c # The default certificate authorities trusted by our operating systems and browsers have proven themselves untrustworthy. They are controlled by malicious corporations or government agents. These authorities are likely to get blacklisted along political boundaries during a major war%0a%3c # The official Internet standards bodies are no longer controlled by the its users. They are now controlled by corporations with no accountability. Many malicious standards are now being drafted and rubberstamped by these bodies.%0a%3c # The W3C is now effectively controlled by Silicon Valley, so that the web is becoming infected with DRM. For example, Google's WEI proposal would make web browsers uniquely identifiable, and may be used to discriminate against free software users.%0a%3c # National firewalls are being implemented everywhere%0a%3c # The Internet was designed to be a distributed network, but its network topology today resembles a centralized network%0a%3c # Average users can no longer participate as peers or equals on this internet. The upfront capital costs are too high.%0a%3c # Reviving old protocols is insufficient to protect the FOSS community when the entire foundation of the Internet (IP addressing, certificate authorities, and domain name system) are becoming closed and non-free%0a%3c %0a%3c In order to achieve a free internet, it is important for users to host their own servers from machines they control (ie, from home). However, self-hosting from home faces many serious obstacles to self hosting:%0a%3c %0a%3c # IPv4 addresses are becoming increasingly expensive%0a%3c # IPv6 addressing increases the learning curve and complexity%0a%3c # Most residential ISP users lack support for dual stack ipv4/ipv6 networking%0a%3c # It is very easy to geolocate an IP address, so that self-hosting offers zero privacy%0a%3c # Hosting servers puts users at risk of DDoS attacks, and DDoS protection is too expensive for most. This has chilling effects on free speech%0a%3c # Most residential ISPs do not provide static IP addresses, or may employ NAT%0a%3c # Dynamic DNS is difficult to set up properly%0a%3c # A lack of static rDNS make it impossible to host applications like IRC or email%0a%3c # Residential IPs are often blacklisted%0a%3c # Hosting servers is contractually forbidden by most ISPs, and can be grounds for termination if caught%0a%3c # Domain names are at risk of being seized by government%0a%3c https://www.bleepstatic.com/images/news/sites/z/z-library/new-seizure-notice.jpg%0a%3c %0a%3c There are parallels between the closing of the formerly open Internet and the closing of the formerly open UNIX system:%0a%3c %0a%3c [@%0a%3c History of UNIX%0a%3c ~1970 -- Unix is born%0a%3c ~1976 -- Sixth edition is released to the world, open source%0a%3c 1980s -- Unix licensing becomes more strict%0a%3c 1985 -- Source code taken away%0a%3c 1985 -- Minix, BSD try to create a free version of UNIX%0a%3c 1990 -- GNU almost finishes%0a%3c 1993 -- Linux succeeds, the world's first free operating system%0a%3c %0a%3c History of Internet%0a%3c 1969 -- BBN creates first ARPAnet%0a%3c ~1975 -- TCP/IP being designed%0a%3c ~1980 -- NSF takes over ARPAnet%0a%3c ~1990 -- Internet becomes open for commerce and to the public%0a%3c ~2000 -- Government begins to regulate Internet%0a%3c ~2024 -- Internet freedom is taken away%0a%3c ?FUTURE? -- Birth of inter9, the world's first free network%0a%3c @]%0a%3c %0a%3c [@%0a%3c Revive the old internet principles:%0a%3c %0a%3c low latency, low censorship, open for people on every system, universal accessibility%0a%3c open protocols, open implementations%0a%3c users control the standards, not corporate/government%0a%3c rough consensus and running code%0a%3c %0a%3c connect existing networks%0a%3c dn42, tor, gnunet, i2p, ipfs, torrents, matrix, xmpp, irc, fediverse, email, netnews%0a%3c %0a%3c Inter9: federated, distributed moderation%0a%3c %0a%3c Not centralized Internet%0a%3c Not anarchic darkweb%0a%3c %0a%3c Each node/server can control its own moderation%0a%3c Anyone should be able to join and participate, or run their own%0a%3c %0a%3c Gateways should be built to bridge incompatible networks together%0a%3c %0a%3c 9p is the universal protocol%0a%3c Write new systems programs in lua for faster development%0a%3c %0a%3c Towards a Global Inter9%0a%3c %0a%3c A new internet where anyone can write new applications and suggest new standards%0a%3c Like the original internet, the alternative should not be controlled by a single standards body. Instead, all users are invited to contribute to its creation. The principles should be like the old RFCs: rough consensus and running code.%0a%3c %0a%3c The network should be customizable and amenable to experimentation with new ideas.%0a%3c Vibrant ecosystem of applications developed by a network's users%0a%3c %0a%3c Although there have been many proposed overlay networks, the ones reported so far fail to uphold many of the same principles of the original Internet.%0a%3c %0a%3c The first goal is backwards compatibility. It is necessary to transparently support all existing networking applications that were originally written for the centralized internet, without any modifications.%0a%3c %0a%3c The network layer protocol must be IP with at most a few modifications. Internet Protocol is packet-switching which is important for routing around censorship nodes. However, this IP must be encapsulated and transported via tunnels to avoid censorship, and the nodes must be spread out globally across the world in multiple countries to allow for routing around national firewalls.%0a%3c %0a%3c Like the original ARPAnet, the design goals of this internet are low-latency and high bandwidth.%0a%3c %0a%3c Many existing overlay networks are connection-oriented and require the formation of circuits. This is a serious mistake because it makes it difficult to route around firewalls and censored nodes. Especially if there is censorship, the path taken to a destination may be obstructed sporadically. Dynamic routing of packets, namely packet-switching, is preferred. Moreover many of these overlay networks intentionally choose convoluted routing methods in order to improve anonymity. Unfortunately this has the effect of increasing latency and decreasing bandwidth, making them unsuitable for a general purpose alternative internet.%0a%3c %0a%3c VPN tunnels will be used at first to avoid the costs of building expensive infrastructure. Because encapsulated data is simply IP, any form of tunnel can be used in theory (IPSec, Wireguard, OpenVPN).%0a%3c %0a%3c %0a%3c In a world of parallel splinternets, the way to communicate with foreign networks is with NAT. Even IPv6 would need NAT%0a%3c %0a%3c If the world's major powers should go to war, national firewalls would be developed which will cause the Internet to splinter. Without ICANN coordinating IP address space, nations would likely end up with address collisions. Under such a scenario, even IPv6 would need NAT in order to communicate between splinternets.%0a%3c %0a%3c For example, if two nations claim the ownership of the IP address 2602:fccf:1::, the assumption that each IP address is globally unique will no longer hold true. There would be no way to relay messages between them without resorting to a gateway to translate the addresses, in other words, Network Address Translation.%0a%3c @]%0a
+host:1692724737=38.87.162.8
blob - /dev/null
blob + f3f23a904acbcc68806fe3de916a653253c0c022 (mode 644)
--- /dev/null
+++ wiki.d/9.Ssh
@@ -0,0 +1,18 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1634863472
+host=38.87.162.8
+name=9.Ssh
+rev=2
+targets=
+text=This will have nice large fonts:%0a%0a[@%0a; vt -rxbf /lib/font/lucidasans/typeunicode.16.font ssh username@domain.com%0a@]%0a
+time=1634864077
+author:1634864077=jrmu
+diff:1634864077:1634863472:=4c4%0a%3c ; vt -rxbf /lib/font/lucidasans/typeunicode.16.font ssh username@domain.com%0a---%0a> ; vt -rxbf typeunicode.16.font ssh username@domain.com%0a
+host:1634864077=38.87.162.8
+author:1634863472=jrmu
+diff:1634863472:1634863472:=1,5d0%0a%3c This will have nice large fonts:%0a%3c %0a%3c [@%0a%3c ; vt -rxbf typeunicode.16.font ssh username@domain.com%0a%3c @]%0a
+host:1634863472=38.87.162.8
blob - /dev/null
blob + 4d7bb0f8695075e66bc102f500bdd9381cf87c5a (mode 644)
--- /dev/null
+++ wiki.d/9.Stone
@@ -0,0 +1,30 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.15.2 Chrome/83.0.4103.122 Safari/537.36
+author=meeekeeef
+charset=UTF-8
+csum=
+ctime=1632312963
+host=198.251.81.133
+name=9.Stone
+rev=6
+targets=
+text=h[@%0avi/mg -> hold, ed, sam%0aemacs -> acme%0aZNC/BNC -> irc7, ircs%0airssi -> wircrc, irc7, ircs, ircrc%0aFFS -> hjfs, cwfs, fossil(+venti)%0aEggdrop -> ?%0angIRCd -> ?%0ahopm -> ?%0adoas -> auth/as%0asyspatch -> sysupdate%0antpd -> aux/timesync%0apf -> ipmux (NO)%0ahttpd -> rc-httpd, ip/httpd%0anc -> con, telnet%0aping -> ip/ping%0asmtpd, dovecot -> upas%0aubound, nsd -> ndb%0arelayd -> aux/trampoline?%0aPmWiki -> XXIIVV, werc, wikifs%0ahost, dig -> ndb/dnsquery%0agotweb -> shithub%0agot -> git9%0avmm -> vmx?%0adisklabel -> disk/prep?%0atcpdump -> snoop%0asftp/ftps -> ?%0asic -> ircrc%0aii -> ircfs, chatfs%0aacme-client -> acmed, rsa(8)%0apasswd -> passwd(1)?, auth/wrkey?, auth/changeuser%0a@]
+time=1636042159
+author:1636042159=meeekeeef
+diff:1636042159:1636042134:=31c31%0a%3c passwd -> passwd(1)?, auth/wrkey?, auth/changeuser%0a---%0a> passwd -> passwd(1)?, auth/wrkey?%0a
+host:1636042159=198.251.81.133
+author:1636042134=meeekeeef
+diff:1636042134:1632340480:=1,3c1,2%0a%3c h[@%0a%3c vi/mg -> hold, ed, sam%0a%3c emacs -> acme%0a---%0a> [@%0a> vi/mg -> hold, ed, sam, acme%0a8c7%0a%3c ngIRCd -> ?%0a---%0a> ngIRCd -> ircd???%0a13c12%0a%3c pf -> ipmux (NO)%0a---%0a> pf -> ?%0a15c14%0a%3c nc -> con, telnet%0a---%0a> nc -> con%0a19c18%0a%3c relayd -> aux/trampoline?%0a---%0a> relayd -> ?%0a21c20%0a%3c host, dig -> ndb/dnsquery%0a---%0a> host, dig -> ?%0a27a27%0a> tor -> ?(ported old version?)%0a
+host:1636042134=198.251.81.133
+author:1632340480=mkf
+diff:1632340480:1632313095:=31d30%0a%3c passwd -> passwd(1)?, auth/wrkey?%0a
+host:1632340480=198.251.81.133
+author:1632313095=mkf
+diff:1632313095:1632313030:=8,9c8%0a%3c hopm -> ?%0a%3c doas -> auth/as%0a---%0a> hopm -> ?doas -> auth/as%0a
+host:1632313095=198.251.81.133
+author:1632313030=mkf
+diff:1632313030:1632312963:minor=1d0%0a%3c [@%0a8c7,8%0a%3c hopm -> ?doas -> auth/as%0a---%0a> hopm -> ?%0a> doas -> auth/as%0a29,30c29%0a%3c acme-client -> acmed, rsa(8)%0a%3c @]%0a\ No newline at end of file%0a---%0a> acme-client -> acmed, rsa(8)%0a\ No newline at end of file%0a
+host:1632313030=198.251.81.133
+author:1632312963=mkf
+diff:1632312963:1632312963:=1,29d0%0a%3c vi/mg -> hold, ed, sam, acme%0a%3c ZNC/BNC -> irc7, ircs%0a%3c irssi -> wircrc, irc7, ircs, ircrc%0a%3c FFS -> hjfs, cwfs, fossil(+venti)%0a%3c Eggdrop -> ?%0a%3c ngIRCd -> ircd???%0a%3c hopm -> ?%0a%3c doas -> auth/as%0a%3c syspatch -> sysupdate%0a%3c ntpd -> aux/timesync%0a%3c pf -> ?%0a%3c httpd -> rc-httpd, ip/httpd%0a%3c nc -> con%0a%3c ping -> ip/ping%0a%3c smtpd, dovecot -> upas%0a%3c ubound, nsd -> ndb%0a%3c relayd -> ?%0a%3c PmWiki -> XXIIVV, werc, wikifs%0a%3c host, dig -> ?%0a%3c gotweb -> shithub%0a%3c got -> git9%0a%3c vmm -> vmx?%0a%3c disklabel -> disk/prep?%0a%3c tcpdump -> snoop%0a%3c sftp/ftps -> ?%0a%3c tor -> ?(ported old version?)%0a%3c sic -> ircrc%0a%3c ii -> ircfs, chatfs%0a%3c acme-client -> acmed, rsa(8)%0a\ No newline at end of file%0a
+host:1632312963=198.251.81.133
blob - /dev/null
blob + 63aec3c5a27c38035a7fd062600cb10b5b6278ec (mode 644)
--- /dev/null
+++ wiki.d/9.Sysupdate
@@ -0,0 +1,21 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.15.2 Chrome/83.0.4103.122 Safari/537.36
+author=meeekeeef
+charset=UTF-8
+csum=
+ctime=1634809662
+host=188.211.44.214
+name=9.Sysupdate
+rev=3
+targets=
+text=To update your system:%0a%0a[@%0a; webfs ; sysupdate ; cd /sys/src ; mk nuke ; mk all ; mk install%0a@]%0a%0aTo update kernel images after updating system:%0athis can't be done over drawterm.%0a%0a!! i386%0a[@%0a; cd /sys/src/9/pc ; mk install%0a@]%0a%0a!! amd64%0a[@%0a; cd /sys/src/9/pc64 ; mk install%0a@]%0a%0a
+time=1635718896
+author:1635718896=meeekeeef
+diff:1635718896:1635703478:=6,19d5%0a%3c %0a%3c To update kernel images after updating system:%0a%3c this can't be done over drawterm.%0a%3c %0a%3c !! i386%0a%3c [@%0a%3c ; cd /sys/src/9/pc ; mk install%0a%3c @]%0a%3c %0a%3c !! amd64%0a%3c [@%0a%3c ; cd /sys/src/9/pc64 ; mk install%0a%3c @]%0a%3c %0a
+host:1635718896=188.211.44.214
+author:1635703478=meeekeeef
+diff:1635703478:1634809662:=4c4%0a%3c ; webfs ; sysupdate ; cd /sys/src ; mk nuke ; mk all ; mk install%0a---%0a> ; sysupdate ; cd /sys/src ; mk nuke ; mk all ; mk install%0a
+host:1635703478=2.178.147.217
+author:1634809662=jrmu
+diff:1634809662:1634809662:=1,5d0%0a%3c To update your system:%0a%3c %0a%3c [@%0a%3c ; sysupdate ; cd /sys/src ; mk nuke ; mk all ; mk install%0a%3c @]%0a
+host:1634809662=38.87.162.8
blob - /dev/null
blob + 468a63fbb839accb8f65e463912e8b9c10cd17ca (mode 644)
--- /dev/null
+++ wiki.d/9.Todo,del-1638561149
@@ -0,0 +1,27 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:91.0) Gecko/20100101 Firefox/91.0
+author=mkf
+charset=UTF-8
+csum=
+ctime=1634547224
+host=2.178.175.74
+name=9.Todo
+rev=4
+targets=
+text=
+time=1638561136
+author:1638561136=mkf
+diff:1638561136:1634547395:=0a1,3%0a> * {- create 9.Cvsfs - mkf -}%0a> * find a way to send logs to fiche. - mkf%0a> * find out why tlssrv doesn't work on some ISPs - mkf%0a
+host:1638561136=2.178.175.74
+author:1634547395=mkf
+csum:1634547395=:(((
+diff:1634547395:1634547309:=1c1%0a%3c * {- create 9.Cvsfs - mkf -}%0a---%0a> { * create 9.Cvsfs }%0a
+host:1634547395=86.106.193.126
+author:1634547309=mkf
+csum:1634547309=:((
+diff:1634547309:1634547224:=1d0%0a%3c { * create 9.Cvsfs }%0a
+host:1634547309=86.106.193.126
+author:1634547224=mkf
+csum:1634547224=:(
+diff:1634547224:1634547224:=1,2d0%0a%3c * find a way to send logs to fiche. - mkf%0a%3c * find out why tlssrv doesn't work on some ISPs - mkf%0a
+host:1634547224=86.106.193.126
blob - /dev/null
blob + fdfef221cb3a6085a928f20f7d28acbd948d5c3f (mode 644)
--- /dev/null
+++ wiki.d/9.Why9
@@ -0,0 +1,37 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1692723422
+host=38.87.162.8
+name=9.Why9
+rev=8
+targets=Ircnow.Explorer
+text=(:title Why Plan 9:)%0a%0aToday's Linux/BSD systems are heavily controlled by corporate%0ainterests.  It is unlikely that these corporations will tolerate the%0aInter9's efforts to preserve user freedom on the Internet.  Moreover,%0athe Inter9's users will be unable to make any significant impact or%0acontribution to existing projects.  A new project is needed which is%0aspecifically chosen for the task of connecting together isolated%0anetworks.%0a%0aIn general, OpenBSD's goals do not match the Inter9's.  OpenBSD's%0acommunity is insular; it is not particularly friendly towards, nor%0ainterested in, outreach to newbies.  It is unlikely that newbie%0acontributions would get integrated into upstream.  It may not accept%0athe Inter9's goals of improving network equality and freedom.%0a%0aOpenBSD now receives the majority of its funding from large%0a[[https://www.openbsdfoundation.org/contributors.html|corporate contributors]].%0aAs of 2022, its top donors include Google, Meta, and%0aMicrosoft.  And unfortunately, it too is heavily dependent on Linux's%0acorporate ecosystem.  For example, efforts have been made to add%0a[[https://xenocara.org/Wayland_on_OpenBSD.html|wayland support]].%0a%0aMost Linux distros today suffer from the second system effect.%0aComponents such as Wayland and systemd are becoming too complex for%0aaverage users to understand and contribute to.  These are not merely%0atechnical concerns: many of these software projects have vowed%0ahostility towards user freedom.  Wayland is dangerous because its%0aparent organization, X.org Foundation, has called for a total boycott%0aof the Free Software Foundation.  It is signatory #61 in the%0a[[https://rms-open-letter.github.io/|RMS boycott petition]].  Red Hat%0ain particular has called for a%0a[[https://www.redhat.com/en/blog/red-hat-statement-about-richard-stallmans-return-free-software-foundation-board|complete boycott of the FSF]].%0aIf Wayland and systemd succeed, they will make it difficult to maintain%0aindependent UNIX systems (OpenBSD included) that are not dependent upon IBM%0aRed Hat's ecosystem.%0a%0aBesides corporate influence, political conflicts are likely to affect%0athe Linux ecosystem.  The Linux kernel itself is at risk of a%0apotential fork in the kernel itself due to%0a[[https://www.phoronix.com/news/Linux-STMAC-Russian-Sanctions|sanctions]].%0a%0aFor these reasons, the Inter9 community needs to have its own,%0aindependent system that it can work on, specifically tailored to its%0agoal of preserving democratic control of networks.  An independent%0aproject will best ensure the Inter9 can achieve its goals of user%0acontrol of the network.  Because the Inter9 is independently%0adeveloped, it can rely on funding from diverse sources to avoid the%0aharmful influences of corporate control.%0a%0a[[Ircnow/Explorer|Plan 9]] provides an elegant, easy-to-learn, and highly effective%0adevelopment environment for connecting together disparate networks.%0aIts small size (10 to 100x smaller than most unix-like distributions)%0amakes it easy to understand and modify the code. By design, Plan 9 is%0aa distributed operating system that offers network transparency. Its%0aideas are a logical extension of the Unix philosophy which helped%0apropel GNU/Linux to success.  Plan 9 will be used to build a new,%0afederated internet.%0a%0aA few principles will be adopted.  First, all users will be welcome,%0aincluding novices. Secondly, users will be treated as co-developers.%0aEvery user will be encouraged to code, and all contributions encouraged.%0aThe Inter9 will follow the%0a[[https://www.catb.org/~esr/writings/cathedral-bazaar/|bazaar model of development]].%0a%0aNew code for Plan 9 can be written in both C and Lua.  Lua provides a%0aminimalist, high-level language that does not suffer from heavy%0acorporate influence. It will allow rapid software development and%0aprovides a good alternative to python, javascript, rust, and go.  Use%0aof Lua is encouraged.%0a%0aAt first, the method to popularize Plan 9 is to install it inside%0aexisting operating systems like Linux and BSD.  This will allow users%0ato run 9 applications while still retaining their existing software.%0aThis will allow Plan 9 to immediately support all existing hardware.%0a%0aPlan 9 offers many alternatives for corporate components used by%0aLinux.  For example, rio presents a much simpler and more elegant%0aalternative to Wayland.  Rio's interface also presents a lower%0alearning curve than terminal user interface (TUI) applications.  acme%0ais a powerful text editor that fits the Unix philosophy.  It%0aeffectively replaces applications like vi and emacs that still rely on%0aobsolete teletype computing models.  This makes it easier for new%0adevelopers to learn to program for Plan 9.  Writing GUIs for unix-like%0awindowing toolkits is usually very complex, but rio makes it very%0asimple.  Unlike Wayland, Rio offers network transparency today.  It is%0aready to use with mice, trackpads, and touchscreens.  Its code base is%0afar smaller.  It provides a good alternative to the obsolete X%0aWindowing system.%0a
+time=1692983716
+title=Why Plan 9
+author:1692983716=jrmu
+diff:1692983716:1692983509:=33,36c33,36%0a%3c [[https://www.redhat.com/en/blog/red-hat-statement-about-richard-stallmans-return-free-software-foundation-board|complete boycott of the FSF]].%0a%3c If Wayland and systemd succeed, they will make it difficult to maintain%0a%3c independent UNIX systems (OpenBSD included) that are not dependent upon IBM%0a%3c Red Hat's ecosystem.%0a---%0a> [[https://www.redhat.com/en/blog/red-hat-statement-about-richard-stallmans-return-free-software-foundation-board|complete%0a> boycott of the FSF]].  If Wayland and systemd succeed, they will make%0a> it difficult to maintain independent UNIX systems (OpenBSD included)%0a> that are not dependent upon IBM Red Hat's ecosystem.%0a
+host:1692983716=38.87.162.8
+author:1692983509=jrmu
+diff:1692983509:1692844130:=18,19c18,19%0a%3c [[https://www.openbsdfoundation.org/contributors.html|corporate contributors]].%0a%3c As of 2022, its top donors include Google, Meta, and%0a---%0a> [[https://www.openbsdfoundation.org/contributors.html|corporate%0a> contributors]].  As of 2022, its top donors include Google, Meta, and%0a
+host:1692983509=38.87.162.8
+author:1692844130=jrmu
+diff:1692844130:1692844112:=64c64,65%0a%3c [[https://www.catb.org/~esr/writings/cathedral-bazaar/|bazaar model of development]].%0a---%0a> [[https://www.catb.org/~esr/writings/cathedral-bazaar/|bazaar model of%0a> development]].%0a
+host:1692844130=38.87.162.8
+author:1692844112=jrmu
+diff:1692844112:1692844088:=
+host:1692844112=38.87.162.8
+author:1692844088=jrmu
+diff:1692844088:1692841424:=3,39c3,18%0a%3c Today's Linux/BSD systems are heavily controlled by corporate%0a%3c interests.  It is unlikely that these corporations will tolerate the%0a%3c Inter9's efforts to preserve user freedom on the Internet.  Moreover,%0a%3c the Inter9's users will be unable to make any significant impact or%0a%3c contribution to existing projects.  A new project is needed which is%0a%3c specifically chosen for the task of connecting together isolated%0a%3c networks.%0a%3c %0a%3c In general, OpenBSD's goals do not match the Inter9's.  OpenBSD's%0a%3c community is insular; it is not particularly friendly towards, nor%0a%3c interested in, outreach to newbies.  It is unlikely that newbie%0a%3c contributions would get integrated into upstream.  It may not accept%0a%3c the Inter9's goals of improving network equality and freedom.%0a%3c %0a%3c OpenBSD now receives the majority of its funding from large%0a%3c [[https://www.openbsdfoundation.org/contributors.html|corporate%0a%3c contributors]].  As of 2022, its top donors include Google, Meta, and%0a%3c Microsoft.  And unfortunately, it too is heavily dependent on Linux's%0a%3c corporate ecosystem.  For example, efforts have been made to add%0a%3c [[https://xenocara.org/Wayland_on_OpenBSD.html|wayland support]].%0a%3c %0a%3c Most Linux distros today suffer from the second system effect.%0a%3c Components such as Wayland and systemd are becoming too complex for%0a%3c average users to understand and contribute to.  These are not merely%0a%3c technical concerns: many of these software projects have vowed%0a%3c hostility towards user freedom.  Wayland is dangerous because its%0a%3c parent organization, X.org Foundation, has called for a total boycott%0a%3c of the Free Software Foundation.  It is signatory #61 in the%0a%3c [[https://rms-open-letter.github.io/|RMS boycott petition]].  Red Hat%0a%3c in particular has called for a%0a%3c [[https://www.redhat.com/en/blog/red-hat-statement-about-richard-stallmans-return-free-software-foundation-board|complete%0a%3c boycott of the FSF]].  If Wayland and systemd succeed, they will make%0a%3c it difficult to maintain independent UNIX systems (OpenBSD included)%0a%3c that are not dependent upon IBM Red Hat's ecosystem.%0a%3c %0a%3c Besides corporate influence, political conflicts are likely to affect%0a%3c the Linux ecosystem.  The Linux kernel itself is at risk of a%0a---%0a> Today's Linux/BSD systems are heavily controlled by corporate interests. It%0a> is unlikely that these corporations will tolerate IRCNow's efforts to preserve%0a> user freedom on the Internet. Moreover, it is unlikely that IRCNow's users%0a> can make any significant impact or contribution there. A new project is%0a> needed which is specifically chosen for the task of connecting together%0a> isolated networks.%0a> %0a> In general, OpenBSD's goals do not match IRCNow's. Its community is very insular; it is not particularly friendly towards, nor interested in, outreach to newbies. It is unlikely our code contributions would get integrated into upstream. It may not accept our goals of improving network equality and freedom.%0a> %0a> It receives the majority of its funding from large corporate [[https://www.openbsdfoundation.org/contributors.html|contributors]]. As for 2022, its top donors include Google, Meta, and Microsoft.%0a> %0a> It is heavily dependent on the linux ecosystem. For example, efforts have been made to add [[https://xenocara.org/Wayland_on_OpenBSD.html|wayland support]].%0a> %0a> Most Linux distros today suffer from the second system effect:%0a> wayland, pulseaudio, and systemd. The systems are becoming too complex for%0a> average users to understand and contribute to. Moreover, there is a risk of a%0a41,48c20,33%0a%3c [[https://www.phoronix.com/news/Linux-STMAC-Russian-Sanctions|sanctions]].%0a%3c %0a%3c For these reasons, the Inter9 community needs to have its own,%0a%3c independent system that it can work on, specifically tailored to its%0a%3c goal of preserving democratic control of networks.  An independent%0a%3c project will best ensure the Inter9 can achieve its goals of user%0a%3c control of the network.  Because the Inter9 is independently%0a%3c developed, it can rely on funding from diverse sources to avoid the%0a---%0a> [[https://www.phoronix.com/news/Linux-STMAC-Russian-Sanctions|political%0a> divisions]].%0a> Wayland is dangerous because its parent organization, X.org Foundation, is an enemy of the Free Software Foundation. It is signatory #61 in the [[https://rms-open-letter.github.io/|RMS boycott petition]]. Therefore, Wayland's development team will likely be hostile to our goals. If Wayland succeeds, it will make it difficult to maintain independent UNIX systems (OpenBSD included) that are not dependent upon IBM Red Hat's ecosystem. Red Hat in particular has called for a [[https://www.redhat.com/en/blog/red-hat-statement-about-richard-stallmans-return-free-software-foundation-board|complete boycott of the FSF]].%0a> %0a> %0a> %0a> %0a> %0a> %0a> For these reasons, the IRCNow community needs to have its own, independent%0a> project that it can work on, specifically tailored to our issues of%0a> preserving democratic control of networks. An independent project will best%0a> assure IRCNow of being able to achieve its goals of user control of the%0a> network. This project can rely on funding from diverse sources to avoid the%0a51,90c36,82%0a%3c [[Ircnow/Explorer|Plan 9]] provides an elegant, easy-to-learn, and highly effective%0a%3c development environment for connecting together disparate networks.%0a%3c Its small size (10 to 100x smaller than most unix-like distributions)%0a%3c makes it easy to understand and modify the code. By design, Plan 9 is%0a%3c a distributed operating system that offers network transparency. Its%0a%3c ideas are a logical extension of the Unix philosophy which helped%0a%3c propel GNU/Linux to success.  Plan 9 will be used to build a new,%0a%3c federated internet.%0a%3c %0a%3c A few principles will be adopted.  First, all users will be welcome,%0a%3c including novices. Secondly, users will be treated as co-developers.%0a%3c Every user will be encouraged to code, and all contributions encouraged.%0a%3c The Inter9 will follow the%0a%3c [[https://www.catb.org/~esr/writings/cathedral-bazaar/|bazaar model of%0a%3c development]].%0a%3c %0a%3c New code for Plan 9 can be written in both C and Lua.  Lua provides a%0a%3c minimalist, high-level language that does not suffer from heavy%0a%3c corporate influence. It will allow rapid software development and%0a%3c provides a good alternative to python, javascript, rust, and go.  Use%0a%3c of Lua is encouraged.%0a%3c %0a%3c At first, the method to popularize Plan 9 is to install it inside%0a%3c existing operating systems like Linux and BSD.  This will allow users%0a%3c to run 9 applications while still retaining their existing software.%0a%3c This will allow Plan 9 to immediately support all existing hardware.%0a%3c %0a%3c Plan 9 offers many alternatives for corporate components used by%0a%3c Linux.  For example, rio presents a much simpler and more elegant%0a%3c alternative to Wayland.  Rio's interface also presents a lower%0a%3c learning curve than terminal user interface (TUI) applications.  acme%0a%3c is a powerful text editor that fits the Unix philosophy.  It%0a%3c effectively replaces applications like vi and emacs that still rely on%0a%3c obsolete teletype computing models.  This makes it easier for new%0a%3c developers to learn to program for Plan 9.  Writing GUIs for unix-like%0a%3c windowing toolkits is usually very complex, but rio makes it very%0a%3c simple.  Unlike Wayland, Rio offers network transparency today.  It is%0a%3c ready to use with mice, trackpads, and touchscreens.  Its code base is%0a%3c far smaller.  It provides a good alternative to the obsolete X%0a%3c Windowing system.%0a---%0a> A minimalist, highly efficient development environment for connecting%0a> together unix networks%0a> %0a> New code can be written in lua, which is a non-corporate controlled, high-level language that provides a good alternative to python, javascript, rust, and go.%0a>  Plan 9 represents a new system design that gives us a powerful tool our community can use to connect splintered networks.%0a> Plan 9 can be used to build a new, decentralized internet with federation%0a> %0a> The solution for popularizing plan 9 is not to install it on bare metal but to run it inside existing operating systems (especially unix) like inferno%0a> %0a> Hardware support can be added later but at first it can be run inside unix to immediately support all hardware%0a> %0a> %0a> A few principles will be adopted. First, all users will be welcome, including novices. Secondly, users will be treated as co-developers. Everyone will be encouraged to code, and where it does not harm system integrity and stability, contributions will be welcome.%0a> %0a> There may be a market for a p9 port that can provide rio to unix, as an alternative to Wayland (which is corporate controlled) and X11 (which is no longer maintained).%0a> Moreover, the interface has a much lower learning curve than TUI applications like vi and emacs. It will make it easier for new developers to learn, since the era of teletype/ncurses is over. Writing GUIs for existing windowing toolkits is very complex, but rio makes it very simple to write new GUIs that are powerful and follow the UNIX philosophy.%0a> %0a> https://xenocara.org/Wayland_on_OpenBSD.html%0a> %0a> Rio apps I think are written just by reading and writing to files%0a> Unlike Wayland, Rio offers network transparency today.%0a> It is ready to use with mice, trackpads, and touchscreens.%0a> The windowing system has a far smaller code base.%0a> %0a> The learning curve for rio much much smaller than X11, documentation is far more concise and the coding applications is much simpler.%0a> %0a> A new software development community is needed that provides full transparency when it comes to donations, where the funding sources can be decided by the users.%0a> %0a> In this new community, all users are invited to participate and contribute to its development. It deliberately chooses the bazaar development model to rapidly develop software.%0a> %0a> %0a> p9p already comes with acme and a windowing theme that resembles rio.%0a> %0a> Plan 9 has an elegant design with a very simplistic implementation that can be improved.%0a> %0a> X11 will be obsolete%0a> Rio was designed by the UNIX team%0a> %0a> https://upload.wikimedia.org/wikipedia/commons/9/98/Acme.png%0a> Acme is a powerful text editor, and writing new applications in rio is really easy%0a> If we keep p9p and work to add networking to it, we would not need to rewrite rc and acme%0a> %0a> New code can be a hybrid of C and lua for faster development for p9p%0a> Rio is a viable end-user interface replacement for wayland for advanced users.%0a> %0a> The internet itself is suffering from the second system effect IMO, tcp/2 (QUIC), http/3, maybe even ipv6%0a> %0a
+host:1692844088=38.87.162.8
+author:1692841424=jrmu
+diff:1692841424:1692723439:=3,38c3,13%0a%3c Today's Linux/BSD systems are heavily controlled by corporate interests. It%0a%3c is unlikely that these corporations will tolerate IRCNow's efforts to preserve%0a%3c user freedom on the Internet. Moreover, it is unlikely that IRCNow's users%0a%3c can make any significant impact or contribution there. A new project is%0a%3c needed which is specifically chosen for the task of connecting together%0a%3c isolated networks.%0a%3c %0a%3c In general, OpenBSD's goals do not match IRCNow's. Its community is very insular; it is not particularly friendly towards, nor interested in, outreach to newbies. It is unlikely our code contributions would get integrated into upstream. It may not accept our goals of improving network equality and freedom.%0a%3c %0a%3c It receives the majority of its funding from large corporate [[https://www.openbsdfoundation.org/contributors.html|contributors]]. As for 2022, its top donors include Google, Meta, and Microsoft.%0a%3c %0a%3c It is heavily dependent on the linux ecosystem. For example, efforts have been made to add [[https://xenocara.org/Wayland_on_OpenBSD.html|wayland support]].%0a%3c %0a%3c Most Linux distros today suffer from the second system effect:%0a%3c wayland, pulseaudio, and systemd. The systems are becoming too complex for%0a%3c average users to understand and contribute to. Moreover, there is a risk of a%0a%3c potential fork in the kernel itself due to%0a%3c [[https://www.phoronix.com/news/Linux-STMAC-Russian-Sanctions|political%0a%3c divisions]].%0a%3c Wayland is dangerous because its parent organization, X.org Foundation, is an enemy of the Free Software Foundation. It is signatory #61 in the [[https://rms-open-letter.github.io/|RMS boycott petition]]. Therefore, Wayland's development team will likely be hostile to our goals. If Wayland succeeds, it will make it difficult to maintain independent UNIX systems (OpenBSD included) that are not dependent upon IBM Red Hat's ecosystem. Red Hat in particular has called for a [[https://www.redhat.com/en/blog/red-hat-statement-about-richard-stallmans-return-free-software-foundation-board|complete boycott of the FSF]].%0a%3c %0a%3c %0a%3c %0a%3c %0a%3c %0a%3c %0a%3c For these reasons, the IRCNow community needs to have its own, independent%0a%3c project that it can work on, specifically tailored to our issues of%0a%3c preserving democratic control of networks. An independent project will best%0a%3c assure IRCNow of being able to achieve its goals of user control of the%0a%3c network. This project can rely on funding from diverse sources to avoid the%0a%3c harmful influences of corporate control.%0a%3c %0a%3c A minimalist, highly efficient development environment for connecting%0a%3c together unix networks%0a%3c %0a---%0a> [@%0a> https://www.openbsdfoundation.org/contributors.html%0a> Top donors are google, facebook, and microsoft%0a> %0a> It is better to have an independent project for the IRCNow community that relies on funding from diverse sources%0a> https://xenocara.org/Wayland_on_OpenBSD.html%0a> A minimalist, highly efficient development environment for connecting together unix networks%0a> If wayland succeeds, it will make it difficult to maintain independent distros (including OpenBSD) that are not dependent upon IBM Red Hat's ecosystem.%0a> %0a> https://www.redhat.com/en/blog/red-hat-statement-about-richard-stallmans-return-free-software-foundation-board%0a> %0a40c15,19%0a%3c  Plan 9 represents a new system design that gives us a powerful tool our community can use to connect splintered networks.%0a---%0a> %0a> https://rms-open-letter.github.io/%0a> Signatory #61: X.org Foundation%0a> %0a> X.org Foundation controls Wayland%0a47c26,33%0a%3c %0a---%0a> linux is suffering from the second system effect: wayland, pulseaudio, systemd, and a potential fork in its kernel%0a> The internet itself is suffering from the second system effect IMO, tcp/2 (QUIC), http/3, maybe even ipv6%0a> %0a> %0a> The OpenBSD community is an insular community, not particularly interested in outreach to newbies. Its goals do not match IRCNow's goals of providing equality and internet freedom to users.%0a> %0a> On the other hand, Linux is completely controlled by corporate interests and it is unlikely our community can make any significant impact or contribution there. Plan 9 represents a new system design that gives us a powerful tool our community can use to connect splintered networks.%0a> %0a80,82c66%0a%3c %0a%3c The internet itself is suffering from the second system effect IMO, tcp/2 (QUIC), http/3, maybe even ipv6%0a%3c %0a---%0a> @]%0a
+host:1692841424=38.87.162.8
+author:1692723439=jrmu
+diff:1692723439:1692723422:=
+host:1692723439=38.87.162.8
+author:1692723422=jrmu
+diff:1692723422:1692723422:=1,66d0%0a%3c (:title Why Plan 9:)%0a%3c %0a%3c [@%0a%3c https://www.openbsdfoundation.org/contributors.html%0a%3c Top donors are google, facebook, and microsoft%0a%3c %0a%3c It is better to have an independent project for the IRCNow community that relies on funding from diverse sources%0a%3c https://xenocara.org/Wayland_on_OpenBSD.html%0a%3c A minimalist, highly efficient development environment for connecting together unix networks%0a%3c If wayland succeeds, it will make it difficult to maintain independent distros (including OpenBSD) that are not dependent upon IBM Red Hat's ecosystem.%0a%3c %0a%3c https://www.redhat.com/en/blog/red-hat-statement-about-richard-stallmans-return-free-software-foundation-board%0a%3c %0a%3c New code can be written in lua, which is a non-corporate controlled, high-level language that provides a good alternative to python, javascript, rust, and go.%0a%3c %0a%3c https://rms-open-letter.github.io/%0a%3c Signatory #61: X.org Foundation%0a%3c %0a%3c X.org Foundation controls Wayland%0a%3c Plan 9 can be used to build a new, decentralized internet with federation%0a%3c %0a%3c The solution for popularizing plan 9 is not to install it on bare metal but to run it inside existing operating systems (especially unix) like inferno%0a%3c %0a%3c Hardware support can be added later but at first it can be run inside unix to immediately support all hardware%0a%3c %0a%3c linux is suffering from the second system effect: wayland, pulseaudio, systemd, and a potential fork in its kernel%0a%3c The internet itself is suffering from the second system effect IMO, tcp/2 (QUIC), http/3, maybe even ipv6%0a%3c %0a%3c %0a%3c The OpenBSD community is an insular community, not particularly interested in outreach to newbies. Its goals do not match IRCNow's goals of providing equality and internet freedom to users.%0a%3c %0a%3c On the other hand, Linux is completely controlled by corporate interests and it is unlikely our community can make any significant impact or contribution there. Plan 9 represents a new system design that gives us a powerful tool our community can use to connect splintered networks.%0a%3c %0a%3c A few principles will be adopted. First, all users will be welcome, including novices. Secondly, users will be treated as co-developers. Everyone will be encouraged to code, and where it does not harm system integrity and stability, contributions will be welcome.%0a%3c %0a%3c There may be a market for a p9 port that can provide rio to unix, as an alternative to Wayland (which is corporate controlled) and X11 (which is no longer maintained).%0a%3c Moreover, the interface has a much lower learning curve than TUI applications like vi and emacs. It will make it easier for new developers to learn, since the era of teletype/ncurses is over. Writing GUIs for existing windowing toolkits is very complex, but rio makes it very simple to write new GUIs that are powerful and follow the UNIX philosophy.%0a%3c %0a%3c https://xenocara.org/Wayland_on_OpenBSD.html%0a%3c %0a%3c Rio apps I think are written just by reading and writing to files%0a%3c Unlike Wayland, Rio offers network transparency today.%0a%3c It is ready to use with mice, trackpads, and touchscreens.%0a%3c The windowing system has a far smaller code base.%0a%3c %0a%3c The learning curve for rio much much smaller than X11, documentation is far more concise and the coding applications is much simpler.%0a%3c %0a%3c A new software development community is needed that provides full transparency when it comes to donations, where the funding sources can be decided by the users.%0a%3c %0a%3c In this new community, all users are invited to participate and contribute to its development. It deliberately chooses the bazaar development model to rapidly develop software.%0a%3c %0a%3c %0a%3c p9p already comes with acme and a windowing theme that resembles rio.%0a%3c %0a%3c Plan 9 has an elegant design with a very simplistic implementation that can be improved.%0a%3c %0a%3c X11 will be obsolete%0a%3c Rio was designed by the UNIX team%0a%3c %0a%3c https://upload.wikimedia.org/wikipedia/commons/9/98/Acme.png%0a%3c Acme is a powerful text editor, and writing new applications in rio is really easy%0a%3c If we keep p9p and work to add networking to it, we would not need to rewrite rc and acme%0a%3c %0a%3c New code can be a hybrid of C and lua for faster development for p9p%0a%3c Rio is a viable end-user interface replacement for wayland for advanced users.%0a%3c @]%0a
+host:1692723422=38.87.162.8
blob - /dev/null
blob + 56413505150b449f343b0687ac53ff7b27deb9fb (mode 644)
--- /dev/null
+++ wiki.d/9.Zuke,del-1636041668
@@ -0,0 +1,22 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.15.2 Chrome/83.0.4103.122 Safari/537.36
+author=meeekeeef
+charset=UTF-8
+csum=zuke is installed by default
+ctime=1635131635
+host=198.251.81.133
+name=9.Zuke
+rev=3
+targets=
+text='+Zuke is installed by default+'%0aFirst we need to install libtags:%0a%0a[@%0a; git/clone https://git.sr.ht/~ft/libtags%0a@]%0a%0a[@%0a; cd libtags/%0a; mk install%0a; cd ../%0a; 9fs 9front;%0a; cp /n/extra/zuke.tgz ./%0a; tar xvzf zuke.tgz%0a; cd zuke%0a; mk install%0a@]%0a%0a[@%0a%0a@]%0a
+time=1636041459
+author:1636041459=meeekeeef
+csum:1636041459=zuke is installed by default
+diff:1636041459:1635132774:=1d0%0a%3c '+Zuke is installed by default+'%0a
+host:1636041459=198.251.81.133
+author:1635132774=jrmu
+diff:1635132774:1635131635:=11,15d10%0a%3c ; 9fs 9front;%0a%3c ; cp /n/extra/zuke.tgz ./%0a%3c ; tar xvzf zuke.tgz%0a%3c ; cd zuke%0a%3c ; mk install%0a
+host:1635132774=38.87.162.8
+author:1635131635=jrmu
+diff:1635131635:1635131635:=1,15d0%0a%3c First we need to install libtags:%0a%3c %0a%3c [@%0a%3c ; git/clone https://git.sr.ht/~ft/libtags%0a%3c @]%0a%3c %0a%3c [@%0a%3c ; cd libtags/%0a%3c ; mk install%0a%3c ; cd ../%0a%3c @]%0a%3c %0a%3c [@%0a%3c %0a%3c @]%0a
+host:1635131635=38.87.162.8
blob - /dev/null
blob + 88697873f26168b444a855c755b1a58c20e82819 (mode 644)
--- /dev/null
+++ wiki.d/9C.Exits
@@ -0,0 +1,22 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.17.1
+author=mkf
+charset=UTF-8
+csum=
+ctime=1692186649
+host=198.251.81.133
+name=9C.Exits
+rev=3
+targets=
+text=Last we've learned how write a plan 9 C program, here are going to learn how to exit our program. suppose following program:%0a%0a[@%0a#include %3cu.h>%0a#include %3clibc.h>%0a%0avoid%0amain(void)%0a{%0a	print("Hello, world");%0a}%0a@]%0a%0aAfter running it?, what would be result of @@$status@@(aka @@$?@@ in unix)?%0a[@%0a; 8.out%0aHello, world; echo $status%0a8.out 1277638: main%0a@]%0a%0aas you can see, it's name of binary, followed by random number, that is PID (process ID) and where program has exited.%0a%0alet's write another program, which exits elsewhere, to do so we use @@exits()@@.%0a[@%0a#include %3cu.h>%0a#include %3clibc.h>%0a%0avoid%0afn(void)%0a{%0a	exits("Hello world!");%0a}%0a%0avoid%0amain(void)%0a{%0a	fn();%0a}%0a@]%0a%0aand run it:%0a[@%0aterm%25 8.out%0aterm%25 echo $status%0a8.out 1284312: Hello world!%0a@]%0a%0aRather than classic @@return@@ in main function, in plan 9 we use @@exits()@@, to terminate program.%0a%0aas an example use case, consider following program, try to understand what it does first, and afterwards read what it does:%0a[@%0a#include %3cu.h>%0a#include %3clibc.h>%0a%0avoid%0amain(void)%0a{%0a	char *arch;%0a	%0a	/* arch = $objtype */%0a	arch = getenv("objtype");%0a	if(arch == nil)%0a		exits("No such variable");%0a	else%0a		print("%25s", arch);%0a	exits(nil);%0a}%0a@]
+time=1702912237
+author:1702912237=mkf
+diff:1702912237:1702912004:minor=11a12%0a> %0a14c15%0a%3c After running it?, what would be result of @@$status@@(aka @@$?@@ in unix)?%0a---%0a> After running it?, what would be result of @@$status@@(aka @@$?@@)?%0a
+host:1702912237=198.251.81.133
+author:1702912004=mkf
+csum:1702912004=clear last example a bit
+diff:1702912004:1692186649:=59,63c59,60%0a%3c 	char *arch;%0a%3c 	%0a%3c 	/* arch = $objtype */%0a%3c 	arch = getenv("objtype");%0a%3c 	if(arch == nil)%0a---%0a> 	char* arch = getenv("objtype"); // arch=$objtype in rc%0a> 	if(arch == 0) // same with if(!arch)%0a68a66%0a> %0a
+host:1702912004=198.251.81.133
+author:1692186649=mkf
+diff:1692186649:1692186649:=1,67d0%0a%3c Last we've learned how write a plan 9 C program, here are going to learn how to exit our program. suppose following program:%0a%3c %0a%3c [@%0a%3c #include %3cu.h>%0a%3c #include %3clibc.h>%0a%3c %0a%3c void%0a%3c main(void)%0a%3c {%0a%3c 	print("Hello, world");%0a%3c }%0a%3c %0a%3c @]%0a%3c %0a%3c After running it?, what would be result of @@$status@@(aka @@$?@@)?%0a%3c [@%0a%3c ; 8.out%0a%3c Hello, world; echo $status%0a%3c 8.out 1277638: main%0a%3c @]%0a%3c %0a%3c as you can see, it's name of binary, followed by random number, that is PID (process ID) and where program has exited.%0a%3c %0a%3c let's write another program, which exits elsewhere, to do so we use @@exits()@@.%0a%3c [@%0a%3c #include %3cu.h>%0a%3c #include %3clibc.h>%0a%3c %0a%3c void%0a%3c fn(void)%0a%3c {%0a%3c 	exits("Hello world!");%0a%3c }%0a%3c %0a%3c void%0a%3c main(void)%0a%3c {%0a%3c 	fn();%0a%3c }%0a%3c @]%0a%3c %0a%3c and run it:%0a%3c [@%0a%3c term%25 8.out%0a%3c term%25 echo $status%0a%3c 8.out 1284312: Hello world!%0a%3c @]%0a%3c %0a%3c Rather than classic @@return@@ in main function, in plan 9 we use @@exits()@@, to terminate program.%0a%3c %0a%3c as an example use case, consider following program, try to understand what it does first, and afterwards read what it does:%0a%3c [@%0a%3c #include %3cu.h>%0a%3c #include %3clibc.h>%0a%3c %0a%3c void%0a%3c main(void)%0a%3c {%0a%3c 	char* arch = getenv("objtype"); // arch=$objtype in rc%0a%3c 	if(arch == 0) // same with if(!arch)%0a%3c 		exits("No such variable");%0a%3c 	else%0a%3c 		print("%25s", arch);%0a%3c 	exits(nil);%0a%3c }%0a%3c %0a%3c @]%0a\ No newline at end of file%0a
+host:1692186649=2.178.249.170
blob - /dev/null
blob + 719813b37f92325efd19ad05e5423a8af408044f (mode 644)
--- /dev/null
+++ wiki.d/9C.Intro
@@ -0,0 +1,16 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.15
+author=mkf
+charset=UTF-8
+csum=
+ctime=1692140240
+host=198.251.81.133
+name=9C.Intro
+rev=1
+targets=
+text=(:title Introduction to programming with Plan 9 C :)%0aHere is a basic hello world program in Plan 9 C dialect.%0a%0aPlan 9 C is based on regular plain old C%0a%0a[@%0a#include %3cu.h>%0a#include %3clibc.h>%0a%0avoid%0amain(void)%0a{%0a	print("Hello, world!");%0a}%0a%0a@]%0a%0aLet's take it apart, to see what each part does.%0a[@%0a#include %3cu.h>%0a#include %3clibc.h>%0a@]%0a%0aHeader files @@%3cu.h>@@ and @@%3clibc.h>@@ are most likely to be included with most Plan 9 C programs.%0a@@u.h@@ includes some non-standard (as in ANSI) often used data types, such as @@Rune@@ and @@uintptr@@, as well as some of bunch of machine dependent stuff.%0a%0a@@libc.h@@ on other hand is as it's name suggests, includes many basic functions such as @@strlen()@@ or @@print()@@%0a%0a[@%0avoid%0amain(void)%0a@]%0a%0aHere we define a function called @@main()@@, with return type @@void@@, which means there is no value needs to be returned. \\%0a%0aif you have already done C or C++ programming, you may have noticed instead @@int main()@@, we've used @@void main()@@.%0aIn Plan 9, we use string errors (aka errstr) rather than numerical return values for @@main()@@. which we will get into later.%0a%0a[@%0a{%0a	print("Hello, world!");%0a}%0a@]%0a%0aThis part is also know as body of function, includes what a function should do when it is called.%0aand, yes. that is @@print@@, not @@printf()@@. they are largely same however. \\%0a%0a%0aAnd we are ready to compile our first program, write it into a file and compile it.%0adepends on your machine architect, compiler and loader will differ, you may see your machine architect by:%0a[@%0a; echo $objtype%0a@]%0a%0amine is @@386@@, consult @@2c@@ manual page to see which compiler your machine has. for example @@8c@@ is for 386, @@6c@@ is for amd64 and @@5c@@ is for arm etc.%0a%0a(:if false:)%0atodo: add a table for arch  to compiler%0a(:ifend:)%0a[@%0a; 8c hello_world.c && 8l hello_world.8%0a; 8.out%0aHello, world!%0a@]%0a%0aCongrats, you've written your first C program in Plan 9
+time=1692140240
+title=Introduction to programming with Plan 9 C 
+author:1692140240=mkf
+diff:1692140240:1692140240:=1,66d0%0a%3c (:title Introduction to programming with Plan 9 C :)%0a%3c Here is a basic hello world program in Plan 9 C dialect.%0a%3c %0a%3c Plan 9 C is based on regular plain old C%0a%3c %0a%3c [@%0a%3c #include %3cu.h>%0a%3c #include %3clibc.h>%0a%3c %0a%3c void%0a%3c main(void)%0a%3c {%0a%3c 	print("Hello, world!");%0a%3c }%0a%3c %0a%3c @]%0a%3c %0a%3c Let's take it apart, to see what each part does.%0a%3c [@%0a%3c #include %3cu.h>%0a%3c #include %3clibc.h>%0a%3c @]%0a%3c %0a%3c Header files @@%3cu.h>@@ and @@%3clibc.h>@@ are most likely to be included with most Plan 9 C programs.%0a%3c @@u.h@@ includes some non-standard (as in ANSI) often used data types, such as @@Rune@@ and @@uintptr@@, as well as some of bunch of machine dependent stuff.%0a%3c %0a%3c @@libc.h@@ on other hand is as it's name suggests, includes many basic functions such as @@strlen()@@ or @@print()@@%0a%3c %0a%3c [@%0a%3c void%0a%3c main(void)%0a%3c @]%0a%3c %0a%3c Here we define a function called @@main()@@, with return type @@void@@, which means there is no value needs to be returned. \\%0a%3c %0a%3c if you have already done C or C++ programming, you may have noticed instead @@int main()@@, we've used @@void main()@@.%0a%3c In Plan 9, we use string errors (aka errstr) rather than numerical return values for @@main()@@. which we will get into later.%0a%3c %0a%3c [@%0a%3c {%0a%3c 	print("Hello, world!");%0a%3c }%0a%3c @]%0a%3c %0a%3c This part is also know as body of function, includes what a function should do when it is called.%0a%3c and, yes. that is @@print@@, not @@printf()@@. they are largely same however. \\%0a%3c %0a%3c %0a%3c And we are ready to compile our first program, write it into a file and compile it.%0a%3c depends on your machine architect, compiler and loader will differ, you may see your machine architect by:%0a%3c [@%0a%3c ; echo $objtype%0a%3c @]%0a%3c %0a%3c mine is @@386@@, consult @@2c@@ manual page to see which compiler your machine has. for example @@8c@@ is for 386, @@6c@@ is for amd64 and @@5c@@ is for arm etc.%0a%3c %0a%3c (:if false:)%0a%3c todo: add a table for arch  to compiler%0a%3c (:ifend:)%0a%3c [@%0a%3c ; 8c hello_world.c && 8l hello_world.8%0a%3c ; 8.out%0a%3c Hello, world!%0a%3c @]%0a%3c %0a%3c Congrats, you've written your first C program in Plan 9%0a\ No newline at end of file%0a
+host:1692140240=198.251.81.133
blob - /dev/null
blob + c9bbf26a0d59b6418005c7a4b5ded2a054c4cb8d (mode 644)
--- /dev/null
+++ wiki.d/9C.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.17.1
+charset=UTF-8
+ctime=1692140240
+host=198.251.81.133
+name=9C.RecentChanges
+rev=4
+text=* [[9C/Exits]]  . . . @2023-12-18T15:10:37Z by [[~mkf]]: [==]%0a* [[9C/Intro]]  . . . @2023-08-15T22:57:20Z by [[~mkf]]: [==]%0a
+time=1702912237
blob - /dev/null
blob + 63b2d3726d23c17f0b8a7c21d7d6ab93df23173b (mode 644)
--- /dev/null
+++ wiki.d/9front.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Linux; Android 8.1.0; vivo 1820 Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/109.0.5414.118 Mobile Safari/537.36
+charset=UTF-8
+ctime=1678072470
+host=114.125.26.255
+name=9front.RecentChanges
+rev=2
+text=* [[9front/Netsurf]]  . . . @2023-03-10T15:08:21Z by [[~Yonle]]: [==]%0a
+time=1678460901
blob - /dev/null
blob + 43730f6fd88b1e5829e3a2dc4c267668818cf023 (mode 644)
--- /dev/null
+++ wiki.d/About.AboutUs
@@ -0,0 +1,15 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
+author=zleap
+charset=UTF-8
+csum=
+ctime=1663094560
+host=2a00:23c6:9b14:3b01:3a28:1472:1021:9b6a
+name=About.AboutUs
+rev=1
+targets=
+text=Shell Laboratories: Help Brainstorm an Amateur Science Community%0a%0aShelllabs is about the home based science community,  undertaking citizen science or their own science experiments in home laboratories.%0a%0aAs a community we can learn from each other,   exchange ideas, experiences and also help others including the next generation develop a passion for independent science,  which can lead to new discoveries.%0a%0aMany of the great discoveries of the past have been made by people not working for major corporations,  these are the independent thinkers who pushed the boundaries and made important contributions to Science.%0a%0a%0ahttps://wiki.ircnow.org/index.php?n=Shelllabs.Intro
+time=1663094560
+author:1663094560=zleap
+diff:1663094560:1663094560:=1,10d0%0a%3c Shell Laboratories: Help Brainstorm an Amateur Science Community%0a%3c %0a%3c Shelllabs is about the home based science community,  undertaking citizen science or their own science experiments in home laboratories.%0a%3c %0a%3c As a community we can learn from each other,   exchange ideas, experiences and also help others including the next generation develop a passion for independent science,  which can lead to new discoveries.%0a%3c %0a%3c Many of the great discoveries of the past have been made by people not working for major corporations,  these are the independent thinkers who pushed the boundaries and made important contributions to Science.%0a%3c %0a%3c %0a%3c https://wiki.ircnow.org/index.php?n=Shelllabs.Intro%0a\ No newline at end of file%0a
+host:1663094560=2a00:23c6:9b14:3b01:3a28:1472:1021:9b6a
blob - /dev/null
blob + 41b02f18a40fcf4b44588423216d6404ac8fe2ff (mode 644)
--- /dev/null
+++ wiki.d/About.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
+charset=UTF-8
+ctime=1663094560
+host=2a00:23c6:9b14:3b01:3a28:1472:1021:9b6a
+name=About.RecentChanges
+rev=1
+text=* [[About/AboutUs]]  . . . September 13, 2022, at 06:42 PM by [[~zleap]]: [==]%0a
+time=1663094560
blob - /dev/null
blob + 1a5b5665cb91a0355ef4aa7857497f083a266f7f (mode 644)
--- /dev/null
+++ wiki.d/Abuse.Code
@@ -0,0 +1,99 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:82.0) Gecko/20100101 Firefox/82.0
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1615289353
+host=198.251.81.119
+name=Abuse.Code
+rev=29
+targets=
+text=Chat Penal Code%0a%0a# Users are allowed to have a trial by jury%0a# Accusations must be made and evidence provided in the form of logs, screenshots%0a# Users have a right to defend themselves%0a# No one should judge his own case%0a# Ops should not be judges%0a# No oath required%0a%0aPunishment must fit the crime%0a%0aPunishment may include:%0a%0a# probation periods,%0a# forced community service%0a# take away abusers' rights to connect to other networks%0a%0aPrinciples:%0a%0a# lighter punishments for first time offenders%0a# heavier punishments for repeat offenders%0a# provide libraries of correctional books like the Bible%0a# provide reformation work in chat prison%0a# pair them with a mentor%0a%0aForce abusers to work to teach them better habits.%0a%0aChat Felonies%0a%0a|| border=1 width=100%25 class="sortable simpletable"%0a||! Abuse ||! Punishment ||! Minimum Probation ||%0a|| Death Threats || Ban || 3 months community service ||%0a|| Swatting || Ban || Account Monitoring, Legal ID for Minimum of 2 Years ||%0a|| Doxing || Ban || 6 months community service ||%0a|| DDoS || Ban || 3 months community service ||%0a|| Hacking || Ban || 6 months community service ||%0a|| Spam attack || Ban || 3 months community service ||%0a|| Phishing || Ban || 6 months community service ||%0a|| Stalking || Ban || 6 months community service ||%0a|| Theft || Ban || 3 months community service plus fee ||%0a|| Pornography (minors) || Ban and Account Suspension || Account Monitoring, Legal ID for Minimum of 2 Years ||%0a|| Obscene content (minors) || Ban and Account Suspension || Account Monitoring, Legal ID for Minimum of 2 Years ||%0a|| Illegal drug dealing || Ban and Account Suspension || Account Monitoring, Legal ID for Minimum of 2 Years ||%0a%0aChat Misdemeanors%0a%0a|| border=1 width=100%25 class="sortable simpletable"%0a||! Abuse ||! Punishment ||! Probation ||%0a|| Pornography (no minors) || Warning, then Ban || 2 weeks community service ||%0a|| Obscene content (no minors) || Warning, then Ban || 2 weeks community service ||%0a|| Illegal drug use || Warning, then Ban || 2 weeks community service ||%0a|| Cloning || 2 Warnings, then Ban || 1 week community service or small fine ||%0a|| Ban evasion || 2 Warnings, then Ban || 1 week community service or small fine ||%0a|| Copyright Infringement || 2 Warnings, then Ban || 1 week community service or small fine ||%0a|| Gambling || 2 Warnings, then Ban || 1 week community service ||%0a|| Fee Evasion || 2 Warnings, then Ban || Small fine ||%0a%0aIRC penitentiaries to help reform hardened chat fiends
+time=1615304699
+author:1615304699=jrmu
+diff:1615304699:1615299288:=24d23%0a%3c # pair them with a mentor%0a
+host:1615304699=198.251.81.119
+author:1615299288=jrmu
+diff:1615299288:1615298415:=1,2d0%0a%3c Chat Penal Code%0a%3c %0a
+host:1615299288=198.251.81.119
+author:1615298415=jrmu
+diff:1615298415:1615298353:=20,21d19%0a%3c # provide libraries of correctional books like the Bible%0a%3c # provide reformation work in chat prison%0a
+host:1615298415=198.251.81.119
+author:1615298353=jrmu
+diff:1615298353:1615296214:=15,19d14%0a%3c %0a%3c Principles:%0a%3c %0a%3c # lighter punishments for first time offenders%0a%3c # heavier punishments for repeat offenders%0a
+host:1615298353=198.251.81.119
+author:1615296214=jrmu
+diff:1615296214:1615295935:=
+host:1615296214=125.231.66.28
+author:1615295935=jrmu
+diff:1615295935:1615295728:=3,7c3%0a%3c # Users have a right to defend themselves%0a%3c # No one should judge his own case%0a%3c # Ops should not be judges%0a%3c # No oath required%0a%3c %0a---%0a> %0a14a11%0a> #%0a
+host:1615295935=125.231.66.28
+author:1615295728=jrmu
+diff:1615295728:1615295707:=10c10%0a%3c # take away abusers' rights to connect to other networks%0a---%0a> # take away abusers' rights to visit other networks%0a
+host:1615295728=125.231.66.28
+author:1615295707=jrmu
+diff:1615295707:1615295284:=10,11d9%0a%3c # take away abusers' rights to visit other networks%0a%3c #%0a
+host:1615295707=125.231.66.28
+author:1615295284=jrmu
+diff:1615295284:1615295262:=11,14c11,14%0a%3c Force abusers to work to teach them better habits.%0a%3c %0a%3c Chat Felonies%0a%3c %0a---%0a> Force criminals to work to teach them better habits.%0a> %0a> Felonies%0a> %0a30c30%0a%3c Chat Misdemeanors%0a---%0a> Misdemeanors%0a
+host:1615295284=125.231.66.28
+author:1615295262=jrmu
+diff:1615295262:1615294590:=5d4%0a%3c %0a10,11d8%0a%3c %0a%3c Force criminals to work to teach them better habits.%0a
+host:1615295262=125.231.66.28
+author:1615294590=jrmu
+diff:1615294590:1615294122:=16,22c16,22%0a%3c || Doxing || Ban || 6 months community service ||%0a%3c || DDoS || Ban || 3 months community service ||%0a%3c || Hacking || Ban || 6 months community service ||%0a%3c || Spam attack || Ban || 3 months community service ||%0a%3c || Phishing || Ban || 6 months community service ||%0a%3c || Stalking || Ban || 6 months community service ||%0a%3c || Theft || Ban || 3 months community service plus fee ||%0a---%0a> || Doxing || || ||%0a> || DDoS || || ||%0a> || Hacking || || ||%0a> || Spam attack || || ||%0a> || Phishing || || ||%0a> || Stalking || || ||%0a> || Theft || || ||%0a24,25c24,25%0a%3c || Obscene content (minors) || Ban and Account Suspension || Account Monitoring, Legal ID for Minimum of 2 Years ||%0a%3c || Illegal drug dealing || Ban and Account Suspension || Account Monitoring, Legal ID for Minimum of 2 Years ||%0a---%0a> || Obscene content (minors) || || ||%0a> || Illegal drug dealing || || ||%0a
+host:1615294590=125.231.66.28
+author:1615294122=jrmu
+diff:1615294122:1615293813:=13,15c13,15%0a%3c ||! Abuse ||! Punishment ||! Minimum Probation ||%0a%3c || Death Threats || Ban || 3 months community service ||%0a%3c || Swatting || Ban || Account Monitoring, Legal ID for Minimum of 2 Years ||%0a---%0a> ||! Abuse ||! Punishment ||! Probation ||%0a> || Death Threats || || ||%0a> || Swatting || || ||%0a31,38c31,38%0a%3c || Pornography (no minors) || Warning, then Ban || 2 weeks community service ||%0a%3c || Obscene content (no minors) || Warning, then Ban || 2 weeks community service ||%0a%3c || Illegal drug use || Warning, then Ban || 2 weeks community service ||%0a%3c || Cloning || 2 Warnings, then Ban || 1 week community service or small fine ||%0a%3c || Ban evasion || 2 Warnings, then Ban || 1 week community service or small fine ||%0a%3c || Copyright Infringement || 2 Warnings, then Ban || 1 week community service or small fine ||%0a%3c || Gambling || 2 Warnings, then Ban || 1 week community service ||%0a%3c || Fee Evasion || 2 Warnings, then Ban || Small fine ||%0a---%0a> || Pornography (no minors) || || ||%0a> || Obscene content (no minors) || || ||%0a> || Illegal drug use || || ||%0a> || Cloning || || ||%0a> || Ban evasion || || ||%0a> || Copyright Infringement || || ||%0a> || Gambling || || ||%0a> || Fee Evasion || || ||%0a
+host:1615294122=125.231.66.28
+author:1615293813=jrmu
+diff:1615293813:1615292775:=23c23%0a%3c || Pornography (minors) || Ban and Account Suspension || Account Monitoring, Legal ID for Minimum of 2 Years ||%0a---%0a> || Pornography (minors) || || ||%0a
+host:1615293813=125.231.66.28
+author:1615292775=jrmu
+diff:1615292775:1615291051:=24d23%0a%3c || Obscene content (minors) || || ||%0a32c31%0a%3c || Obscene content (no minors) || || ||%0a---%0a> || Obscene content || || ||%0a
+host:1615292775=125.231.66.28
+author:1615291051=jrmu
+diff:1615291051:1615290987:=29d28%0a%3c ||! Abuse ||! Punishment ||! Probation ||%0a
+host:1615291051=198.251.81.119
+author:1615290987=jrmu
+diff:1615290987:1615290896:=36,38c36%0a%3c || Fee Evasion || || ||%0a%3c %0a%3c IRC penitentiaries to help reform hardened chat fiends%0a\ No newline at end of file%0a---%0a> || Fee Evasion || || ||%0a\ No newline at end of file%0a
+host:1615290987=198.251.81.119
+author:1615290896=jrmu
+diff:1615290896:1615290858:=28d27%0a%3c || border=1 width=100%25 class="sortable simpletable"%0a
+host:1615290896=198.251.81.119
+author:1615290858=jrmu
+diff:1615290858:1615290587:=21d20%0a%3c || Stalking || || ||%0a29d27%0a%3c || Obscene content || || ||%0a35d32%0a%3c || Fee Evasion || || ||%0a\ No newline at end of file%0a
+host:1615290858=198.251.81.119
+author:1615290587=jrmu
+diff:1615290587:1615290522:=20d19%0a%3c || Phishing || || ||%0a
+host:1615290587=198.251.81.119
+author:1615290522=jrmu
+diff:1615290522:1615290407:=21c21%0a%3c || Pornography (minors) || || ||%0a---%0a> || Pornography (minors present) || || ||%0a
+host:1615290522=198.251.81.119
+author:1615290407=jrmu
+diff:1615290407:1615290141:=21c21%0a%3c || Pornography (minors present) || || ||%0a---%0a> || Pornography || || ||%0a26d25%0a%3c || Pornography (no minors) || || ||%0a31c30%0a%3c || Gambling || || ||%0a---%0a> || Gambling || || ||%0a\ No newline at end of file%0a
+host:1615290407=198.251.81.119
+author:1615290141=jrmu
+diff:1615290141:1615290075:=21c21%0a%3c || Pornography || || ||%0a---%0a> || Child pornography || || ||%0a25a26%0a> || Pornography || || ||%0a
+host:1615290141=198.251.81.119
+author:1615290075=jrmu
+diff:1615290075:1615290060:=10,11c10,11%0a%3c Felonies%0a%3c %0a---%0a> IRC penitentiary%0a> %0a24c24%0a%3c Misdemeanors%0a---%0a> Misdemeanor%0a
+host:1615290075=198.251.81.119
+author:1615290060=jrmu
+diff:1615290060:1615289860:=17a18%0a> || Ban evasion || || ||%0a19d19%0a%3c || Spam attack || || ||%0a22,31c22%0a%3c || Illegal drug dealing || || ||%0a%3c %0a%3c Misdemeanor%0a%3c %0a%3c || Pornography || || ||%0a%3c || Illegal drug use || || ||%0a%3c || Cloning || || ||%0a%3c || Ban evasion || || ||%0a%3c || Copyright Infringement || || ||%0a%3c || Gambling || || ||%0a\ No newline at end of file%0a---%0a> || Pornography || || ||%0a\ No newline at end of file%0a
+host:1615290060=198.251.81.119
+author:1615289860=jrmu
+diff:1615289860:1615289817:=12,13c12%0a%3c || border=1 width=100%25 class="sortable simpletable"%0a%3c ||! Abuse ||! Punishment ||! Probation ||%0a---%0a> || Abuse || Punishment || Probation ||%0a
+host:1615289860=198.251.81.119
+author:1615289817=jrmu
+diff:1615289817:1615289656:=17,21c17%0a%3c || Ban evasion || || ||%0a%3c || Hacking || || ||%0a%3c || Theft || || ||%0a%3c || Child pornography || || ||%0a%3c || Pornography || || ||%0a\ No newline at end of file%0a---%0a> || Theft || || ||%0a\ No newline at end of file%0a
+host:1615289817=198.251.81.119
+author:1615289656=jrmu
+diff:1615289656:1615289377:=11,17d10%0a%3c %0a%3c || Abuse || Punishment || Probation ||%0a%3c || Death Threats || || ||%0a%3c || Swatting || || ||%0a%3c || Doxing || || ||%0a%3c || DDoS || || ||%0a%3c || Theft || || ||%0a\ No newline at end of file%0a
+host:1615289656=198.251.81.119
+author:1615289377=jrmu
+diff:1615289377:1615289353:=1,2c1,2%0a%3c # Users are allowed to have a trial by jury%0a%3c # Accusations must be made and evidence provided in the form of logs, screenshots%0a---%0a> Users are allowed to have a trial by jury%0a> Accusations must be made and evidence provided in the form of logs, screenshots%0a
+host:1615289377=198.251.81.119
+author:1615289353=jrmu
+diff:1615289353:1615289353:=1,10d0%0a%3c Users are allowed to have a trial by jury%0a%3c Accusations must be made and evidence provided in the form of logs, screenshots%0a%3c %0a%3c Punishment must fit the crime%0a%3c Punishment may include:%0a%3c %0a%3c # probation periods,%0a%3c # forced community service%0a%3c %0a%3c IRC penitentiary%0a
+host:1615289353=198.251.81.119
blob - /dev/null
blob + a7df8f05f8163c3708d9356f47ddeb3524e92bfa (mode 644)
--- /dev/null
+++ wiki.d/Abuse.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:82.0) Gecko/20100101 Firefox/82.0
+charset=UTF-8
+ctime=1615289353
+host=198.251.81.119
+name=Abuse.RecentChanges
+rev=29
+text=* [[Abuse/Code]]  . . . March 09, 2021, at 03:44 PM by [[~jrmu]]: [==]%0a
+time=1615304699
blob - /dev/null
blob + ee98ca8cd3233db00fcb7489ece6cdcdf25c83d9 (mode 644)
--- /dev/null
+++ wiki.d/Achurch.Install
@@ -0,0 +1,16 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:82.0) Gecko/20100101 Firefox/82.0
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1612974833
+host=198.251.81.119
+name=Achurch.Install
+rev=1
+targets=
+text=(:title IRC Services:)%0a%0aFor IRC services, IRCNow uses a forked version of [[http://achurch.org/services|achurch]].
+time=1612974833
+title=IRC Services
+author:1612974833=jrmu
+diff:1612974833:1612974833:=1,3d0%0a%3c (:title IRC Services:)%0a%3c %0a%3c For IRC services, IRCNow uses a forked version of [[http://achurch.org/services|achurch]].%0a\ No newline at end of file%0a
+host:1612974833=198.251.81.119
blob - /dev/null
blob + a98cdd0ac6e82e78de2293b75579f34fb8296c50 (mode 644)
--- /dev/null
+++ wiki.d/Achurch.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:82.0) Gecko/20100101 Firefox/82.0
+charset=UTF-8
+ctime=1612974833
+host=198.251.81.119
+name=Achurch.RecentChanges
+rev=1
+text=* [[Achurch/Install]]  . . . February 10, 2021, at 04:33 PM by [[~jrmu]]: [==]%0a
+time=1612974833
blob - /dev/null
blob + 4caa758ceec90fa65a663cd948a3f6113f7fd7d8 (mode 644)
--- /dev/null
+++ wiki.d/Acme-client.AutoRenew
@@ -0,0 +1,28 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; OpenBSD amd64; rv:68.0) Gecko/20100101 Firefox/68.0 SeaMonkey/2.53.11.1
+author=mkf
+charset=UTF-8
+csum=
+ctime=1656190137
+host=5.238.168.196
+name=Acme-client.AutoRenew
+rev=4
+targets=
+text=(:title Automating acme-client Renewal:)%0a%0a[[http://man.openbsd.org/acme-client.1|acme-client's man page]] provides a nice simple crontab entry for common usage.%0a%0aThe following is for a mail server running @@dovecot@@ and NO @@httpd@@. Though it's somewhat specific, it should be trivial to alter the script for one's own needs.%0a%0a%0a!! Shell script%0a%0aAs the use-case is not entirely trivial, we opted for a shell script. The output as it stands is fairly verbose, but again, this would be easy to tweak.%0aThis script is perhaps a little over-engineered and is open to improvement. It attempts to only do the necessary work and exit cleanly upon any error.%0a%0aCreate and edit @@/usr/local/bin/renew_cert@@ (or a filename of your choice - just remember to edit any later commands/files as necessary).%0aThe only essential change is to set @@%3cyour.domain>@@ appropriately.%0a%0a[@%0a#!/bin/ksh%0a%0a# Renew LetsEncrypt certificate(s) for the mail server domain(s)%0a# Returns%0a#   0: Success%0a#   1: Certificate up to date%0a#   2: Error%0a%0a# Print message to stdout or stderr%0a# Messages for stdout are marked [INFO], stderr are marked [ERROR]%0a# Expects%0a#   $1: 1|2 (stdout|stderr)%0a#   $2: Message text%0a# Silently fails if called badly%0aprint_msg() {%0a        if [ $# -ne 2 ]; then%0a                return%0a        fi%0a        if [ $1 == "stdout" ]; then%0a                outfd=1%0a                tag="[INFO]"%0a        elif [ $1 == "stderr" ]; then%0a                outfd=2%0a                tag="[ERROR]"%0a        else%0a                return%0a        fi%0a        msg=$2%0a        echo "${tag} ${msg}" >&$outfd%0a}%0a%0a# We need http server for acme-client to communicate with LetsEncrypt%0arcctl check httpd%0ahttpd_check=$?%0a%0a# Only start httpd if it's not already running%0aif [ $httpd_check -eq 1 ]; then%0a        print_msg stdout "Starting httpd"%0a        rcctl -f start httpd%0a        if [ $? -ne 0 ]; then%0a                print_msg stderr "Failed to start httpd"%0a                exit 2%0a        fi%0afi%0a%0a# Attempt to renew certificate%0aprint_msg "Renewing mail server certificate"%0aacme-client %3cyour.domain>%0aacme_check=$?%0a%0a# Only stop httpd if it was not already running%0aif [ $httpd_check -eq 1 ]; then%0a        print_msg stdout "Stopping httpd"%0a        rcctl stop httpd%0afi%0a%0aif [ $acme_check -eq 2 ]; then%0a        print_msg stdout "Certificate up to date"%0a        exit 1%0aelif [ $acme_check -eq 1 ]; then%0a        print_msg stderr "Failed to renew certificate"%0a        exit 2%0afi%0a%0aprint_msg stdout "Successfully renewed certificate"%0a%0a# Serve the new certificate%0aprint_msg stdout "Reloading dovecot"%0arcctl reload dovecot%0aif [ $? -gt 0 ]; then%0a        print_msg stderr "Failed to reload dovecot"%0a        exit 2%0afi%0a@]%0a%0a!!! Permissions%0a%0a@@#chmod 700 /usr/local/bin/renew_cert@@%0a%0a%0a!! cronjob%0a%0aLetsEncrypt will allow certificate renewal if the expiry is within 30 days. We us a simple cronjob to run our script fortnightly.%0a%0aOutput is piped to @@logger@@ to be written to the system log.%0a%0aWith your favourite text-editor (@@vim@@), create or append to @@/etc/weekly.local@@:%0a%0a[@%0atest 1 -eq $(($(date +\%25g) & 1)) && renew_cert | logger -t "[acme renewal]"%0a@]%0a%0aThe use of @@test@@ is because running this once every two weeks should be more than enough. The technique was found [[https://unix.stackexchange.com/a/197411 | here]] and seems reasonable.%0a%0aBy default @@logger@@ will likely output to @@/var/log/messages@@, but this can be confirmed by checking your @@/etc/syslog.conf@@.%0aYou may also direct @@logger@@ to output elsewhere; see @@-p@@ in [[http://man.openbsd.org/logger.1|logger's man page]].
+time=1656849017
+title=Automating acme-client Renewal
+author:1656849017=mkf
+diff:1656849017:1656190620:=3,7c3,7%0a%3c [[http://man.openbsd.org/acme-client.1|acme-client's man page]] provides a nice simple crontab entry for common usage.%0a%3c %0a%3c The following is for a mail server running @@dovecot@@ and NO @@httpd@@. Though it's somewhat specific, it should be trivial to alter the script for one's own needs.%0a%3c %0a%3c %0a---%0a> @@$ man acme-client@@ provides a nice simple crontab entry for common usage.%0a> %0a> The following is for a mail server running @@dovecot@@ and no @@httpd@@. Though it's somewhat specific, it should be trivial to alter the script for one's own needs.%0a> %0a> %0a112c112%0a%3c You may also direct @@logger@@ to output elsewhere; see @@-p@@ in [[http://man.openbsd.org/logger.1|logger's man page]].%0a\ No newline at end of file%0a---%0a> You may also direct @@logger@@ to output elsewhere; see @@-p@@ in @@$man logger@@.%0a\ No newline at end of file%0a
+host:1656849017=5.238.168.196
+author:1656190620=rahl
+csum:1656190620=mini disclaimer
+diff:1656190620:1656190237:minor=11d10%0a%3c This script is perhaps a little over-engineered and is open to improvement. It attempts to only do the necessary work and exit cleanly upon any error.%0a
+host:1656190620=102.114.210.144
+author:1656190237=rahl
+csum:1656190237=Fix formatting
+diff:1656190237:1656190137:minor=5c5%0a%3c The following is for a mail server running @@dovecot@@ and no @@httpd@@. Though it's somewhat specific, it should be trivial to alter the script for one's own needs.%0a---%0a> The following is for a mail server running `dovecot` and no @@httpd@@. Though it's somewhat specific, it should be trivial to alter the script for one's own needs.%0a
+host:1656190237=102.114.210.144
+author:1656190137=rahl
+csum:1656190137=Initial writeup
+diff:1656190137:1656190137:=1,111d0%0a%3c (:title Automating acme-client Renewal:)%0a%3c %0a%3c @@$ man acme-client@@ provides a nice simple crontab entry for common usage.%0a%3c %0a%3c The following is for a mail server running `dovecot` and no @@httpd@@. Though it's somewhat specific, it should be trivial to alter the script for one's own needs.%0a%3c %0a%3c %0a%3c !! Shell script%0a%3c %0a%3c As the use-case is not entirely trivial, we opted for a shell script. The output as it stands is fairly verbose, but again, this would be easy to tweak.%0a%3c %0a%3c Create and edit @@/usr/local/bin/renew_cert@@ (or a filename of your choice - just remember to edit any later commands/files as necessary).%0a%3c The only essential change is to set @@%3cyour.domain>@@ appropriately.%0a%3c %0a%3c [@%0a%3c #!/bin/ksh%0a%3c %0a%3c # Renew LetsEncrypt certificate(s) for the mail server domain(s)%0a%3c # Returns%0a%3c #   0: Success%0a%3c #   1: Certificate up to date%0a%3c #   2: Error%0a%3c %0a%3c # Print message to stdout or stderr%0a%3c # Messages for stdout are marked [INFO], stderr are marked [ERROR]%0a%3c # Expects%0a%3c #   $1: 1|2 (stdout|stderr)%0a%3c #   $2: Message text%0a%3c # Silently fails if called badly%0a%3c print_msg() {%0a%3c         if [ $# -ne 2 ]; then%0a%3c                 return%0a%3c         fi%0a%3c         if [ $1 == "stdout" ]; then%0a%3c                 outfd=1%0a%3c                 tag="[INFO]"%0a%3c         elif [ $1 == "stderr" ]; then%0a%3c                 outfd=2%0a%3c                 tag="[ERROR]"%0a%3c         else%0a%3c                 return%0a%3c         fi%0a%3c         msg=$2%0a%3c         echo "${tag} ${msg}" >&$outfd%0a%3c }%0a%3c %0a%3c # We need http server for acme-client to communicate with LetsEncrypt%0a%3c rcctl check httpd%0a%3c httpd_check=$?%0a%3c %0a%3c # Only start httpd if it's not already running%0a%3c if [ $httpd_check -eq 1 ]; then%0a%3c         print_msg stdout "Starting httpd"%0a%3c         rcctl -f start httpd%0a%3c         if [ $? -ne 0 ]; then%0a%3c                 print_msg stderr "Failed to start httpd"%0a%3c                 exit 2%0a%3c         fi%0a%3c fi%0a%3c %0a%3c # Attempt to renew certificate%0a%3c print_msg "Renewing mail server certificate"%0a%3c acme-client %3cyour.domain>%0a%3c acme_check=$?%0a%3c %0a%3c # Only stop httpd if it was not already running%0a%3c if [ $httpd_check -eq 1 ]; then%0a%3c         print_msg stdout "Stopping httpd"%0a%3c         rcctl stop httpd%0a%3c fi%0a%3c %0a%3c if [ $acme_check -eq 2 ]; then%0a%3c         print_msg stdout "Certificate up to date"%0a%3c         exit 1%0a%3c elif [ $acme_check -eq 1 ]; then%0a%3c         print_msg stderr "Failed to renew certificate"%0a%3c         exit 2%0a%3c fi%0a%3c %0a%3c print_msg stdout "Successfully renewed certificate"%0a%3c %0a%3c # Serve the new certificate%0a%3c print_msg stdout "Reloading dovecot"%0a%3c rcctl reload dovecot%0a%3c if [ $? -gt 0 ]; then%0a%3c         print_msg stderr "Failed to reload dovecot"%0a%3c         exit 2%0a%3c fi%0a%3c @]%0a%3c %0a%3c !!! Permissions%0a%3c %0a%3c @@#chmod 700 /usr/local/bin/renew_cert@@%0a%3c %0a%3c %0a%3c !! cronjob%0a%3c %0a%3c LetsEncrypt will allow certificate renewal if the expiry is within 30 days. We us a simple cronjob to run our script fortnightly.%0a%3c %0a%3c Output is piped to @@logger@@ to be written to the system log.%0a%3c %0a%3c With your favourite text-editor (@@vim@@), create or append to @@/etc/weekly.local@@:%0a%3c %0a%3c [@%0a%3c test 1 -eq $(($(date +\%25g) & 1)) && renew_cert | logger -t "[acme renewal]"%0a%3c @]%0a%3c %0a%3c The use of @@test@@ is because running this once every two weeks should be more than enough. The technique was found [[https://unix.stackexchange.com/a/197411 | here]] and seems reasonable.%0a%3c %0a%3c By default @@logger@@ will likely output to @@/var/log/messages@@, but this can be confirmed by checking your @@/etc/syslog.conf@@.%0a%3c You may also direct @@logger@@ to output elsewhere; see @@-p@@ in @@$man logger@@.%0a\ No newline at end of file%0a
+host:1656190137=102.114.210.144
blob - /dev/null
blob + bc135a6692697b69c0e8283b8f9784450889fc86 (mode 644)
--- /dev/null
+++ wiki.d/Acme-client.Configure
@@ -0,0 +1,255 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; Linux x86_64; OpenBSD amd64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/60.5 Safari/605.1.15
+author=saeed
+charset=UTF-8
+csum=
+ctime=1614076701
+host=104.167.242.150
+name=Acme-client.Configure
+rev=77
+targets=Tls.Intro,Openhttpd.Configure,Dns.Overview,Telnet.Http,Netcat.Http,Host.Usage,Dig.Usage,Tls.San,Relayd.Acceleration,Crontab.Edit,Nsd.Troubleshoot,Openssl.Http
+text=(:title Configuring Acme-client:)%0a%0aTo provide [[tls/intro|TLS encryption]], you will need to provide a TLS%0acertificate for your server. Although it is possible to self-sign your%0acertificates, many end-user clients will reject these certificates as being%0ainvalid. For this reason, it's recommended that you get a certificate signed by%0aa trusted certificate authority (CA). In this guide, we'll use OpenBSD's%0a[[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]] with Let's Encrypt.%0a%0a!! Before You Begin %0aThis guide assumes you have already properly configured and started%0a[[openhttpd/configure|openhttpd]]. You will also need properly functioning%0a[[dns/overview|DNS records]] for your hostname.%0aTo test if your web server is serving documents properly, use%0a[[telnet/http|telnet]] or [[netcat/http|netcat]].  To test DNS records, use%0a[[host/usage|host]] or [[dig/usage|dig]].%0a%0a'''Note''': You must have a server block in%0a[[https://man.openbsd.org/httpd.conf.5|@@httpd.conf@@(5)]] listening on port 80.%0aDo not delete this block or else acme-client will not work.%0a%0a!! Configuration%0aFirst, copy the%0a[[https://man.openbsd.org/acme-client.conf.5|@@acme-client.conf@@(5)]] template:%0a[@%0a$ doas cp /etc/examples/acme-client.conf /etc/acme-client.conf%0a@]%0a%0aWe'll edit @@/etc/acme-client.conf@@ and analyze the meaning of each block:%0a%0a!!! Authority blocks%0a[@%0aauthority letsencrypt {%0a        api url "https://acme-v02.api.letsencrypt.org/directory"%0a        account key "/etc/acme/letsencrypt-privkey.pem"%0a}%0a@]%0a%0aThis block defines the Certificate Authority%0a[[https://letsencrypt.org/|letsencrypt]]. It provides the API URL and the%0alocation of the account key.%0a%0a'''Note''': Let's Encrypt%0a[[https://letsencrypt.org/docs/rate-limits/|rate limits]] the number of%0acertificate signing requests you can make. If you encounter an error and are%0aunable to request a TLS cert, please fix all errors before requesting again.%0aIf you request too many certs in a short time, your domain will get blacklisted%0afor a few hours or a few days. To avoid this delay, use the authority%0a@@letsencrypt-staging@@ first and make sure you succeed with that before using%0athe authority @@letsencrypt@@.%0a%0aAlthough we are using Let's Encrypt for this tutorial, it is important to%0arealize that having the majority of all Internet servers depend upon a single%0aprovider is dangerous.  For this reason, it would be beneficial for our network%0ato someday run its own Certificate Authority. This can prevent censorship of%0adomains and other security issues.%0a[@%0aauthority letsencrypt-staging {%0a        api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a        account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a}%0a@]%0a%0a@@letsencrypt-staging@@ is a staging server which you can use to practice%0arequesting fake certificates. The rate limits for the staging server are less%0astrict, so you should practice first with this CA.%0a%0aFor both of these blocks, we will want to add our contact email, so we add%0a@@contact "mailto:me@example.com"@@ inside both blocks. (Make sure to include%0a@@mailto:@@):%0a[@%0aauthority letsencrypt {%0a        api url "https://acme-v02.api.letsencrypt.org/directory"%0a        account key "/etc/acme/letsencrypt-privkey.pem"%0a        contact "mailto:me@example.com"%0a}%0a%0aauthority letsencrypt-staging {%0a        api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a        account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a        contact "mailto:me@example.com"%0a}%0a@]%0a%0aNext, the default%0a[[https://man.openbsd.org/acme-client.conf.5|acme-client.conf(5)]] defines two%0amore authorities:%0a[@%0aauthority buypass {%0a        api url "https://api.buypass.com/acme/directory"%0a        account key "/etc/acme/buypass-privkey.pem"%0a        contact "mailto:me@example.com"%0a}%0a%0aauthority buypass-test {%0a        api url "https://api.test4.buypass.no/acme/directory"%0a        account key "/etc/acme/buypass-test-privkey.pem"%0a        contact "mailto:me@example.com"%0a}%0a@]%0a%0aThese two blocks are the same as for @@letsencrypt@@, but with the alternative%0aprovider [[https://buypass.com/|buypass]]. You can use @@buypass@@ to improve%0aCA diversity, or if you have issues with @@letsencrypt@@, such as rate-limits.%0aMake sure to replace the contact email with your own email.%0a%0a!!! Domain Block%0aNext, we define our domains which we will issue certificate signing requests%0afor:%0a[@%0adomain example.com {%0a        alternative names { secure.example.com }%0a        domain key "/etc/ssl/private/example.com.key"%0a        domain full chain certificate "/etc/ssl/example.com.crt"%0a        sign with letsencrypt%0a}%0a@]%0a%0aFirst, replace every appearance of @@example.com@@ with your own domain.%0a%0aEach TLS cert is valid for only for a single '''common name''' and a set of%0a'''alternative names''' that are provided on the certificate. In the default example, the%0aTLS certificate has the common name @@example.com@@ and the alternative%0aname @@secure.example.com@@. You could change the alternative name to%0a@@www.example.com@@ and @@mail.example.com@@. In this guide, we will comment out this line, since%0awe do not want to complicate the example with [[tls/san|Subject Alternative Names]].%0a%0a'''Warning''': While a handful of alternative names are fine, using too many%0aalternative names can cause%0a[[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]] to fail. We recommend%0akeeping the number of alternative names to 5 or fewer.%0a%0a'''Warning''': Having the @@alternative names@@ directive with nothing inside%0awill cause errors. The example below will cause errors:%0a[@%0a         alternative names { }%0a@]%0a%0aIf you don't need any alternative names, comment this line out by putting a #%0aat the beginning of the line, like so:%0a[@%0a#        alternative names { }%0a@]%0a%0a'''Note''': If you add an alternative name to the conf file, but the cert%0aalready exists, you must remove the old public cert first before requesting a%0anew one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will%0acomplain there is an unknown [[tls/san|Subject Alternative Name]].%0a%0aNext, the @@domain key@@ and @@domain full chain certificate@@ tell%0a[[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]] where to put the%0aprivate key and certificate:%0a[@%0a        domain key "/etc/ssl/private/example.com.key"%0a        domain full chain certificate "/etc/ssl/example.com.crt"%0a@]%0a%0a'''Note''': By default,%0a[[https://man.openbsd.org/acme-client.conf.5|@@acme-client.conf@@(5)]]%0auses the path @@/etc/ssl/example.com.fullchain.pem@@ for the full chain%0acertificate. Our guide, however, changes the path to%0a@@/etc/ssl/example.com.crt@@. We make this change because we later plan to use%0a[[relayd/acceleration|relayd]] to provide SSL acceleration, and%0a[[relayd/acceleration|relayd]] hard codes the paths it searches for the public%0aand private keypair. [[https://man.openbsd.org/relayd.8|@@relayd@@(8)]] will only%0asearch for public certificates that end in the @@.crt@@ suffix; it will ignore%0acertificates that end with the suffix @@.fullchain.pem@@.%0a%0aIn our configuration, the public key will go inside the folder @@/etc/ssl@@,%0aand the private key will go inside @@/etc/ssl/private@@.%0a%0aThe line @@sign with letsencrypt@@ line tells%0a[[https://man.openbsd.org/acme-client.1|acme-client(1)]] which Certificate%0aAuthority (which you defined in the authority blocks) to use.%0a%0aFor testing purposes, you may want to change it to @@letsencrypt-staging@@. You%0acan also consider using @@buypass@@ or @@buypass-test@@.%0a%0a'''Note''': staging or testing certificates are not recognized by most browsers%0aand will be rejected as an invalid certificate. After you finish testing with a%0astaging certificate, remember to change this line back to an accepted authority%0a(such as @@sign with letsencrypt@@)!%0a%0a!! Requesting Certificates%0aAfter you have finished configuring the conf file, we can request certificates:%0a[@%0a$ doas acme-client -Fv example.com%0a@]%0a%0aIf there are no errors, you should see something similar to the following output:%0a[@%0a$ doas acme-client -Fv example.com%0aacme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0aacme-client: /etc/acme/letsencrypt-privkey.pem: generated RSA account key%0aacme-client: https://acme-v02.api.letsencrypt.org/directory: directories%0aacme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248%0aacme-client: acme-v02.api.letsencrypt.org: DNS: 2606:4700:60:0:f53d:5624:85c7:3a2c%0aacme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/429811085347%0aacme-client: challenge, token: ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ, status: 0%0aacme-client: /var/www/acme/ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk: created%0aacme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ: challenge%0aacme-client: order.status 0%0aacme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/429811085347%0aacme-client: challenge, token: ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ, status: 0%0aacme-client: /var/www/acme/ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk: created%0aacme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ: challenge%0aacme-client: order.status 0%0aacme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/429811085347%0aacme-client: challenge, token: ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ, status: 2%0aacme-client: order.status 1%0aacme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/2055551047/322888040587: certificate%0aacme-client: order.status 3%0aacme-client: https://acme-v02.api.letsencrypt.org/acme/cert/04189299823525c8271ab890b189e381835a: certificate%0aacme-client: /etc/ssl/example.com.crt: created%0a@]%0a%0aThe last line says that the public certificate was generated. If you see that%0alast line, it's a success!%0a%0aYou now have two certificates, the public key inside%0a@@/etc/ssl/example.com.crt@@, and the private key inside%0a@@/etc/ssl/private/example.com.key@@:%0a[@%0a$ doas ls -l /etc/ssl/example.com.crt /etc/ssl/private/example.com.key%0a-r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/example.com.crt%0a-r--------  1 root  wheel  3272 Feb 25 02:10 /etc/ssl/private/example.com.key%0a@]%0a%0a!! Automation%0aLet's Encrypt TLS certs expire after 90 days, while Buypass certs expire after%0a180. For both, you must remember to request the TLS cert before expiration, or%0aTLS will stop validating properly. To avoid forgetting, we can automate the%0arequest process using [[crontab/edit|crontab]].%0a[@%0a$ doas crontab -e%0a@]%0a%0aAdd this line at the bottom:%0a[@%0a~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a@]%0a%0aThis cronjob will check the certificate once each day, at a random time of day,%0ato see if it needs to be renewed. If it does, it will renew the cert.%0a%0a!! Troubleshooting%0aIf acme-client fails, there are several possible causes:%0a%0a!!! Domain Not Listed%0aIf you add a new alternative name inside your domain block in%0a[[https://man.openbsd.org/acme-client.conf|acme-client.conf(5)]], you will see%0athis error:%0a[@%0aacme-client: /etc/ssl/example.com.crt: domain not listed: new.example.com%0a@]%0a%0aHere, @@new.example.com@@ was a new alternative name you added. The solution is%0ato move your old public cert and private key to a new location. This creates a%0abackup in case the next certificate signing request fails. Then, request a new%0acert again.%0a[@%0a$ doas mv /etc/ssl/example.com.crt /etc/ssl/example.com.crt.bak%0a$ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a$ doas acme-client -Fv example.com%0a@]%0a%0a!!! Missing Domain Records%0aIf you see an error message like the following, it's possible that your domain%0arecords are missing:%0a[@%0aacme-client: DNS problem: NXDOMAIN looking up A for example.com - check that a DNS record exists for this domain; DNS problem: NXDOMAIN looking up AAAA for example.com - check that a DNS record exists for this domain%0aacme-client: bad exit: netproc(58463): 1%0a@]%0a%0aAs mentioned earlier, it is important to test that your DNS records are set up%0aproperly by using [[host/usage|host]] or [[dig/usage|dig]] before running%0a[[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]]:%0a[@%0a$ host example.com%0aHost example.com not found: 3(NXDOMAIN)%0a@]%0a%0aAn @@NXDOMAIN@@ (Non-e'''X'''istent '''DOMAIN''') response indicates the DNS record is missing.%0a%0aProperly configured records should appear as follows:%0a[@%0aexample.com has address 93.184.216.34%0aexample.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a@]%0a%0aYou will either need to speak with your DNS provider or troubleshoot your%0aauthoritative nameserver, which on OpenBSD is usually [[nsd/troubleshoot|nsd]].%0aIf DNS records are missing or incorrect, fix these before continuing with%0a[[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]].%0a%0aThe IPv4 and IPv6 address must exactly match the IPs that%0a[[openhttpd/configure|OpenHTTPd]] is listening on. If they do not match, you%0amust fix this.%0a%0a'''Note''': You '''cannot''' request certificates for a domain that doesn't%0apoint to your server! The domain must point to an IP address your server%0acontrols.%0a%0aLastly, if your DNS record includes an IPv6 address, make sure your web server%0ais listening on IPv6. If the DNS record contains an IPv4 address, make sure%0ayour web server is listening on IPv4.%0a%0a!!! OpenHTTPd Misconfigured%0a[[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]] uses the%0a[[https://https://letsencrypt.org/docs/challenge-types/|http-01]] challenge. A%0afile is created with a special message in @@/var/www/acme/@@, and the%0acertificate authority requests that file using the URL%0a@@http://example.com/.well-known/acme-challenge/*@@).%0a%0aIf [[openhttpd/configure|openhttpd]] is not configured and running properly,%0aacme-client won't work.%0a%0aTo test if your web server is serving documents properly, use%0a[[telnet/http|telnet]] or [[netcat/http|netcat]]. Make sure to run%0a[[telnet/http|telnet]] and [[netcat/http|netcat]] on another computer that is%0anot the web server:%0a[@%0a$ telnet example.com 80%0a@]%0a%0aThen type these two lines:%0a[@%0aGET /index.html HTTP/1.1%0aHost: example.com%0a@]%0a%0aIf you do not get the correct response, double check your%0a[[openhttpd/configure|openhttpd configuration]].%0a%0a'''Note''': A web browser can also be used for testing, but check to make sure%0athat your web browser is not automatically enforcing SSL/TLS. The certificate%0aauthority will only check port 80 (plaintext), not port 443 (encrypted with%0aTLS).%0a%0a!!! Incorrect File Permissions%0a%0aDouble check @@/var/www@@ and @@/var/www/acme@@ to ensure they have correct%0afile permissions:%0a[@%0a$ ls -ld /var/www /var/www/acme%0adrwxr-xr-x  10 root  daemon  512 Oct  5 07:47 /var/www%0adrwxr-xr-x   2 root  daemon  512 Oct  5 07:47 /var/www/acme%0a@]%0a%0aSee Also:%0a|| border=1 width=100%25 class="sortable simpletable"%0a|| [[openhttpd/configure|Configure OpenHTTPd]] || Configure HTTPd ||%0a|| [[telnet/http|Telnet HTTP]] || Use Telnet to Troubleshoot HTTP ||%0a|| [[openssl/http|OpenSSL HTTP]] || Use OpenSSL to Troubleshoot HTTPS ||%0a
+time=1751719786
+title=Configuring Acme-client
+author:1751719786=saeed
+diff:1751719786:1751719727:=8,9c8,9%0a%3c [[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]] with Let's Encrypt.%0a%3c %0a---%0a> [[https://man.openbsd.org/acme-client.1|acme-client(1)]] with Let's Encrypt.%0a> %0a10a11%0a> %0a19c20%0a%3c [[https://man.openbsd.org/httpd.conf.5|@@httpd.conf@@(5)]] listening on port 80.%0a---%0a> [[https://man.openbsd.org/httpd.conf.5|httpd.conf(5)]] listening on port 80.%0a24c25%0a%3c [[https://man.openbsd.org/acme-client.conf.5|@@acme-client.conf@@(5)]] template:%0a---%0a> [[https://man.openbsd.org/acme-client.conf.5|acme-client.conf(5)]] template:%0a
+host:1751719786=104.167.242.150
+author:1751719727=saeed
+diff:1751719727:1731549475:=14a15%0a> %0a19c20%0a%3c '''Note''': You must have a server block in%0a---%0a> Note: You must have a server block in%0a23a25%0a> %0a25a28%0a> %0a32a36%0a> %0a45c49%0a%3c [[https://letsencrypt.org/docs/rate-limits/|rate limits]] the number of%0a---%0a> [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of%0a57a62%0a> %0a71a77%0a> %0a88a95%0a> %0a108a116%0a> %0a110a119%0a> %0a131c140%0a%3c [[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]] to fail. We recommend%0a---%0a> [[https://man.openbsd.org/acme-client.1|acme-client(1)]] to fail. We recommend%0a135a145%0a> %0a137c147%0a%3c          alternative names { }%0a---%0a> alternative names { }%0a141a152%0a> %0a152c163%0a%3c [[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]] where to put the%0a---%0a> [[https://man.openbsd.org/acme-client.1|acme-client(1)]] where to put the%0a153a165%0a> %0a160c172%0a%3c [[https://man.openbsd.org/acme-client.conf.5|@@acme-client.conf@@(5)]]%0a---%0a> [[https://man.openbsd.org/acme-client.conf.5|acme-client.conf(5)]]%0a166c178%0a%3c and private keypair. [[https://man.openbsd.org/relayd.8|@@relayd@@(8)]] will only%0a---%0a> and private keypair. [[https://man.openbsd.org/relayd.8|relayd(8)]] will only%0a185a198%0a> %0a186a200%0a> %0a191a206%0a> %0a223a239%0a> %0a230a247%0a> %0a234a252%0a> %0a239a258%0a> %0a247a267%0a> %0a250a271%0a> %0a253a275%0a>  %0a261a284%0a> %0a268a292%0a> %0a270a295%0a> %0a278c303,304%0a%3c [[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]]:%0a---%0a> [[https://man.openbsd.org/acme-client.1|acme-client(1)]]:%0a> %0a284,285c310,311%0a%3c An @@NXDOMAIN@@ (Non-e'''X'''istent '''DOMAIN''') response indicates the DNS record is missing.%0a%3c %0a---%0a> An NXDOMAIN (Non-eXistent DOMAIN) response indicates the DNS record is missing.%0a> %0a286a313%0a> %0a295,296c322,323%0a%3c [[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]].%0a%3c %0a---%0a> [[https://man.openbsd.org/acme-client.1|acme-client(1)]].%0a> %0a310c337,338%0a%3c [[https://man.openbsd.org/acme-client.1|@@acme-client@@(1)]] uses the%0a---%0a> %0a> [[https://man.openbsd.org/acme-client.1|acme-client(1)]] uses the%0a314,315c342,343%0a%3c @@http://example.com/.well-known/acme-challenge/*@@).%0a%3c %0a---%0a> @@http://example.com/.well-known/acme-challenge/*@@. )%0a> %0a322a351%0a> %0a327a357%0a> %0a344a375%0a> %0a351a383%0a> %0a
+host:1751719727=104.167.242.150
+author:1731549475=jrmu
+diff:1731549475:1731548898:=338,343d337%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]] uses the%0a%3c [[https://https://letsencrypt.org/docs/challenge-types/|http-01]] challenge. A%0a%3c file is created with a special message in @@/var/www/acme/@@, and the%0a%3c certificate authority requests that file using the URL%0a%3c @@http://example.com/.well-known/acme-challenge/*@@. )%0a%3c %0a345c339,341%0a%3c acme-client won't work.%0a---%0a> [[https://man.openbsd.org/acme-client.1|acme-client(1)]] won't work.%0a> %0a> (acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. )%0a
+host:1731549475=198.251.82.194
+author:1731548898=jrmu
+csum:1731548898=Clarify errors related to DNS records
+diff:1731548898:1731548539:=293,295c293,297%0a%3c If you see an error message like the following, it's possible that your domain%0a%3c records are missing:%0a%3c %0a---%0a> It's possible that your domain records are missing.  As mentioned earlier, it%0a> is important to test that your DNS records are set up properly by using%0a> [[host/usage|host]] or [[dig/usage|dig]] before running%0a> [[https://man.openbsd.org/acme-client.1|acme-client(1)]]:%0a> %0a297,298c299%0a%3c acme-client: DNS problem: NXDOMAIN looking up A for example.com - check that a DNS record exists for this domain; DNS problem: NXDOMAIN looking up AAAA for example.com - check that a DNS record exists for this domain%0a%3c acme-client: bad exit: netproc(58463): 1%0a---%0a> $ host example.com%0a301,304c302,303%0a%3c As mentioned earlier, it is important to test that your DNS records are set up%0a%3c properly by using [[host/usage|host]] or [[dig/usage|dig]] before running%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]]:%0a%3c %0a---%0a> You should see one or two records like the following:%0a> %0a306,307c305,306%0a%3c $ host example.com%0a%3c Host example.com not found: 3(NXDOMAIN)%0a---%0a> example.com has address 93.184.216.34%0a> example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a310,313c309,310%0a%3c An NXDOMAIN (Non-eXistent DOMAIN) response indicates the DNS record is missing.%0a%3c %0a%3c Properly configured records should appear as follows:%0a%3c %0a---%0a> If you have missing records, you will see this response:%0a> %0a315,316c312%0a%3c example.com has address 93.184.216.34%0a%3c example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a---%0a> Host example.com not found: 3(NXDOMAIN)%0a321,322c317%0a%3c If DNS records are missing or incorrect, fix these before continuing with%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]].%0a---%0a> If DNS records are missing or incorrect, fix these first.%0a
+host:1731548898=198.251.82.194
+author:1731548539=jrmu
+diff:1731548539:1731547855:=209d208%0a%3c acme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0a210a210%0a> acme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0a213,217c213,216%0a%3c acme-client: acme-v02.api.letsencrypt.org: DNS: 2606:4700:60:0:f53d:5624:85c7:3a2c%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/429811085347%0a%3c acme-client: challenge, token: ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ, status: 0%0a%3c acme-client: /var/www/acme/ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk: created%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ: challenge%0a---%0a> acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/11133258838%0a> acme-client: challenge, token: uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A, status: 0%0a> acme-client: /var/www/acme/uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs: created%0a> acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A: challenge%0a219,225c218,219%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/429811085347%0a%3c acme-client: challenge, token: ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ, status: 0%0a%3c acme-client: /var/www/acme/ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk: created%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ: challenge%0a%3c acme-client: order.status 0%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/429811085347%0a%3c acme-client: challenge, token: ORORKoTwrtvDrb3tfLusX4rbar1BlJALiVx5i-CtZXk, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/429811085347/Kca9eQ, status: 2%0a---%0a> acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/11133258838%0a> acme-client: challenge, token: uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A, status: 2%0a227c221%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/2055551047/322888040587: certificate%0a---%0a> acme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/113861127/8112730231: certificate%0a229c223%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/cert/04189299823525c8271ab890b189e381835a: certificate%0a---%0a> acme-client: https://acme-v02.api.letsencrypt.org/acme/cert/03f7fd846802cb0689c2bbd7b6f5e89eb66b: certificate%0a233,234c227%0a%3c The last line says that the public certificate was generated. If you see that%0a%3c last line, it's a success!%0a---%0a> The last line says that the public certificate was generated. If you see that, it's a success!%0a
+host:1731548539=198.251.82.194
+author:1731547855=jrmu
+diff:1731547855:1731482958:=194,195c194,195%0a%3c staging certificate, remember to change this line back to an accepted authority%0a%3c (such as @@sign with letsencrypt@@)!%0a---%0a> staging certificate, remember change this line back to an accepted authority%0a> (such as @@sign with letsencrypt@@).%0a
+host:1731547855=198.251.82.194
+author:1731482958=jrmu
+diff:1731482958:1731482046:=265,267c265%0a%3c If you add a new alternative name inside your domain block in%0a%3c [[https://man.openbsd.org/acme-client.conf|acme-client.conf(5)]], you will see%0a%3c this error:%0a---%0a> If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a273,277c271,272%0a%3c Here, @@new.example.com@@ was a new alternative name you added. The solution is%0a%3c to move your old public cert and private key to a new location. This creates a%0a%3c backup in case the next certificate signing request fails. Then, request a new%0a%3c cert again.%0a%3c %0a---%0a> Here, @@new.example.com@@ was a new alternative name you added. The solution is to move your old public cert and private key to a new location (to back it up). Then, request the cert again.%0a> %0a281d275%0a%3c $ doas acme-client -Fv example.com%0a283a278,283%0a> Then request the cert again:%0a> %0a> [@%0a> $ doas acme-client -Fv example.com%0a> @]%0a> %0a286,290c286,287%0a%3c It's possible that your domain records are missing.  As mentioned earlier, it%0a%3c is important to test that your DNS records are set up properly by using%0a%3c [[host/usage|host]] or [[dig/usage|dig]] before running%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]]:%0a%3c %0a---%0a> It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a> %0a308,323c305,312%0a%3c You will either need to speak with your DNS provider or troubleshoot your%0a%3c authoritative nameserver, which on OpenBSD is usually [[nsd/troubleshoot|nsd]].%0a%3c If DNS records are missing or incorrect, fix these first.%0a%3c %0a%3c The IPv4 and IPv6 address must exactly match the IPs that%0a%3c [[openhttpd/configure|OpenHTTPd]] is listening on. If they do not match, you%0a%3c must fix this.%0a%3c %0a%3c '''Note''': You '''cannot''' request certificates for a domain that doesn't%0a%3c point to your server! The domain must point to an IP address your server%0a%3c controls.%0a%3c %0a%3c Lastly, if your DNS record includes an IPv6 address, make sure your web server%0a%3c is listening on IPv6. If the DNS record contains an IPv4 address, make sure%0a%3c your web server is listening on IPv4.%0a%3c %0a---%0a> You will either need to speak with your DNS provider or troubleshoot [[nsd/troubleshoot|nsd]]. If DNS records are missing or incorrect, fix these first.%0a> %0a> The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. If they do not match, you must fix this.%0a> %0a> '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a> %0a> Lastly, if your DNS record includes an IPv6 address, make sure your web server is listening on IPv6. If the DNS record contains an IPv4 address, make sure your web server is listening on IPv4.%0a> %0a326,328c315,316%0a%3c If [[openhttpd/configure|openhttpd]] is not configured and running properly,%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]] won't work.%0a%3c %0a---%0a> If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a> %0a331,335c319,320%0a%3c To test if your web server is serving documents properly, use%0a%3c [[telnet/http|telnet]] or [[netcat/http|netcat]]. Make sure to run%0a%3c [[telnet/http|telnet]] and [[netcat/http|netcat]] on another computer that is%0a%3c not the web server:%0a%3c %0a---%0a> To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain) on another computer.%0a> %0a337a323,324%0a> GET /index.html HTTP/1.1%0a> Host: example.com%0a340,354c327,330%0a%3c Then type these two lines:%0a%3c %0a%3c [@%0a%3c GET /index.html HTTP/1.1%0a%3c Host: example.com%0a%3c @]%0a%3c %0a%3c If you do not get the correct response, double check your%0a%3c [[openhttpd/configure|openhttpd configuration]].%0a%3c %0a%3c '''Note''': A web browser can also be used for testing, but check to make sure%0a%3c that your web browser is not automatically enforcing SSL/TLS. The certificate%0a%3c authority will only check port 80 (plaintext), not port 443 (encrypted with%0a%3c TLS).%0a%3c %0a---%0a> If you do not get the correct response, double check your [[openhttpd/configure|openhttpd configuration]].%0a> %0a> '''Note''': Although a web browser can also be used for testing, many web browsers automatically forward all port 80 requests to port 443. As a result, your web browser will only see what is listening on port 443, whereas the certificate authority tests port 80 only.%0a> %0a357,358c333%0a%3c Double check @@/var/www@@ and @@/var/www/acme@@ to ensure they have correct%0a%3c file permissions:%0a---%0a> Double check @@/var/www@@ and @@/var/www/acme@@ for correct file permissions:%0a
+host:1731482958=198.251.82.194
+author:1731482046=jrmu
+diff:1731482046:1731469322:=75,77c75,76%0a%3c @@contact "mailto:me@example.com"@@ inside both blocks. (Make sure to include%0a%3c @@mailto:@@):%0a%3c %0a---%0a> @@contact "mailto:me@example.com"@@ inside both blocks. (Make sure to include @@mailto:@@):%0a> %0a139,142c138,140%0a%3c alternative names can cause%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]] to fail. We recommend%0a%3c keeping the number of alternative names to 5 or fewer.%0a%3c %0a---%0a> alternative names can cause acme-client's certificate request to fail. We%0a> recommend keeping the number of alternative names to under 5.%0a> %0a162,165c160,161%0a%3c Next, the @@domain key@@ and @@domain full chain certificate@@ tell%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]] where to put the%0a%3c private key and certificate:%0a%3c %0a---%0a> Next, the @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a> %0a171,196c167,174%0a%3c '''Note''': By default,%0a%3c [[https://man.openbsd.org/acme-client.conf.5|acme-client.conf(5)]]%0a%3c uses the path @@/etc/ssl/example.com.fullchain.pem@@ for the full chain%0a%3c certificate. Our guide, however, changes the path to%0a%3c @@/etc/ssl/example.com.crt@@. We make this change because we later plan to use%0a%3c [[relayd/acceleration|relayd]] to provide SSL acceleration, and%0a%3c [[relayd/acceleration|relayd]] hard codes the paths it searches for the public%0a%3c and private keypair. [[https://man.openbsd.org/relayd.8|relayd(8)]] will only%0a%3c search for public certificates that end in the @@.crt@@ suffix; it will ignore%0a%3c certificates that end with the suffix @@.fullchain.pem@@.%0a%3c %0a%3c In our configuration, the public key will go inside the folder @@/etc/ssl@@,%0a%3c and the private key will go inside @@/etc/ssl/private@@.%0a%3c %0a%3c The line @@sign with letsencrypt@@ line tells%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]] which Certificate%0a%3c Authority (which you defined in the authority blocks) to use.%0a%3c %0a%3c For testing purposes, you may want to change it to @@letsencrypt-staging@@. You%0a%3c can also consider using @@buypass@@ or @@buypass-test@@.%0a%3c %0a%3c '''Note''': staging or testing certificates are not recognized by most browsers%0a%3c and will be rejected as an invalid certificate. After you finish testing with a%0a%3c staging certificate, remember change this line back to an accepted authority%0a%3c (such as @@sign with letsencrypt@@).%0a%3c %0a---%0a> The public key goes inside the folder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a> %0a> The line @@sign with letsencrypt@@ line tells Acme-client which Certificate Authority (which you defined in the Authority Blocks) to use.%0a> %0a> For testing purposes, you may want to change it to @@letsencrypt-staging@@. You can also consider using @@buypass@@ or @@buypass-test@@.%0a> %0a> '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority (such as @@sign with letsencrypt@@).%0a> %0a229,232c207,208%0a%3c You now have two certificates, the public key inside%0a%3c @@/etc/ssl/example.com.crt@@, and the private key inside%0a%3c @@/etc/ssl/private/example.com.key@@:%0a%3c %0a---%0a> You now have two certificates, the public key inside @@/etc/ssl/example.com.crt@@, and the private key inside @@/etc/ssl/private/example.com.key@@:%0a> %0a241,245c217,218%0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after%0a%3c 180. For both, you must remember to request the TLS cert before expiration, or%0a%3c TLS will stop validating properly. To avoid forgetting, we can automate the%0a%3c request process using [[crontab/edit|crontab]].%0a%3c %0a---%0a> Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a> %0a256,257c229%0a%3c This cronjob will check the certificate once each day, at a random time of day,%0a%3c to see if it needs to be renewed. If it does, it will renew the cert.%0a---%0a> This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a
+host:1731482046=198.251.82.194
+author:1731469322=jrmu
+diff:1731469322:1731469126:=137,143c137,140%0a%3c '''Warning''': While a handful of alternative names are fine, using too many%0a%3c alternative names can cause acme-client's certificate request to fail. We%0a%3c recommend keeping the number of alternative names to under 5.%0a%3c %0a%3c '''Warning''': Having the @@alternative names@@ directive with nothing inside%0a%3c will cause errors. The example below will cause errors:%0a%3c %0a---%0a> If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, we recommend keeping the number of alternative names to under 5.%0a> %0a> '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. For example, the below will cause errors:%0a> %0a148,150c145,146%0a%3c If you don't need any alternative names, comment this line out by putting a #%0a%3c at the beginning of the line, like so:%0a%3c %0a---%0a> If you don't need any alternative names, you should comment this line out by putting a # at the beginning of the line, like so:%0a> %0a155,158c151%0a%3c '''Note''': If you add an alternative name to the conf file, but the cert%0a%3c already exists, you must remove the old public cert first before requesting a%0a%3c new one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will%0a%3c complain there is an unknown [[tls/san|Subject Alternative Name]].%0a---%0a> '''Note''': If you add an alternative name to the conf file, but the cert already exists, you must remove the old public cert first before requesting a new one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will complain there is an unknown '''Subject Alternative Name'''.%0a
+host:1731469322=198.251.82.194
+author:1731469126=jrmu
+diff:1731469126:1731468348:=74,76c74,75%0a%3c For both of these blocks, we will want to add our contact email, so we add%0a%3c @@contact "mailto:me@example.com"@@ inside both blocks. (Make sure to include @@mailto:@@):%0a%3c %0a---%0a> For both of these blocks, we will want to add our contact email, so we add @@contact "mailto:me@example.com"@@ inside both blocks. (Make sure to include @@mailto:@@):%0a> %0a116,118d114%0a%3c Next, we define our domains which we will issue certificate signing requests%0a%3c for:%0a%3c %0a130,135c126%0a%3c Each TLS cert is valid for only for a single '''common name''' and a set of%0a%3c '''alternative names''' that are provided on the certificate. In the default example, the%0a%3c TLS certificate has the common name @@example.com@@ and the alternative%0a%3c name @@secure.example.com@@. You could change the alternative name to%0a%3c @@www.example.com@@ and @@mail.example.com@@. In this guide, we will comment out this line, since%0a%3c we do not want to complicate the example with [[tls/san|Subject Alternative Names]].%0a---%0a> Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.com@@ and the alternative names @@www.example.com@@ and @@mail.example.com@@. You can safely skip this by commenting out this line (see warning below)%0a
+host:1731469126=198.251.82.194
+author:1731468348=jrmu
+diff:1731468348:1731467944:=26,28c26,27%0a%3c First, copy the%0a%3c [[https://man.openbsd.org/acme-client.conf.5|acme-client.conf(5)]] template:%0a%3c %0a---%0a> First, copy the [[https://man.openbsd.org/acme-client.conf|acme-client.conf]] template:%0a> %0a33,34c32,33%0a%3c We'll edit @@/etc/acme-client.conf@@ and analyze the meaning of each block:%0a%3c %0a---%0a> We'll open up [@ /etc/acme-client.conf @] and analyze the meaning of each block:%0a> %0a44,62c43,48%0a%3c This block defines the Certificate Authority%0a%3c [[https://letsencrypt.org/|letsencrypt]]. It provides the API URL and the%0a%3c location of the account key.%0a%3c %0a%3c '''Note''': Let's Encrypt%0a%3c [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of%0a%3c certificate signing requests you can make. If you encounter an error and are%0a%3c unable to request a TLS cert, please fix all errors before requesting again.%0a%3c If you request too many certs in a short time, your domain will get blacklisted%0a%3c for a few hours or a few days. To avoid this delay, use the authority%0a%3c @@letsencrypt-staging@@ first and make sure you succeed with that before using%0a%3c the authority @@letsencrypt@@.%0a%3c %0a%3c Although we are using Let's Encrypt for this tutorial, it is important to%0a%3c realize that having the majority of all Internet servers depend upon a single%0a%3c provider is dangerous.  For this reason, it would be beneficial for our network%0a%3c to someday run its own Certificate Authority. This can prevent censorship of%0a%3c domains and other security issues.%0a%3c %0a---%0a> This defines the Certificate Authority [[https://letsencrypt.org/|letsencrypt]]. It provides the API URL and the location of the account key.%0a> %0a> '''Note''': Let's Encrypt [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of SSL certs you can request. If you encounter an error and are unable to request an SSL cert, please fix all errors before requesting again. If you request too many certs in a short time, your domain will get blacklisted for a few hours or days. To avoid issues, use letsencrypt-staging first and make sure you get success with that before using letsencrypt.%0a> %0a> Although we are using Let's Encrypt for this tutorial, it is important to note that having the majority of servers depend upon a single provider is dangerous. For this reason, it would be beneficial to someday have the community run its own Certificate Authority to avoid censorship of domains or other security issues.%0a> %0a70,75c56,59%0a%3c @@letsencrypt-staging@@ is a staging server which you can use to practice%0a%3c requesting fake certificates. The rate limits for the staging server are less%0a%3c strict, so you should practice first with this CA.%0a%3c %0a%3c For both of these blocks, we will want to add our contact email, so we add @@contact "mailto:me@example.com"@@ inside both blocks. (Make sure to include @@mailto:@@):%0a%3c %0a---%0a> letsencrypt-staging is a staging server which you can use to practice requesting fake certificates. The rate limits for the staging server are less strict, so you should practice first with this CA.%0a> %0a> To both of these blocks, we will want to add our contact email, so we add [@contact "mailto:me@example.com" @] inside both blocks. (make sure to have the @@mailto:@@):%0a> %0a90,93c74,75%0a%3c Next, the default%0a%3c [[https://man.openbsd.org/acme-client.conf.5|acme-client.conf(5)]] defines two%0a%3c more authorities:%0a%3c %0a---%0a> Next, the default [[https://man.openbsd.org/acme-client.conf|acme-client.conf]] defines two more authorities:%0a> %0a108,111c90%0a%3c These two blocks are the same as for @@letsencrypt@@, but with the alternative%0a%3c provider [[https://buypass.com/|buypass]]. You can use @@buypass@@ to improve%0a%3c CA diversity, or if you have issues with @@letsencrypt@@, such as rate-limits.%0a%3c Make sure to replace the contact email with your own email.%0a---%0a> These two blocks are the same as for letsencrypt, but with the alternative provider [[https://buypass.com/|buypass]]. Make sure to replace the contact email with your own email.%0a
+host:1731468348=198.251.82.194
+author:1731467944=jrmu
+diff:1731467944:1731467796:=21c21%0a%3c [[https://man.openbsd.org/httpd.conf.5|httpd.conf(5)]] listening on port 80.%0a---%0a> [[https://man.openbsd.org/httpd.conf.5|/etc/httpd.conf]] listening on port 80.%0a
+host:1731467944=198.251.82.194
+author:1731467796=jrmu
+csum:1731467796=Clarify how to test DNS/HTTP, and also moved overview into separate article
+diff:1731467796:1731466737:=3,7c3,4%0a%3c To provide [[tls/intro|TLS encryption]], you will need to provide a TLS%0a%3c certificate for your server. Although it is possible to self-sign your%0a%3c certificates, many end-user clients will reject these certificates as being%0a%3c invalid. For this reason, it's recommended that you get a certificate signed by%0a%3c a trusted certificate authority (CA). In this guide, we'll use OpenBSD's%0a---%0a> To enable TLS, you will want a certificate signed by a trusted certificate%0a> authority (CA). In this guide, we'll use OpenBSD's%0a10,22c7,19%0a%3c !! Before You Begin %0a%3c %0a%3c This guide assumes you have already properly configured and started%0a%3c [[openhttpd/configure|openhttpd]]. You will also need properly functioning%0a%3c [[dns/overview|DNS records]] for your hostname.%0a%3c %0a%3c To test if your web server is serving documents properly, use%0a%3c [[telnet/http|telnet]] or [[netcat/http|netcat]].  To test DNS records, use%0a%3c [[host/usage|host]] or [[dig/usage|dig]].%0a%3c %0a%3c Note: You must have a server block in%0a%3c [[https://man.openbsd.org/httpd.conf.5|/etc/httpd.conf]] listening on port 80.%0a%3c Do not delete this block or else acme-client will not work.%0a---%0a> !! Overview%0a> %0a> TLS (Transport Layer Security) aka SSL (Secure Sockets Layer) is the encryption security measure that enables browsers to recognize a website as "secure". In modern browsers the SSL information can be accessed by clicking the padlock icon in the address bar. %0a> %0a> SSL certificates are obtained from CAs (Certificate Authorities). Currently, the only free CAs are [[https://letsencrypt.org/getting-started/ | Lets Encrypt]], [[https://www.buypass.com/ssl/products/acme | Buypass]] and [[https://zerossl.com/ | ZeroSSL]]. You can request an SSL cert for your web domain using an Automatic Certificate Management Environment (ACME) client such as OpenBSD's Acme-client, which we will configure in this article.%0a> %0a> !!! Before You Begin %0a> %0a> You will first need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need properly functioning [[dns/overview|DNS records]] for your hostname (@@username.example.com@@). If you are using a training vps, it is likely that DNS records for your hostname have already been set up for you.%0a> %0a> You can and should test the two configurations using [[host/usage|host]] and [[netcat/http|netcat]].%0a> %0a> Note: You must have a server block in [[https://man.openbsd.org/httpd.conf|/etc/httpd.conf]] listening on port 80. Do not delete this block or else acme-client will not work.%0a
+host:1731467796=198.251.82.194
+author:1731466737=jrmu
+diff:1731466737:1677449211:=3,5c3%0a%3c To enable TLS, you will want a certificate signed by a trusted certificate%0a%3c authority (CA). In this guide, we'll use OpenBSD's%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]] with Let's Encrypt.%0a---%0a> To enable TLS, you will want a certificate signed by a trusted certificate authority (CA). In this guide, we'll use OpenBSD's [[https://man.openbsd.org/acme-client|acme-client]] with Let's Encrypt.%0a
+host:1731466737=198.251.82.194
+author:1677449211=jrmu
+csum:1677449211=Revert as I'm not sure if /etc/daily.local is better
+diff:1677449211:1676040598:=175,176c175,176%0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a%3c %0a---%0a> Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]] by writing script at @@/etc/daily.local@@%0a> %0a178c178%0a%3c $ doas crontab -e%0a---%0a> $ nano /etc/daily.local%0a181,182c181,182%0a%3c Add this line at the bottom:%0a%3c %0a---%0a> Add this code at the script file:%0a> %0a184c184,186%0a%3c ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a---%0a> #!/bin/ksh%0a> %0a> acme-client -v example.com >> /var/log/acme-client.log 2>&1%0a187c189,190%0a%3c This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a---%0a> %0a> This cronjob script will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a
+host:1677449211=38.87.162.8
+author:1676040598=Yonle
+diff:1676040598:1676040568:=186c186%0a%3c acme-client -v example.com >> /var/log/acme-client.log 2>&1%0a---%0a> acme-client example.com >> /var/log/acme-client.log 2>&1%0a
+host:1676040598=114.125.5.157
+author:1676040568=Yonle
+diff:1676040568:1676040479:=181c181%0a%3c Add this code at the script file:%0a---%0a> Add this line at the script file:%0a
+host:1676040568=114.125.5.157
+author:1676040479=Yonle
+csum:1676040479=Use /etc/daily.local
+diff:1676040479:1655193716:=175,176c175,176%0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]] by writing script at @@/etc/daily.local@@%0a%3c %0a---%0a> Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a> %0a178c178%0a%3c $ nano /etc/daily.local%0a---%0a> $ doas crontab -e%0a181,182c181,182%0a%3c Add this line at the script file:%0a%3c %0a---%0a> Add this line at the bottom:%0a> %0a184,186c184%0a%3c #!/bin/ksh%0a%3c %0a%3c acme-client example.com >> /var/log/acme-client.log 2>&1%0a---%0a> ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a189,190c187%0a%3c %0a%3c This cronjob script will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a---%0a> This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a
+host:1676040479=114.125.5.157
+author:1655193716=jrmu
+diff:1655193716:1655192828:=173,176c173,180%0a%3c !! Automation%0a%3c %0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a%3c %0a---%0a> !! Troubleshooting%0a> %0a> If acme-client fails, there are several possible causes:%0a> %0a> !!! Domain Not Listed%0a> %0a> If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a>  %0a178c182%0a%3c $ doas crontab -e%0a---%0a> acme-client: /etc/ssl/example.com.crt: domain not listed: new.example.com%0a181,182c185,186%0a%3c Add this line at the bottom:%0a%3c %0a---%0a> Here, @@new.example.com@@ was a new alternative name you added. The solution is to move your old public cert and private key to a new location (to back it up). Then, request the cert again.%0a> %0a184c188,189%0a%3c ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a---%0a> $ doas mv /etc/ssl/example.com.crt /etc/ssl/example.com.crt.bak%0a> $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a187,196c192,193%0a%3c This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a%3c %0a%3c !! Troubleshooting%0a%3c %0a%3c If acme-client fails, there are several possible causes:%0a%3c %0a%3c !!! Domain Not Listed%0a%3c %0a%3c If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a%3c  %0a---%0a> Then request the cert again:%0a> %0a198c195%0a%3c acme-client: /etc/ssl/example.com.crt: domain not listed: new.example.com%0a---%0a> $ doas acme-client -Fv example.com%0a201,202c198,201%0a%3c Here, @@new.example.com@@ was a new alternative name you added. The solution is to move your old public cert and private key to a new location (to back it up). Then, request the cert again.%0a%3c %0a---%0a> !!! Missing Domain Records%0a> %0a> It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a> %0a204,205c203%0a%3c $ doas mv /etc/ssl/example.com.crt /etc/ssl/example.com.crt.bak%0a%3c $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a---%0a> $ host example.com%0a208,209c206,207%0a%3c Then request the cert again:%0a%3c %0a---%0a> You should see one or two records like the following:%0a> %0a211c209,210%0a%3c $ doas acme-client -Fv example.com%0a---%0a> example.com has address 93.184.216.34%0a> example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a214,217c213,214%0a%3c !!! Missing Domain Records%0a%3c %0a%3c It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a%3c %0a---%0a> If you have missing records, you will see this response:%0a> %0a219c216%0a%3c $ host example.com%0a---%0a> Host example.com not found: 3(NXDOMAIN)%0a222,234d218%0a%3c You should see one or two records like the following:%0a%3c %0a%3c [@%0a%3c example.com has address 93.184.216.34%0a%3c example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a%3c @]%0a%3c %0a%3c If you have missing records, you will see this response:%0a%3c %0a%3c [@%0a%3c Host example.com not found: 3(NXDOMAIN)%0a%3c @]%0a%3c %0a249,250c233,234%0a%3c To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain) on another computer.%0a%3c %0a---%0a> To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain) from another computer:%0a> %0a257,264c241,242%0a%3c If you do not get the correct response, double check your [[openhttpd/configure|openhttpd configuration]].%0a%3c %0a%3c '''Note''': Although a web browser can also be used for testing, many web browsers automatically forward all port 80 requests to port 443. As a result, your web browser will only see what is listening on port 443, whereas the certificate authority tests port 80 only.%0a%3c %0a%3c !!! Incorrect File Permissions%0a%3c %0a%3c Double check @@/var/www@@ and @@/var/www/acme@@ for correct file permissions:%0a%3c %0a---%0a> You should a response similar to the one below:%0a> %0a266,268c244,251%0a%3c $ ls -ld /var/www /var/www/acme%0a%3c drwxr-xr-x  10 root  daemon  512 Oct  5 07:47 /var/www%0a%3c drwxr-xr-x   2 root  daemon  512 Oct  5 07:47 /var/www/acme%0a---%0a> HTTP/1.0 302 Found%0a> Date: Tue, 23 Feb 2021 14:01:28 GMT%0a> OpenBSD httpd%0a> Connection: close%0a> Content-Type: text/html%0a> Content-Length: 486%0a> Location: https://example.com/index.html%0a> ...%0a269a253,283%0a> %0a> If you do not get this response, double check your openhttpd configuration.%0a> %0a> '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests for port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a> %0a> %0a> !!! Incorrect File Permissions%0a> %0a> Double check the file permissions for /var/www and /var/www/acme:%0a> %0a> [@%0a> $ ls -ld /var/www /var/www/acme%0a> drwxr-xr-x  10 root  daemon  512 Oct  5 07:47 /var/www%0a> drwxr-xr-x   2 root  daemon  512 Oct  5 07:47 /var/www/acme%0a> @]%0a> %0a> !! Automation%0a> %0a> Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a> %0a> [@%0a> $ doas crontab -e%0a> @]%0a> %0a> Add this line at the bottom:%0a> %0a> [@%0a> ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a> @]%0a> %0a> This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a
+host:1655193716=38.87.162.154
+author:1655192828=jrmu
+diff:1655192828:1655192572:=212a213,222%0a> The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on.%0a> %0a> '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a> %0a> There are a few possible mistakes:%0a> %0a> # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a> # You have the wrong IP addresses.%0a> # DNS records are missing.%0a> %0a219,225c229%0a%3c You will either need to speak with your DNS provider or troubleshoot [[nsd/troubleshoot|nsd]]. If DNS records are missing or incorrect, fix these first.%0a%3c %0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. If they do not match, you must fix this.%0a%3c %0a%3c '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a%3c %0a%3c Lastly, if your DNS record includes an IPv6 address, make sure your web server is listening on IPv6. If the DNS record contains an IPv4 address, make sure your web server is listening on IPv4.%0a---%0a> You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a
+host:1655192828=38.87.162.154
+author:1655192572=jrmu
+diff:1655192572:1655191866:=125,136c125,131%0a%3c The public key goes inside the folder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a%3c %0a%3c The line @@sign with letsencrypt@@ line tells Acme-client which Certificate Authority (which you defined in the Authority Blocks) to use.%0a%3c %0a%3c For testing purposes, you may want to change it to @@letsencrypt-staging@@. You can also consider using @@buypass@@ or @@buypass-test@@.%0a%3c %0a%3c '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority (such as @@sign with letsencrypt@@).%0a%3c %0a%3c !! Requesting Certificates%0a%3c %0a%3c After you have finished configuring the conf file, we can request certificates:%0a%3c %0a---%0a> Replace @@example.com@@ with your real domain. The public key goes inside the folder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a> %0a> %0a> sign with: %0a> %0a> this line tells Acme-client which CA (that you defined in the Authority Blocks) to use.%0a> %0a138c133%0a%3c $ doas acme-client -Fv example.com%0a---%0a>         sign with letsencrypt%0a141,142c136,143%0a%3c If there are no errors, you should see something similar to the following output:%0a%3c %0a---%0a> would cause it to use the CA @@ letsencrypt @@. For testing purposes, change it to @@ letsencrypt-staging @@. If you want to use @@ buypass @@ or it's testing CA  @@ buypass-test @@, then change it accordingly.%0a> %0a> '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority (@@sign with letsencrypt@@).%0a> %0a> !! Requesting Certificates%0a> %0a> After you have finished configuring the conf file, we can request certificates:%0a> %0a144a146,153%0a> @]%0a> %0a> replace @@ example.com @@ with your domain.%0a> %0a> If there are no errors, you should see something similar to the following output:%0a> %0a> [@%0a> $ doas acme-client -Fv example.com%0a163,166c172,175%0a%3c The last line says that the public certificate was generated. If you see that, it's a success!%0a%3c %0a%3c You now have two certificates, the public key inside @@/etc/ssl/example.com.crt@@, and the private key inside @@/etc/ssl/private/example.com.key@@:%0a%3c %0a---%0a> Note the last line: it says that the public certificate was generated. If you see that, it's a success!%0a> %0a> You now have two certificates, the public key inside @@/etc/ssl/example.com.crt@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to):%0a> %0a169,170c178,179%0a%3c -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/example.com.crt%0a%3c -r--------  1 root  wheel  3272 Feb 25 02:10 /etc/ssl/private/example.com.key%0a---%0a> -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/jrmu.coconut.ircnow.org.crt%0a> -r--------  1 root  wheel  3272 Feb 25 02:10 /etc/ssl/private/jrmu.coconut.ircnow.org.key%0a185,186c194,197%0a%3c Here, @@new.example.com@@ was a new alternative name you added. The solution is to move your old public cert and private key to a new location (to back it up). Then, request the cert again.%0a%3c %0a---%0a> Here, @@new.example.com@@ was a new alternative name I added. The solution is to move your old public cert and private key to a new location (rather than deleting it, back it up!)%0a> %0a> Example (using example.com):%0a> %0a197a209%0a> %0a217c229%0a%3c There are a few possible mistakes:%0a---%0a>  There are a few possible mistakes:%0a
+host:1655192572=38.87.162.154
+author:1655191866=jrmu
+diff:1655191866:1655191536:=98,105c98,105%0a%3c First, replace every appearance of @@example.com@@ with your own domain.%0a%3c %0a%3c Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.com@@ and the alternative names @@www.example.com@@ and @@mail.example.com@@. You can safely skip this by commenting out this line (see warning below)%0a%3c %0a%3c If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, we recommend keeping the number of alternative names to under 5.%0a%3c %0a%3c '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. For example, the below will cause errors:%0a%3c %0a---%0a> domain: This would configure acme-client for the domain @@ example.com @@. Replace every appearance of @@ example.com @@ with your own domain, which might look like @@ username.fruit.ircnow.org @@.%0a> %0a> alternative names: Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@ example.ircnow.org @@ and the alternative names @@ fruit.ircnow.org @@ and @@ vegetable.ircnow.org @@. You can safely skip this by commenting out this line (see warning below)%0a> %0a> If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, I recommend keeping the number of alternative names to under 5.%0a> %0a> '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. The below will cause errors:%0a> %0a116,118c116,121%0a%3c '''Note''': If you add an alternative name to the conf file, but the cert already exists, you must remove the old public cert first before requesting a new one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will complain there is an unknown '''Subject Alternative Name'''.%0a%3c %0a%3c Next, the @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a---%0a> %0a> '''Note''': If you add an alternative name to the conf file, but the cert already exists, you must remove the old public cert first before requesting a new one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will complain there is an unknown Subject Alternative Name.%0a> %0a> domain key, domain full chain certificate:%0a> %0a> The @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a
+host:1655191866=38.87.162.154
+author:1655191536=jrmu
+diff:1655191536:1649038510:=42c42%0a%3c Although we are using Let's Encrypt for this tutorial, it is important to note that having the majority of servers depend upon a single provider is dangerous. For this reason, it would be beneficial to someday have the community run its own Certificate Authority to avoid censorship of domains or other security issues.%0a---%0a> Although we are using Let's Encrypt for this tutorial, it is important to note that Let's Encrypt currently has a monopoly on free SSL certs. For this reason, IRCNow wants to run its own Certificate Authority in case Let's Encrypt should try to censor our domains.%0a
+host:1655191536=38.87.162.154
+author:1649038510=jrmu
+diff:1649038510:1644404186:=299c299%0a%3c ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a---%0a> ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1 && rcctl reload httpd%0a302c302%0a%3c This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a---%0a> This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert, then reload openhttpd to use it.%0a
+host:1649038510=38.87.162.154
+author:1644404186=SummerSonw
+csum:1644404186=https://acme-staging-v02.api.letsencrypt.org/directory
+diff:1644404186:1644404177:=
+host:1644404186=203.77.49.232
+author:1644404177=SummerSonw
+csum:1644404177=https://acme-staging-v02.api.letsencrypt.org/directory
+diff:1644404177:1644404155:=
+host:1644404177=203.77.49.232
+author:1644404155=SummerSonw
+csum:1644404155=https://acme-staging-v02.api.letsencrypt.org/directory
+diff:1644404155:1643583464:=46c46%0a%3c         api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a---%0a>         api url "https://acme-staging.api.letsencrypt.org/directory"%0a
+host:1644404155=203.77.49.232
+author:1643583464=jrmu
+diff:1643583464:1643202311:=299c299%0a%3c ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1 && rcctl reload httpd%0a---%0a> ~       ~       *       *       *       acme-client example.com && rcctl reload httpd%0a
+host:1643583464=38.87.162.8
+author:1643202311=Naglfar
+csum:1643202311=Update crontab reference
+diff:1643202311:1642281315:=290c290%0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a---%0a> Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/configure|crontab]].%0a
+host:1643202311=92.191.225.58
+author:1642281315=jan6
+csum:1642281315=fix renewal crontab to run randomly once a day, not once an hour
+diff:1642281315:1636907615:minor=299c299%0a%3c ~       ~       *       *       *       acme-client example.com && rcctl reload httpd%0a---%0a> ~       *       *       *       *       acme-client example.com && rcctl reload httpd%0a
+host:1642281315=2a01:4f9:c010:291f::1
+author:1636907615=theguest
+diff:1636907615:1635981333:minor=9c9%0a%3c SSL certificates are obtained from CAs (Certificate Authorities). Currently, the only free CAs are [[https://letsencrypt.org/getting-started/ | Lets Encrypt]], [[https://www.buypass.com/ssl/products/acme | Buypass]] and [[https://zerossl.com/ | ZeroSSL]]. You can request an SSL cert for your web domain using an Automatic Certificate Management Environment (ACME) client such as OpenBSD's Acme-client, which we will configure in this article.%0a---%0a> SSL certificates are obtained from CA's (Certificate Authorities). Currently, the only free CA is Lets Encrypt. You can request an SSL cert for your web domain using an Automatic Certificate Management Environment (ACME) client such as OpenBSD's Acme-client, which we will configure in this article.%0a
+host:1636907615=38.87.162.129
+author:1635981333=jrmu
+diff:1635981333:1635936085:=93c93%0a%3c         domain full chain certificate "/etc/ssl/example.com.crt"%0a---%0a>         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a125c125%0a%3c         domain full chain certificate "/etc/ssl/example.com.crt"%0a---%0a>         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a172c172%0a%3c acme-client: /etc/ssl/example.com.crt: created%0a---%0a> acme-client: /etc/ssl/example.com.fullchain.pem: created%0a177,178c177,178%0a%3c You now have two certificates, the public key inside @@/etc/ssl/example.com.crt@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to):%0a%3c %0a---%0a> You now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to):%0a> %0a180,181c180,181%0a%3c $ doas ls -l /etc/ssl/example.com.crt /etc/ssl/private/example.com.key%0a%3c -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/jrmu.coconut.ircnow.org.crt%0a---%0a> $ doas ls -l /etc/ssl/example.com.fullchain.pem /etc/ssl/private/example.com.key%0a> -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/jrmu.coconut.ircnow.org.fullchain.pem%0a194c194%0a%3c acme-client: /etc/ssl/example.com.crt: domain not listed: new.example.com%0a---%0a> acme-client: /etc/ssl/example.com.fullchain.pem: domain not listed: new.example.com%0a202c202%0a%3c $ doas mv /etc/ssl/example.com.crt /etc/ssl/example.com.crt.bak%0a---%0a> $ doas mv /etc/ssl/example.com.fullchain.pem /etc/ssl/example.com.fullchain.pem.bak%0a
+host:1635981333=38.87.162.47
+author:1635936085=jrmu
+diff:1635936085:1629257098:=11,15c11,15%0a%3c !!! Before You Begin %0a%3c %0a%3c You will first need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need properly functioning [[dns/overview|DNS records]] for your hostname (@@username.example.com@@). If you are using a training vps, it is likely that DNS records for your hostname have already been set up for you.%0a%3c %0a%3c You can and should test the two configurations using [[host/usage|host]] and [[netcat/http|netcat]].%0a---%0a> !!! Prerequisites %0a> %0a> Openhttpd:%0a> %0a> Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS records]] for your hostname, which might look like @@username.fruit.ircnow.org@@. If you are using a training vps, it is likely that your DNS record (your domain) is already set up for now, and will have the form @@username.host.ircnow.org@@%0a
+host:1635936085=38.87.162.47
+author:1629257098=craziness
+csum:1629257098=fixed a misspelling
+diff:1629257098:1626873311:=128c128%0a%3c Replace @@example.com@@ with your real domain. The public key goes inside the folder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a---%0a> Replace @@example.com@@ with your real domain. The public key goes inside the forlder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a
+host:1629257098=2601:546:8200:3710::66f4
+author:1626873311=mistera
+diff:1626873311:1626873281:=141c141%0a%3c '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority (@@sign with letsencrypt@@).%0a---%0a> '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority.%0a
+host:1626873311=204.111.39.57
+author:1626873281=mistera
+diff:1626873281:1626871882:=
+host:1626873281=204.111.39.57
+author:1626871882=mistera
+diff:1626871882:1626871865:=55c55%0a%3c [@%0a---%0a> @@%0a67c67%0a%3c @]%0a---%0a> @@%0a
+host:1626871882=204.111.39.57
+author:1626871865=mistera
+diff:1626871865:1626871816:=55c55%0a%3c @@%0a---%0a> [@%0a67c67%0a%3c @@%0a---%0a> @]%0a
+host:1626871865=204.111.39.57
+author:1626871816=mistera
+diff:1626871816:1626871739:=53c53%0a%3c To both of these blocks, we will want to add our contact email, so we add [@contact "mailto:me@example.com" @] inside both blocks. (make sure to have the @@mailto:@@):%0a---%0a> To both of these blocks, we will want to add our contact email, so we add @@contact mailto:me@example.com @@ inside both blocks:%0a
+host:1626871816=204.111.39.57
+author:1626871739=mistera
+diff:1626871739:1626871579:=53c53%0a%3c To both of these blocks, we will want to add our contact email, so we add @@contact mailto:me@example.com @@ inside both blocks:%0a---%0a> To both of these blocks, we will want to add our contact email, so we add @@contact "mailto:me@example.com"@@ inside both blocks:%0a
+host:1626871739=204.111.39.57
+author:1626871579=mistera
+diff:1626871579:1626788685:=27c27%0a%3c We'll open up [@ /etc/acme-client.conf @] and analyze the meaning of each block:%0a---%0a> We'll open up /etc/acme-client.conf and analyze the meaning of each block:%0a
+host:1626871579=204.111.39.57
+author:1626788685=mistera
+diff:1626788685:1626786887:=5c5%0a%3c !! Overview%0a---%0a> !! Theory%0a
+host:1626788685=204.111.39.57
+author:1626786887=mistera
+diff:1626786887:1619180493:=5,16c5,8%0a%3c !! Theory%0a%3c %0a%3c TLS (Transport Layer Security) aka SSL (Secure Sockets Layer) is the encryption security measure that enables browsers to recognize a website as "secure". In modern browsers the SSL information can be accessed by clicking the padlock icon in the address bar. %0a%3c %0a%3c SSL certificates are obtained from CA's (Certificate Authorities). Currently, the only free CA is Lets Encrypt. You can request an SSL cert for your web domain using an Automatic Certificate Management Environment (ACME) client such as OpenBSD's Acme-client, which we will configure in this article.%0a%3c %0a%3c !!! Prerequisites %0a%3c %0a%3c Openhttpd:%0a%3c %0a%3c Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS records]] for your hostname, which might look like @@username.fruit.ircnow.org@@. If you are using a training vps, it is likely that your DNS record (your domain) is already set up for now, and will have the form @@username.host.ircnow.org@@%0a%3c %0a---%0a> !! Setting up OpenHTTPd%0a> %0a> Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS records]] for your hostname, which might look like @@username.fruit.ircnow.org@@.%0a> %0a29,30d20%0a%3c !!! Authority blocks%0a%3c %0a40,41c30,31%0a%3c '''Note''': Let's Encrypt [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of SSL certs you can request. If you encounter an error and are unable to request an SSL cert, please fix all errors before requesting again. If you request too many certs in a short time, your domain will get blacklisted for a few hours or days. To avoid issues, use letsencrypt-staging first and make sure you get success with that before using letsencrypt.%0a%3c %0a---%0a> '''Note''': Let's Encrypt [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of SSL certs you can request. If you encounter an error and are unable to request an SSL cert, please fix all errors before requesting again. If you request too many certs in a short time, your domain will get blacklisted for a few hours or days.%0a> %0a87,88d76%0a%3c !!! Domain Block%0a%3c %0a98,101c86,89%0a%3c domain: This would configure acme-client for the domain @@ example.com @@. Replace every appearance of @@ example.com @@ with your own domain, which might look like @@ username.fruit.ircnow.org @@.%0a%3c %0a%3c alternative names: Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@ example.ircnow.org @@ and the alternative names @@ fruit.ircnow.org @@ and @@ vegetable.ircnow.org @@. You can safely skip this by commenting out this line (see warning below)%0a%3c %0a---%0a> This configures acme-client for the domain example.com. You'll want to replace every appearance of @@example.com@@ with your own domain, which might look like @@username.fruit.ircnow.org@@.%0a> %0a> Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.ircnow.org@@ and the alternative names @@fruit.ircnow.org@@ and @@vegetable.ircnow.org@@.%0a> %0a119,120d106%0a%3c domain key, domain full chain certificate:%0a%3c %0a128,134c114,117%0a%3c Replace @@example.com@@ with your real domain. The public key goes inside the forlder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a%3c %0a%3c %0a%3c sign with: %0a%3c %0a%3c this line tells Acme-client which CA (that you defined in the Authority Blocks) to use.%0a%3c %0a---%0a> You will want to replace @@example.com@@ with your real domain. The public key should go inside @@/etc/ssl@@ and the private key should go inside @@/etc/ssl/private@@.%0a> %0a> If you want to sign with buypass, test a staging certificate (to avoid using up your rate-limit), or switch to another authority, then edit this line:%0a> %0a139,142c122,128%0a%3c would cause it to use the CA @@ letsencrypt @@. For testing purposes, change it to @@ letsencrypt-staging @@. If you want to use @@ buypass @@ or it's testing CA  @@ buypass-test @@, then change it accordingly.%0a%3c %0a%3c '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority.%0a%3c %0a---%0a> Change it to match one of your defined authorities. For example:%0a> %0a> # To test with letsencrypt-staging, replace it with @@sign with letsencrypt-staging@@.%0a> # To sign with buypass, replace it with @@sign with buypass@@.%0a> %0a> '''Note''': staging certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, you will want to get a properly signed one.%0a> %0a151,152d136%0a%3c replace @@ example.com @@ with your domain.%0a%3c %0a175,176c159,160%0a%3c Note the last line: it says that the public certificate was generated. If you see that, it's a success!%0a%3c %0a---%0a> Pay attention to the last line: it says that the public certificate was generated. If you see that, it's a success!%0a> %0a189,192c173,176%0a%3c !!! Domain Not Listed%0a%3c %0a%3c If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a%3c  %0a---%0a> !!! Missing Domain Records%0a> %0a> It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a> %0a194c178%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: domain not listed: new.example.com%0a---%0a> $ host example.com%0a197,200c181,182%0a%3c Here, @@new.example.com@@ was a new alternative name I added. The solution is to move your old public cert and private key to a new location (rather than deleting it, back it up!)%0a%3c %0a%3c Example (using example.com):%0a%3c %0a---%0a> You should see one or two records like the following:%0a> %0a202,203c184,185%0a%3c $ doas mv /etc/ssl/example.com.fullchain.pem /etc/ssl/example.com.fullchain.pem.bak%0a%3c $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a---%0a> example.com has address 93.184.216.34%0a> example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a206,207c188,199%0a%3c Then request the cert again:%0a%3c %0a---%0a> The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on.%0a> %0a> '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a> %0a>  There are a few possible mistakes:%0a> %0a> # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a> # You have the wrong IP addresses.%0a> # DNS records are missing.%0a> %0a> If you have missing records, you will see this response:%0a> %0a209c201%0a%3c $ doas acme-client -Fv example.com%0a---%0a> Host example.com not found: 3(NXDOMAIN)%0a212,216c204,211%0a%3c %0a%3c !!! Missing Domain Records%0a%3c %0a%3c It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a%3c %0a---%0a> You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a> %0a> !!! OpenHTTPd Misconfigured%0a> %0a> acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a> %0a> To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain):%0a> %0a218c213,215%0a%3c $ host example.com%0a---%0a> $ telnet example.com 80%0a> GET /index.html HTTP/1.1%0a> Host: example.com%0a221,222c218,219%0a%3c You should see one or two records like the following:%0a%3c %0a---%0a> You should a response similar to the one below:%0a> %0a224,225c221,228%0a%3c example.com has address 93.184.216.34%0a%3c example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a---%0a> HTTP/1.0 302 Found%0a> Date: Tue, 23 Feb 2021 14:01:28 GMT%0a> OpenBSD httpd%0a> Connection: close%0a> Content-Type: text/html%0a> Content-Length: 486%0a> Location: https://example.com/index.html%0a> ...%0a228,239c231,238%0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on.%0a%3c %0a%3c '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a%3c %0a%3c  There are a few possible mistakes:%0a%3c %0a%3c # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a%3c # You have the wrong IP addresses.%0a%3c # DNS records are missing.%0a%3c %0a%3c If you have missing records, you will see this response:%0a%3c %0a---%0a> If you do not get this response, double check your openhttpd configuration.%0a> %0a> '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests for port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a> %0a> !!! Domain Not Listed%0a> %0a> If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a>  %0a241c240%0a%3c Host example.com not found: 3(NXDOMAIN)%0a---%0a> acme-client: /etc/ssl/example.com.fullchain.pem: domain not listed: new.example.com%0a244,253c243,244%0a%3c You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a%3c %0a%3c !!! OpenHTTPd Misconfigured%0a%3c %0a%3c If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a%3c %0a%3c (acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. )%0a%3c %0a%3c To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain) from another computer:%0a%3c %0a---%0a> Here, @@new.example.com@@ was a new alternative name I added. The solution is to move your old public cert and private key to a new location, then request the cert again:%0a> %0a255,257c246,247%0a%3c $ telnet example.com 80%0a%3c GET /index.html HTTP/1.1%0a%3c Host: example.com%0a---%0a> $ doas mv /etc/ssl/example.com.fullchain.pem /etc/ssl/example.com.fullchain.pem.bak%0a> $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a260,261c250,251%0a%3c You should a response similar to the one below:%0a%3c %0a---%0a> Again, you must replace @@example.com@@ with your actual domain. Then:%0a> %0a263,270c253%0a%3c HTTP/1.0 302 Found%0a%3c Date: Tue, 23 Feb 2021 14:01:28 GMT%0a%3c OpenBSD httpd%0a%3c Connection: close%0a%3c Content-Type: text/html%0a%3c Content-Length: 486%0a%3c Location: https://example.com/index.html%0a%3c ...%0a---%0a> $ doas acme-client -Fv example.com%0a272,276d254%0a%3c %0a%3c If you do not get this response, double check your openhttpd configuration.%0a%3c %0a%3c '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests for port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a%3c %0a
+host:1626786887=204.111.39.57
+author:1619180493=jrmu
+diff:1619180493:1619176983:=105c105,106%0a%3c '''Note''': If you add an alternative name to the conf file, but the cert already exists, you must remove the old public cert first before requesting a new one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will complain there is an unknown Subject Alternative Name.%0a---%0a> '+'''Please note that if you add an alternative name while there is already an existing cert, that you have to remove the old certs and then use continue.'''+'%0a> %0a
+host:1619180493=198.251.81.119
+author:1619176983=miniontoby
+csum:1619176983=cert
+diff:1619176983:1619176919:=104,107d103%0a%3c %0a%3c '+'''Please note that if you add an alternative name while there is already an existing cert, that you have to remove the old certs and then use continue.'''+'%0a%3c %0a%3c %0a281a278,282%0a> %0a> %0a> '+'''Please note that if you add an alternative name, that you have to remove the old certs and then use acme-client.'''+'%0a> %0a> %0a
+host:1619176983=77.168.188.164
+author:1619176919=miniontoby
+diff:1619176919:1614320419:=278,282d277%0a%3c %0a%3c %0a%3c '+'''Please note that if you add an alternative name, that you have to remove the old certs and then use acme-client.'''+'%0a%3c %0a%3c %0a
+host:1619176919=77.168.188.164
+author:1614320419=jrmu
+diff:1614320419:1614254423:=265c265%0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/configure|crontab]].%0a---%0a> ACME TLS certs expire after 90 days. So, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/configure|crontab]].%0a
+host:1614320419=198.251.81.119
+author:1614254423=jrmu
+diff:1614254423:1614254344:=277c277%0a%3c This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert, then reload openhttpd to use it.%0a---%0a> This cronjob will check the certificate once a day to see if it needs to be renewed. If it does, it will renew the cert, then reload openhttpd to use it.%0a
+host:1614254423=198.251.81.119
+author:1614254344=jrmu
+diff:1614254344:1614248928:=262,277d261%0a%3c %0a%3c !! Automation%0a%3c %0a%3c ACME TLS certs expire after 90 days. So, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/configure|crontab]].%0a%3c %0a%3c [@%0a%3c $ doas crontab -e%0a%3c @]%0a%3c %0a%3c Add this line at the bottom:%0a%3c %0a%3c [@%0a%3c ~       *       *       *       *       acme-client example.com && rcctl reload httpd%0a%3c @]%0a%3c %0a%3c This cronjob will check the certificate once a day to see if it needs to be renewed. If it does, it will renew the cert, then reload openhttpd to use it.%0a
+host:1614254344=198.251.81.119
+author:1614248928=jrmu
+diff:1614248928:1614248764:=265,268c265,267%0a%3c || border=1 width=100%25 class="sortable simpletable"%0a%3c || [[openhttpd/configure|Configure OpenHTTPd]] || Configure HTTPd ||%0a%3c || [[telnet/http|Telnet HTTP]] || Use Telnet to Troubleshoot HTTP ||%0a%3c || [[openssl/http|OpenSSL HTTP]] || Use OpenSSL to Troubleshoot HTTPS ||%0a---%0a> [[openhttpd/configure|Configure OpenHTTPd]]%0a> [[telnet/HTTP|Telnet HTTP]]%0a> [[openssl/HTTP|OpenSSL HTTP]]%0a
+host:1614248928=198.251.81.119
+author:1614248764=jrmu
+diff:1614248764:1614248201:=247,252d246%0a%3c Again, you must replace @@example.com@@ with your actual domain. Then:%0a%3c %0a%3c [@%0a%3c $ doas acme-client -Fv example.com%0a%3c @]%0a%3c %0a261,267c255%0a%3c @]%0a%3c %0a%3c See Also:%0a%3c %0a%3c [[openhttpd/configure|Configure OpenHTTPd]]%0a%3c [[telnet/HTTP|Telnet HTTP]]%0a%3c [[openssl/HTTP|OpenSSL HTTP]]%0a---%0a> @]%0a\ No newline at end of file%0a
+host:1614248764=198.251.81.119
+author:1614248201=jrmu
+diff:1614248201:1614247880:=231,245d230%0a%3c %0a%3c !!! Domain Not Listed%0a%3c %0a%3c If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a%3c  %0a%3c [@%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: domain not listed: new.example.com%0a%3c @]%0a%3c %0a%3c Here, @@new.example.com@@ was a new alternative name I added. The solution is to move your old public cert and private key to a new location, then request the cert again:%0a%3c %0a%3c [@%0a%3c $ doas mv /etc/ssl/example.com.fullchain.pem /etc/ssl/example.com.fullchain.pem.bak%0a%3c $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a%3c @]%0a
+host:1614248201=198.251.81.119
+author:1614247880=jrmu
+diff:1614247880:1614247705:=185,190c185,186%0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on.%0a%3c %0a%3c '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a%3c %0a%3c  There are a few possible mistakes:%0a%3c %0a---%0a> The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. There are a few possible mistakes:%0a> %0a240c236,241%0a%3c @]%0a\ No newline at end of file%0a---%0a> @]%0a> %0a> !! Common errors%0a> %0a> # Do not request domains you don't own%0a> # If you change the domains, you need to move the cert and request again%0a\ No newline at end of file%0a
+host:1614247880=198.251.81.119
+author:1614247705=jrmu
+diff:1614247705:1614247508:=
+host:1614247705=198.251.81.119
+author:1614247508=jrmu
+diff:1614247508:1614247487:=
+host:1614247508=198.251.81.119
+author:1614247487=jrmu
+diff:1614247487:1614245123:=134,135c134,135%0a%3c If there are no errors, you should see something similar to the following output:%0a%3c %0a---%0a> If all goes well, you should see something similar to the following output:%0a> %0a156,159c156%0a%3c Pay attention to the last line: it says that the public certificate was generated. If you see that, it's a success!%0a%3c %0a%3c You now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to):%0a%3c %0a---%0a> %0a161,163c158%0a%3c $ doas ls -l /etc/ssl/example.com.fullchain.pem /etc/ssl/private/example.com.key%0a%3c -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/jrmu.coconut.ircnow.org.fullchain.pem%0a%3c -r--------  1 root  wheel  3272 Feb 25 02:10 /etc/ssl/private/jrmu.coconut.ircnow.org.key%0a---%0a> acme-client: /etc/ssl/example.com.fullchain.pem: created%0a164a160,174%0a> %0a> %0a> [@%0a> $ doas ls -l /etc/ssl/private%0a> -r--------  1 root  wheel  3272 Mar 28 22:16 example.com.key%0a> @]%0a>   # A PEM certificate under /etc/ssl e.g.%0a> [@%0a> $ ls -l /etc/ssl/*.pem%0a> -r--r--r--  1 root  wheel    3937 Mar 28 22:16 example.com.fullchain.pem%0a> @]%0a> %0a> It would have the following output of running acme-client, generating a certificate for example.com%0a> %0a> You should now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to).%0a
+host:1614247487=198.251.81.119
+author:1614245123=jrmu
+diff:1614245123:1614242993:=134,135c134,135%0a%3c If all goes well, you should see something similar to the following output:%0a%3c %0a---%0a> If all goes well, you should see the following line at the very bottom:%0a> %0a137,152d136%0a%3c $ doas acme-client -Fv example.com%0a%3c acme-client: /etc/acme/letsencrypt-privkey.pem: generated RSA account key%0a%3c acme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/directory: directories%0a%3c acme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/11133258838%0a%3c acme-client: challenge, token: uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A, status: 0%0a%3c acme-client: /var/www/acme/uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs: created%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A: challenge%0a%3c acme-client: order.status 0%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/11133258838%0a%3c acme-client: challenge, token: uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A, status: 2%0a%3c acme-client: order.status 1%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/113861127/8112730231: certificate%0a%3c acme-client: order.status 3%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/cert/03f7fd846802cb0689c2bbd7b6f5e89eb66b: certificate%0a156c140,149%0a%3c %0a---%0a> You should now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to).%0a> %0a> !! Troubleshooting%0a> %0a> If acme-client fails, there are several possible causes:%0a> %0a> !!! Missing Domain Records%0a> %0a> It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a> %0a158c151%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: created%0a---%0a> $ host example.com%0a161c154,155%0a%3c %0a---%0a> You should see one or two records like the following:%0a> %0a163,164c157,158%0a%3c $ doas ls -l /etc/ssl/private%0a%3c -r--------  1 root  wheel  3272 Mar 28 22:16 example.com.key%0a---%0a> example.com has address 93.184.216.34%0a> example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a166c160,168%0a%3c   # A PEM certificate under /etc/ssl e.g.%0a---%0a> %0a> The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. There are a few possible mistakes:%0a> %0a> # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a> # You have the wrong IP addresses.%0a> # DNS records are missing.%0a> %0a> If you have missing records, you will see this response:%0a> %0a168,169c170%0a%3c $ ls -l /etc/ssl/*.pem%0a%3c -r--r--r--  1 root  wheel    3937 Mar 28 22:16 example.com.fullchain.pem%0a---%0a> Host example.com not found: 3(NXDOMAIN)%0a172,183c173,180%0a%3c It would have the following output of running acme-client, generating a certificate for example.com%0a%3c %0a%3c You should now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to).%0a%3c %0a%3c !! Troubleshooting%0a%3c %0a%3c If acme-client fails, there are several possible causes:%0a%3c %0a%3c !!! Missing Domain Records%0a%3c %0a%3c It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a%3c %0a---%0a> You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a> %0a> !!! OpenHTTPd Misconfigured%0a> %0a> acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a> %0a> To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain):%0a> %0a185c182,184%0a%3c $ host example.com%0a---%0a> $ telnet example.com 80%0a> GET /index.html HTTP/1.1%0a> Host: example.com%0a188,189c187,188%0a%3c You should see one or two records like the following:%0a%3c %0a---%0a> You should a response similar to the one below:%0a> %0a191,192c190,197%0a%3c example.com has address 93.184.216.34%0a%3c example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a---%0a> HTTP/1.0 302 Found%0a> Date: Tue, 23 Feb 2021 14:01:28 GMT%0a> OpenBSD httpd%0a> Connection: close%0a> Content-Type: text/html%0a> Content-Length: 486%0a> Location: https://example.com/index.html%0a> ...%0a195,202c200,205%0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. There are a few possible mistakes:%0a%3c %0a%3c # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a%3c # You have the wrong IP addresses.%0a%3c # DNS records are missing.%0a%3c %0a%3c If you have missing records, you will see this response:%0a%3c %0a---%0a> If you do not get this response, double check your openhttpd configuration.%0a> %0a> '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests to port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a> %0a> # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a> %0a204c207,218%0a%3c Host example.com not found: 3(NXDOMAIN)%0a---%0a> $ ls -l /var | grep www%0a> drwxr-xr-x  11 root     daemon     512 Mar 28 05:28 www%0a> $ ls -l /var/www%0a> total 36%0a> drwxr-xr-x  2 root  daemon  512 Mar 28 22:16 acme%0a> drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 bin%0a> drwx-----T  2 www   daemon  512 Oct 12 12:34 cache%0a> drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 cgi-bin%0a> drwxr-xr-x  2 root  daemon  512 Mar 14 06:03 conf%0a> drwxr-xr-x  3 root  daemon  512 Oct 12 12:34 htdocs%0a> drwxr-xr-x  2 root  daemon  512 Mar 29 00:00 logs%0a> drwxr-xr-x  2 root  daemon  512 Oct 12 12:34 run%0a206,214c220,224%0a%3c %0a%3c You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a%3c %0a%3c !!! OpenHTTPd Misconfigured%0a%3c %0a%3c acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a%3c %0a%3c To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain):%0a%3c %0a---%0a>   # Your firewall is not configured to block Let's Encrypt certification verification process. Typically it will initiate a few servers to connect to port 80 on your server.%0a> %0a> !! Successful outcomes%0a> A successful outcome would result in:%0a>   # A ASCII text file, suffixed with .key with your hostname in /etc/ssl/private e.g.%0a216,218c226,227%0a%3c $ telnet example.com 80%0a%3c GET /index.html HTTP/1.1%0a%3c Host: example.com%0a---%0a> $ doas ls -l /etc/ssl/private%0a> -r--------  1 root  wheel  3272 Mar 28 22:16 example.com.key%0a220,222c229%0a%3c %0a%3c You should a response similar to the one below:%0a%3c %0a---%0a>   # A PEM certificate under /etc/ssl e.g.%0a224,231c231,232%0a%3c HTTP/1.0 302 Found%0a%3c Date: Tue, 23 Feb 2021 14:01:28 GMT%0a%3c OpenBSD httpd%0a%3c Connection: close%0a%3c Content-Type: text/html%0a%3c Content-Length: 486%0a%3c Location: https://example.com/index.html%0a%3c ...%0a---%0a> $ ls -l /etc/ssl/*.pem%0a> -r--r--r--  1 root  wheel    3937 Mar 28 22:16 example.com.fullchain.pem%0a234,241c235,236%0a%3c If you do not get this response, double check your openhttpd configuration.%0a%3c %0a%3c '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests for port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a%3c %0a%3c !!! Incorrect File Permissions%0a%3c %0a%3c Double check the file permissions for /var/www and /var/www/acme:%0a%3c %0a---%0a> It would have the following output of running acme-client, generating a certificate for example.com%0a> %0a243,245c238,263%0a%3c $ ls -ld /var/www /var/www/acme%0a%3c drwxr-xr-x  10 root  daemon  512 Oct  5 07:47 /var/www%0a%3c drwxr-xr-x   2 root  daemon  512 Oct  5 07:47 /var/www/acme%0a---%0a> acme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0a> acme-client: /etc/acme/letsencrypt-privkey.pem: generated RSA account key%0a> acme-client: https://acme-v02.api.letsencrypt.org/directory: directories%0a> acme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 0%0a> acme-client: /var/www/acme/mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL: created%0a> acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ: challenge%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: order.status 0%0a> acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 2%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: order.status 1%0a> acme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/81817869/2815341474: certificate%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: order.status 3%0a> acme-client: https://acme-v02.api.letsencrypt.org/acme/cert/vxsJMODZOeZxwiuyq9Bz6jqgoRRRUak8ZQ3ob: certificate%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: /etc/ssl/example.com.fullchain.pem: created%0a
+host:1614245123=198.251.81.119
+author:1614242993=jrmu
+diff:1614242993:1614242757:=177,203c177,181%0a%3c acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a%3c %0a%3c To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain):%0a%3c %0a%3c [@%0a%3c $ telnet example.com 80%0a%3c GET /index.html HTTP/1.1%0a%3c Host: example.com%0a%3c @]%0a%3c %0a%3c You should a response similar to the one below:%0a%3c %0a%3c [@%0a%3c HTTP/1.0 302 Found%0a%3c Date: Tue, 23 Feb 2021 14:01:28 GMT%0a%3c OpenBSD httpd%0a%3c Connection: close%0a%3c Content-Type: text/html%0a%3c Content-Length: 486%0a%3c Location: https://example.com/index.html%0a%3c ...%0a%3c @]%0a%3c %0a%3c If you do not get this response, double check your openhttpd configuration.%0a%3c %0a%3c '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests to port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a%3c %0a---%0a> acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If openhttpd is not configured and running properly, acme-client won't work.%0a> %0a> You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a> # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a> %0a
+host:1614242993=198.251.81.119
+author:1614242757=jrmu
+diff:1614242757:1614242252:=175,179c175%0a%3c !!! OpenHTTPd Misconfigured%0a%3c %0a%3c acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If openhttpd is not configured and running properly, acme-client won't work.%0a%3c %0a%3c You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a---%0a> # The [[Openhttpd|web server]] is configured properly. You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a
+host:1614242757=198.251.81.119
+author:1614242252=jrmu
+diff:1614242252:1614242101:=164,174c164,171%0a%3c # You have the wrong IP addresses.%0a%3c # DNS records are missing.%0a%3c %0a%3c If you have missing records, you will see this response:%0a%3c %0a%3c [@%0a%3c Host example.com not found: 3(NXDOMAIN)%0a%3c @]%0a%3c %0a%3c You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a%3c %0a---%0a> # %0a> %0a> %0a> Host blahblah.coconut.ircnow.org not found: 3(NXDOMAIN)%0a> %0a> If you %0a> %0a> [[nsd|DNS]] is configured properly%0a
+host:1614242252=198.251.81.119
+author:1614242101=jrmu
+diff:1614242101:1614241008:=144,173c144,149%0a%3c If acme-client fails, there are several possible causes:%0a%3c %0a%3c !!! Missing Domain Records%0a%3c %0a%3c It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a%3c %0a%3c [@%0a%3c $ host example.com%0a%3c @]%0a%3c %0a%3c You should see one or two records like the following:%0a%3c %0a%3c [@%0a%3c example.com has address 93.184.216.34%0a%3c example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a%3c @]%0a%3c %0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. There are a few possible mistakes:%0a%3c %0a%3c # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a%3c # %0a%3c %0a%3c %0a%3c Host blahblah.coconut.ircnow.org not found: 3(NXDOMAIN)%0a%3c %0a%3c If you %0a%3c %0a%3c [[nsd|DNS]] is configured properly%0a%3c # The [[Openhttpd|web server]] is configured properly. You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a%3c # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a---%0a> If you run into errors, check to make sure:%0a> %0a>   # [[nsd|DNS]] is configured properly. %0a>   # The [[Openhttpd|web server]] is configured properly. You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a>   # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a> %0a
+host:1614242101=198.251.81.119
+author:1614241008=jrmu
+diff:1614241008:1614240851:=134,141d133%0a%3c If all goes well, you should see the following line at the very bottom:%0a%3c %0a%3c [@%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: created%0a%3c @]%0a%3c %0a%3c You should now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to).%0a%3c %0a143d134%0a%3c %0a
+host:1614241008=198.251.81.119
+author:1614240851=jrmu
+diff:1614240851:1614240518:=113,114c113,114%0a%3c If you want to sign with buypass, test a staging certificate (to avoid using up your rate-limit), or switch to another authority, then edit this line:%0a%3c %0a---%0a> If you want to sign with buypass or another authority instead of Let's Encrypt, then edit this line:%0a> %0a119,124c119%0a%3c Change it to match one of your defined authorities. For example:%0a%3c %0a%3c # To test with letsencrypt-staging, replace it with @@sign with letsencrypt-staging@@.%0a%3c # To sign with buypass, replace it with @@sign with buypass@@.%0a%3c %0a%3c '''Note''': staging certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, you will want to get a properly signed one.%0a---%0a> Change it to match one of your defined authorities.%0a
+host:1614240851=198.251.81.119
+author:1614240518=jrmu
+diff:1614240518:1614239909:=43,44d42%0a%3c To both of these blocks, we will want to add our contact email, so we add @@contact "mailto:me@example.com"@@ inside both blocks:%0a%3c %0a46,49c44,48%0a%3c authority letsencrypt {%0a%3c         api url "https://acme-v02.api.letsencrypt.org/directory"%0a%3c         account key "/etc/acme/letsencrypt-privkey.pem"%0a%3c         contact "mailto:me@example.com"%0a---%0a> domain example.com {%0a>         alternative names { secure.example.com }%0a>         domain key "/etc/ssl/private/example.com.key"%0a>         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a>         sign with letsencrypt%0a51,56d49%0a%3c %0a%3c authority letsencrypt-staging {%0a%3c         api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a%3c         account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a%3c         contact "mailto:me@example.com"%0a%3c }%0a59,60c52,59%0a%3c Next, the default [[https://man.openbsd.org/acme-client.conf|acme-client.conf]] defines two more authorities:%0a%3c %0a---%0a> This configures acme-client for the domain example.com. You'll want to replace every appearance of @@example.com@@ with your own domain, which might look like @@username.fruit.ircnow.org@@.%0a> %0a> Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.ircnow.org@@ and the alternative names @@fruit.ircnow.org@@ and @@vegetable.ircnow.org@@.%0a> %0a> If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, I recommend keeping the number of alternative names to under 5.%0a> %0a> '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. The below will cause errors:%0a> %0a62,72c61%0a%3c authority buypass {%0a%3c         api url "https://api.buypass.com/acme/directory"%0a%3c         account key "/etc/acme/buypass-privkey.pem"%0a%3c         contact "mailto:me@example.com"%0a%3c }%0a%3c %0a%3c authority buypass-test {%0a%3c         api url "https://api.test4.buypass.no/acme/directory"%0a%3c         account key "/etc/acme/buypass-test-privkey.pem"%0a%3c         contact "mailto:me@example.com"%0a%3c }%0a---%0a> alternative names { }%0a75,76c64,65%0a%3c These two blocks are the same as for letsencrypt, but with the alternative provider [[https://buypass.com/|buypass]]. Make sure to replace the contact email with your own email.%0a%3c %0a---%0a> If you don't need any alternative names, you should comment this line out by putting a # at the beginning of the line, like so:%0a> %0a78,83c67%0a%3c domain example.com {%0a%3c         alternative names { secure.example.com }%0a%3c         domain key "/etc/ssl/private/example.com.key"%0a%3c         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a%3c         sign with letsencrypt%0a%3c }%0a---%0a> #        alternative names { }%0a86,93c70,71%0a%3c This configures acme-client for the domain example.com. You'll want to replace every appearance of @@example.com@@ with your own domain, which might look like @@username.fruit.ircnow.org@@.%0a%3c %0a%3c Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.ircnow.org@@ and the alternative names @@fruit.ircnow.org@@ and @@vegetable.ircnow.org@@.%0a%3c %0a%3c If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, I recommend keeping the number of alternative names to under 5.%0a%3c %0a%3c '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. The below will cause errors:%0a%3c %0a---%0a> The @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a> %0a95c73,74%0a%3c alternative names { }%0a---%0a>         domain key "/etc/ssl/private/example.com.key"%0a>         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a98,123c77,80%0a%3c If you don't need any alternative names, you should comment this line out by putting a # at the beginning of the line, like so:%0a%3c %0a%3c [@%0a%3c #        alternative names { }%0a%3c @]%0a%3c %0a%3c The @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a%3c %0a%3c [@%0a%3c         domain key "/etc/ssl/private/example.com.key"%0a%3c         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a%3c @]%0a%3c %0a%3c You will want to replace @@example.com@@ with your real domain. The public key should go inside @@/etc/ssl@@ and the private key should go inside @@/etc/ssl/private@@.%0a%3c %0a%3c If you want to sign with buypass or another authority instead of Let's Encrypt, then edit this line:%0a%3c %0a%3c [@%0a%3c         sign with letsencrypt%0a%3c @]%0a%3c %0a%3c Change it to match one of your defined authorities.%0a%3c %0a%3c !! Requesting Certificates%0a%3c %0a%3c After you have finished configuring the conf file, we can request certificates:%0a---%0a> You will want to replace @@example.com@@ with your real domain. The public key should go inside @@/etc/ssl@@ and the private key should go inside @@/etc/ssl/private@@.%0a> %0a> Now, run acme-client:%0a> %0a
+host:1614240518=198.251.81.119
+author:1614239909=jrmu
+diff:1614239909:1614239863:=9c9%0a%3c Note: You must have a server block in [[https://man.openbsd.org/httpd.conf|/etc/httpd.conf]] listening on port 80. Do not delete this block or else acme-client will not work.%0a---%0a> Note: You must have a server block listening on port 80. Do not delete this block or else acme-client will not work.%0a
+host:1614239909=198.251.81.119
+author:1614239863=jrmu
+diff:1614239863:1614239297:=7c7%0a%3c Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS records]] for your hostname, which might look like @@username.fruit.ircnow.org@@.%0a---%0a> Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS record]], such as @@username.fruit.ircnow.org@@.%0a
+host:1614239863=198.251.81.119
+author:1614239297=jrmu
+diff:1614239297:1614238842:=54,59c54,57%0a%3c Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.ircnow.org@@ and the alternative names @@fruit.ircnow.org@@ and @@vegetable.ircnow.org@@.%0a%3c %0a%3c If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, I recommend keeping the number of alternative names to under 5.%0a%3c %0a%3c '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. The below will cause errors:%0a%3c %0a---%0a> SSL certs%0a> %0a> Replace example.com with your domain. If you didn't use any alternative names, in the past, having:%0a> %0a64,65c62,63%0a%3c If you don't need any alternative names, you should comment this line out by putting a # at the beginning of the line, like so:%0a%3c %0a---%0a> would cause issues. So, if you have no alternative names, I recommend you comment that line out as follows:%0a> %0a67c65%0a%3c #        alternative names { }%0a---%0a> #        alternative names { secure.example.com }%0a69,77d66%0a%3c %0a%3c The @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a%3c %0a%3c [@%0a%3c         domain key "/etc/ssl/private/example.com.key"%0a%3c         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a%3c @]%0a%3c %0a%3c You will want to replace @@example.com@@ with your real domain. The public key should go inside @@/etc/ssl@@ and the private key should go inside @@/etc/ssl/private@@.%0a
+host:1614239297=198.251.81.119
+author:1614238842=jrmu
+diff:1614238842:1614238762:=51,54d50%0a%3c %0a%3c This configures acme-client for the domain example.com. You'll want to replace every appearance of @@example.com@@ with your own domain, which might look like @@username.fruit.ircnow.org@@.%0a%3c %0a%3c SSL certs%0a
+host:1614238842=198.251.81.119
+author:1614238762=jrmu
+diff:1614238762:1614238543:=30,33c30,33%0a%3c '''Note''': Let's Encrypt [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of SSL certs you can request. If you encounter an error and are unable to request an SSL cert, please fix all errors before requesting again. If you request too many certs in a short time, your domain will get blacklisted for a few hours or days.%0a%3c %0a%3c Although we are using Let's Encrypt for this tutorial, it is important to note that Let's Encrypt currently has a monopoly on free SSL certs. For this reason, IRCNow wants to run its own Certificate Authority in case Let's Encrypt should try to censor our domains.%0a%3c %0a---%0a> '''Note''': Let's Encrypt rate-limits the number of SSL certs you can request.%0a> %0a> Although we are using Let's Encrypt for this tutorial, it is important to note that Let's Encrypt currently has a monopoly on free SSL certs. For this reason, IRCNow is considering running its own Certificate Authority in case Let's Encrypt should try to censor our domains.%0a> %0a41c41%0a%3c letsencrypt-staging is a staging server which you can use to practice requesting fake certificates. The rate limits for the staging server are less strict, so you should practice first with this CA.%0a---%0a> letsencrypt-staging is a staging server which you can use to practice requesting fake certificates.%0a
+host:1614238762=198.251.81.119
+author:1614238543=jrmu
+diff:1614238543:1614238364:=30,33d29%0a%3c '''Note''': Let's Encrypt rate-limits the number of SSL certs you can request.%0a%3c %0a%3c Although we are using Let's Encrypt for this tutorial, it is important to note that Let's Encrypt currently has a monopoly on free SSL certs. For this reason, IRCNow is considering running its own Certificate Authority in case Let's Encrypt should try to censor our domains.%0a%3c %0a39,43c35%0a%3c @]%0a%3c %0a%3c letsencrypt-staging is a staging server which you can use to practice requesting fake certificates.%0a%3c %0a%3c [@%0a---%0a> %0a
+host:1614238543=198.251.81.119
+author:1614238364=jrmu
+diff:1614238364:1614237906:=19,20d18%0a%3c We'll open up /etc/acme-client.conf and analyze the meaning of each block:%0a%3c %0a26,30c24%0a%3c @]%0a%3c %0a%3c This defines the Certificate Authority [[https://letsencrypt.org/|letsencrypt]]. It provides the API URL and the location of the account key.%0a%3c %0a%3c [@%0a---%0a> %0a
+host:1614238364=198.251.81.119
+author:1614237906=jrmu
+diff:1614237906:1614237321:=1,4c1,4%0a%3c (:title Configuring Acme-client:)%0a%3c %0a%3c To enable TLS, you will want a certificate signed by a trusted certificate authority (CA). In this guide, we'll use OpenBSD's [[https://man.openbsd.org/acme-client|acme-client]] with Let's Encrypt.%0a%3c %0a---%0a> (:title Configuring Acme-client)%0a> %0a> To have TLS, you will want a certificate signed by a trusted certificate authority (CA). In this guide, we'll use OpenBSD's [[https://man.openbsd.org/acme-client|acme-client]] with Let's Encrypt.%0a> %0a13c13%0a%3c First, copy the [[https://man.openbsd.org/acme-client.conf|acme-client.conf]] template:%0a---%0a> First, copy the /etc/examples/acme-client.conf template:%0a
+host:1614237906=198.251.81.119
+author:1614237321=jrmu
+diff:1614237321:1614236903:=11c11%0a%3c !! Configuration%0a---%0a> %0a
+host:1614237321=198.251.81.119
+author:1614236903=jrmu
+diff:1614236903:1614236691:=7,8c7,8%0a%3c Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS record]], such as @@username.fruit.ircnow.org@@.%0a%3c %0a---%0a> Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning hostname%0a> %0a11c11%0a%3c %0a---%0a>  %0a
+host:1614236903=198.251.81.119
+author:1614236691=jrmu
+diff:1614236691:1614236390:=
+host:1614236691=198.251.81.119
+author:1614236390=jrmu
+diff:1614236390:1614076701:=1,11c1,4%0a%3c (:title Configuring Acme-client)%0a%3c %0a%3c To have TLS, you will want a certificate signed by a trusted certificate authority (CA). In this guide, we'll use OpenBSD's [[https://man.openbsd.org/acme-client|acme-client]] with Let's Encrypt.%0a%3c %0a%3c !! Setting up OpenHTTPd%0a%3c %0a%3c Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning hostname%0a%3c %0a%3c Note: You must have a server block listening on port 80. Do not delete this block or else acme-client will not work.%0a%3c %0a%3c  %0a---%0a> In order to provide proper TLS for your services, you will need a certificate signed by a trusted certificate authority (CA). The easiest option for now is to use the Let's Encrypt client by acme-client.%0a> %0a> !! Howto%0a> You will need to set up a httpd server in order for the acme-client to work. It is recommended to use openhttpd, click [[Openbsd/Openhttpd|here]] to find out how to set up openhttpd.%0a
+host:1614236390=198.251.81.119
+author:1614076701=jrmu
+diff:1614076701:1614076701:=1,119d0%0a%3c In order to provide proper TLS for your services, you will need a certificate signed by a trusted certificate authority (CA). The easiest option for now is to use the Let's Encrypt client by acme-client.%0a%3c %0a%3c !! Howto%0a%3c You will need to set up a httpd server in order for the acme-client to work. It is recommended to use openhttpd, click [[Openbsd/Openhttpd|here]] to find out how to set up openhttpd.%0a%3c %0a%3c First, copy the /etc/examples/acme-client.conf template:%0a%3c %0a%3c [@%0a%3c $ doas cp /etc/examples/acme-client.conf /etc/acme-client.conf%0a%3c @]%0a%3c %0a%3c [@%0a%3c authority letsencrypt {%0a%3c         api url "https://acme-v02.api.letsencrypt.org/directory"%0a%3c         account key "/etc/acme/letsencrypt-privkey.pem"%0a%3c }%0a%3c %0a%3c authority letsencrypt-staging {%0a%3c         api url "https://acme-staging.api.letsencrypt.org/directory"%0a%3c         account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a%3c }%0a%3c %0a%3c domain example.com {%0a%3c         alternative names { secure.example.com }%0a%3c         domain key "/etc/ssl/private/example.com.key"%0a%3c         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a%3c         sign with letsencrypt%0a%3c }%0a%3c @]%0a%3c %0a%3c Replace example.com with your domain. If you didn't use any alternative names, in the past, having:%0a%3c %0a%3c [@%0a%3c alternative names { }%0a%3c @]%0a%3c %0a%3c would cause issues. So, if you have no alternative names, I recommend you comment that line out as follows:%0a%3c %0a%3c [@%0a%3c #        alternative names { secure.example.com }%0a%3c @]%0a%3c %0a%3c Now, run acme-client:%0a%3c %0a%3c [@%0a%3c $ doas acme-client -Fv example.com%0a%3c @]%0a%3c %0a%3c !! Troubleshooting%0a%3c If you run into errors, check to make sure:%0a%3c %0a%3c   # [[nsd|DNS]] is configured properly. %0a%3c   # The [[Openhttpd|web server]] is configured properly. You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a%3c   # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a%3c %0a%3c [@%0a%3c $ ls -l /var | grep www%0a%3c drwxr-xr-x  11 root     daemon     512 Mar 28 05:28 www%0a%3c $ ls -l /var/www%0a%3c total 36%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 28 22:16 acme%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 bin%0a%3c drwx-----T  2 www   daemon  512 Oct 12 12:34 cache%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 cgi-bin%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 14 06:03 conf%0a%3c drwxr-xr-x  3 root  daemon  512 Oct 12 12:34 htdocs%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 29 00:00 logs%0a%3c drwxr-xr-x  2 root  daemon  512 Oct 12 12:34 run%0a%3c @]%0a%3c   # Your firewall is not configured to block Let's Encrypt certification verification process. Typically it will initiate a few servers to connect to port 80 on your server.%0a%3c %0a%3c !! Successful outcomes%0a%3c A successful outcome would result in:%0a%3c   # A ASCII text file, suffixed with .key with your hostname in /etc/ssl/private e.g.%0a%3c [@%0a%3c $ doas ls -l /etc/ssl/private%0a%3c -r--------  1 root  wheel  3272 Mar 28 22:16 example.com.key%0a%3c @]%0a%3c   # A PEM certificate under /etc/ssl e.g.%0a%3c [@%0a%3c $ ls -l /etc/ssl/*.pem%0a%3c -r--r--r--  1 root  wheel    3937 Mar 28 22:16 example.com.fullchain.pem%0a%3c @]%0a%3c %0a%3c It would have the following output of running acme-client, generating a certificate for example.com%0a%3c %0a%3c [@%0a%3c acme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0a%3c acme-client: /etc/acme/letsencrypt-privkey.pem: generated RSA account key%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/directory: directories%0a%3c acme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 0%0a%3c acme-client: /var/www/acme/mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL: created%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ: challenge%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: order.status 0%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 2%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: order.status 1%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/81817869/2815341474: certificate%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: order.status 3%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/cert/vxsJMODZOeZxwiuyq9Bz6jqgoRRRUak8ZQ3ob: certificate%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: created%0a%3c @]%0a%3c %0a%3c !! Common errors%0a%3c %0a%3c # Do not request domains you don't own%0a%3c # If you change the domains, you need to move the cert and request again%0a\ No newline at end of file%0a
+host:1614076701=198.251.81.119
blob - /dev/null
blob + f1d15fd13246487cdb78f2e557b4d9ec67a12462 (mode 644)
--- /dev/null
+++ wiki.d/Acme-client.Configure-Draft,del-1731467796
@@ -0,0 +1,214 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230121
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1614076701
+host=198.251.82.194
+name=Acme-client.Configure-Draft
+rev=64
+targets=Openhttpd.Configure,Dns.Overview,Host.Usage,Netcat.Http,Crontab.Edit,Nsd.Troubleshoot,Telnet.Http,Openssl.Http
+text=(:title Configuring Acme-client:)%0a%0aTo enable TLS, you will want a certificate signed by a trusted certificate%0aauthority (CA). In this guide, we'll use OpenBSD's%0a[[https://man.openbsd.org/acme-client.1|acme-client(1)]] with Let's Encrypt.%0a%0a!! Overview%0a%0aTLS (Transport Layer Security) aka SSL (Secure Sockets Layer) is the encryption security measure that enables browsers to recognize a website as "secure". In modern browsers the SSL information can be accessed by clicking the padlock icon in the address bar. %0a%0aSSL certificates are obtained from CAs (Certificate Authorities). Currently, the only free CAs are [[https://letsencrypt.org/getting-started/ | Lets Encrypt]], [[https://www.buypass.com/ssl/products/acme | Buypass]] and [[https://zerossl.com/ | ZeroSSL]]. You can request an SSL cert for your web domain using an Automatic Certificate Management Environment (ACME) client such as OpenBSD's Acme-client, which we will configure in this article.%0a%0a!!! Before You Begin %0a%0aYou will first need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need properly functioning [[dns/overview|DNS records]] for your hostname (@@username.example.com@@). If you are using a training vps, it is likely that DNS records for your hostname have already been set up for you.%0a%0aYou can and should test the two configurations using [[host/usage|host]] and [[netcat/http|netcat]].%0a%0aNote: You must have a server block in [[https://man.openbsd.org/httpd.conf|/etc/httpd.conf]] listening on port 80. Do not delete this block or else acme-client will not work.%0a%0a!! Configuration%0a%0aFirst, copy the [[https://man.openbsd.org/acme-client.conf|acme-client.conf]] template:%0a%0a[@%0a$ doas cp /etc/examples/acme-client.conf /etc/acme-client.conf%0a@]%0a%0aWe'll open up [@ /etc/acme-client.conf @] and analyze the meaning of each block:%0a%0a!!! Authority blocks%0a%0a[@%0aauthority letsencrypt {%0a        api url "https://acme-v02.api.letsencrypt.org/directory"%0a        account key "/etc/acme/letsencrypt-privkey.pem"%0a}%0a@]%0a%0aThis defines the Certificate Authority [[https://letsencrypt.org/|letsencrypt]]. It provides the API URL and the location of the account key.%0a%0a'''Note''': Let's Encrypt [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of SSL certs you can request. If you encounter an error and are unable to request an SSL cert, please fix all errors before requesting again. If you request too many certs in a short time, your domain will get blacklisted for a few hours or days. To avoid issues, use letsencrypt-staging first and make sure you get success with that before using letsencrypt.%0a%0aAlthough we are using Let's Encrypt for this tutorial, it is important to note that having the majority of servers depend upon a single provider is dangerous. For this reason, it would be beneficial to someday have the community run its own Certificate Authority to avoid censorship of domains or other security issues.%0a%0a[@%0aauthority letsencrypt-staging {%0a        api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a        account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a}%0a@]%0a%0aletsencrypt-staging is a staging server which you can use to practice requesting fake certificates. The rate limits for the staging server are less strict, so you should practice first with this CA.%0a%0aTo both of these blocks, we will want to add our contact email, so we add [@contact "mailto:me@example.com" @] inside both blocks. (make sure to have the @@mailto:@@):%0a%0a[@%0aauthority letsencrypt {%0a        api url "https://acme-v02.api.letsencrypt.org/directory"%0a        account key "/etc/acme/letsencrypt-privkey.pem"%0a        contact "mailto:me@example.com"%0a}%0a%0aauthority letsencrypt-staging {%0a        api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a        account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a        contact "mailto:me@example.com"%0a}%0a@]%0a%0aNext, the default [[https://man.openbsd.org/acme-client.conf|acme-client.conf]] defines two more authorities:%0a%0a[@%0aauthority buypass {%0a        api url "https://api.buypass.com/acme/directory"%0a        account key "/etc/acme/buypass-privkey.pem"%0a        contact "mailto:me@example.com"%0a}%0a%0aauthority buypass-test {%0a        api url "https://api.test4.buypass.no/acme/directory"%0a        account key "/etc/acme/buypass-test-privkey.pem"%0a        contact "mailto:me@example.com"%0a}%0a@]%0a%0aThese two blocks are the same as for letsencrypt, but with the alternative provider [[https://buypass.com/|buypass]]. Make sure to replace the contact email with your own email.%0a%0a!!! Domain Block%0a%0a[@%0adomain example.com {%0a        alternative names { secure.example.com }%0a        domain key "/etc/ssl/private/example.com.key"%0a        domain full chain certificate "/etc/ssl/example.com.crt"%0a        sign with letsencrypt%0a}%0a@]%0a%0aFirst, replace every appearance of @@example.com@@ with your own domain.%0a%0aEach SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.com@@ and the alternative names @@www.example.com@@ and @@mail.example.com@@. You can safely skip this by commenting out this line (see warning below)%0a%0aIf you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, we recommend keeping the number of alternative names to under 5.%0a%0a'''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. For example, the below will cause errors:%0a%0a[@%0aalternative names { }%0a@]%0a%0aIf you don't need any alternative names, you should comment this line out by putting a # at the beginning of the line, like so:%0a%0a[@%0a#        alternative names { }%0a@]%0a%0a'''Note''': If you add an alternative name to the conf file, but the cert already exists, you must remove the old public cert first before requesting a new one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will complain there is an unknown '''Subject Alternative Name'''.%0a%0aNext, the @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a%0a[@%0a        domain key "/etc/ssl/private/example.com.key"%0a        domain full chain certificate "/etc/ssl/example.com.crt"%0a@]%0a%0aThe public key goes inside the folder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a%0aThe line @@sign with letsencrypt@@ line tells Acme-client which Certificate Authority (which you defined in the Authority Blocks) to use.%0a%0aFor testing purposes, you may want to change it to @@letsencrypt-staging@@. You can also consider using @@buypass@@ or @@buypass-test@@.%0a%0a'''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority (such as @@sign with letsencrypt@@).%0a%0a!! Requesting Certificates%0a%0aAfter you have finished configuring the conf file, we can request certificates:%0a%0a[@%0a$ doas acme-client -Fv example.com%0a@]%0a%0aIf there are no errors, you should see something similar to the following output:%0a%0a[@%0a$ doas acme-client -Fv example.com%0aacme-client: /etc/acme/letsencrypt-privkey.pem: generated RSA account key%0aacme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0aacme-client: https://acme-v02.api.letsencrypt.org/directory: directories%0aacme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248%0aacme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/11133258838%0aacme-client: challenge, token: uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A, status: 0%0aacme-client: /var/www/acme/uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs: created%0aacme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A: challenge%0aacme-client: order.status 0%0aacme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/11133258838%0aacme-client: challenge, token: uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A, status: 2%0aacme-client: order.status 1%0aacme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/113861127/8112730231: certificate%0aacme-client: order.status 3%0aacme-client: https://acme-v02.api.letsencrypt.org/acme/cert/03f7fd846802cb0689c2bbd7b6f5e89eb66b: certificate%0aacme-client: /etc/ssl/example.com.crt: created%0a@]%0a%0aThe last line says that the public certificate was generated. If you see that, it's a success!%0a%0aYou now have two certificates, the public key inside @@/etc/ssl/example.com.crt@@, and the private key inside @@/etc/ssl/private/example.com.key@@:%0a%0a[@%0a$ doas ls -l /etc/ssl/example.com.crt /etc/ssl/private/example.com.key%0a-r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/example.com.crt%0a-r--------  1 root  wheel  3272 Feb 25 02:10 /etc/ssl/private/example.com.key%0a@]%0a%0a!! Automation%0a%0aLet's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a%0a[@%0a$ doas crontab -e%0a@]%0a%0aAdd this line at the bottom:%0a%0a[@%0a~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a@]%0a%0aThis cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a%0a!! Troubleshooting%0a%0aIf acme-client fails, there are several possible causes:%0a%0a!!! Domain Not Listed%0a%0aIf you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a %0a[@%0aacme-client: /etc/ssl/example.com.crt: domain not listed: new.example.com%0a@]%0a%0aHere, @@new.example.com@@ was a new alternative name you added. The solution is to move your old public cert and private key to a new location (to back it up). Then, request the cert again.%0a%0a[@%0a$ doas mv /etc/ssl/example.com.crt /etc/ssl/example.com.crt.bak%0a$ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a@]%0a%0aThen request the cert again:%0a%0a[@%0a$ doas acme-client -Fv example.com%0a@]%0a%0a!!! Missing Domain Records%0a%0aIt's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a%0a[@%0a$ host example.com%0a@]%0a%0aYou should see one or two records like the following:%0a%0a[@%0aexample.com has address 93.184.216.34%0aexample.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a@]%0a%0aIf you have missing records, you will see this response:%0a%0a[@%0aHost example.com not found: 3(NXDOMAIN)%0a@]%0a%0aYou will either need to speak with your DNS provider or troubleshoot [[nsd/troubleshoot|nsd]]. If DNS records are missing or incorrect, fix these first.%0a%0aThe IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. If they do not match, you must fix this.%0a%0a'''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a%0aLastly, if your DNS record includes an IPv6 address, make sure your web server is listening on IPv6. If the DNS record contains an IPv4 address, make sure your web server is listening on IPv4.%0a%0a!!! OpenHTTPd Misconfigured%0a%0aIf [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a%0a(acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. )%0a%0aTo test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain) on another computer.%0a%0a[@%0a$ telnet example.com 80%0aGET /index.html HTTP/1.1%0aHost: example.com%0a@]%0a%0aIf you do not get the correct response, double check your [[openhttpd/configure|openhttpd configuration]].%0a%0a'''Note''': Although a web browser can also be used for testing, many web browsers automatically forward all port 80 requests to port 443. As a result, your web browser will only see what is listening on port 443, whereas the certificate authority tests port 80 only.%0a%0a!!! Incorrect File Permissions%0a%0aDouble check @@/var/www@@ and @@/var/www/acme@@ for correct file permissions:%0a%0a[@%0a$ ls -ld /var/www /var/www/acme%0adrwxr-xr-x  10 root  daemon  512 Oct  5 07:47 /var/www%0adrwxr-xr-x   2 root  daemon  512 Oct  5 07:47 /var/www/acme%0a@]%0a%0aSee Also:%0a%0a|| border=1 width=100%25 class="sortable simpletable"%0a|| [[openhttpd/configure|Configure OpenHTTPd]] || Configure HTTPd ||%0a|| [[telnet/http|Telnet HTTP]] || Use Telnet to Troubleshoot HTTP ||%0a|| [[openssl/http|OpenSSL HTTP]] || Use OpenSSL to Troubleshoot HTTPS ||%0a
+time=1731466737
+title=Configuring Acme-client
+author:1731466737=jrmu
+diff:1731466737:1677449211:=3,5c3%0a%3c To enable TLS, you will want a certificate signed by a trusted certificate%0a%3c authority (CA). In this guide, we'll use OpenBSD's%0a%3c [[https://man.openbsd.org/acme-client.1|acme-client(1)]] with Let's Encrypt.%0a---%0a> To enable TLS, you will want a certificate signed by a trusted certificate authority (CA). In this guide, we'll use OpenBSD's [[https://man.openbsd.org/acme-client|acme-client]] with Let's Encrypt.%0a
+host:1731466737=198.251.82.194
+author:1677449211=jrmu
+csum:1677449211=Revert as I'm not sure if /etc/daily.local is better
+diff:1677449211:1676040598:=175,176c175,176%0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a%3c %0a---%0a> Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]] by writing script at @@/etc/daily.local@@%0a> %0a178c178%0a%3c $ doas crontab -e%0a---%0a> $ nano /etc/daily.local%0a181,182c181,182%0a%3c Add this line at the bottom:%0a%3c %0a---%0a> Add this code at the script file:%0a> %0a184c184,186%0a%3c ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a---%0a> #!/bin/ksh%0a> %0a> acme-client -v example.com >> /var/log/acme-client.log 2>&1%0a187c189,190%0a%3c This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a---%0a> %0a> This cronjob script will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a
+host:1677449211=38.87.162.8
+author:1676040598=Yonle
+diff:1676040598:1676040568:=186c186%0a%3c acme-client -v example.com >> /var/log/acme-client.log 2>&1%0a---%0a> acme-client example.com >> /var/log/acme-client.log 2>&1%0a
+host:1676040598=114.125.5.157
+author:1676040568=Yonle
+diff:1676040568:1676040479:=181c181%0a%3c Add this code at the script file:%0a---%0a> Add this line at the script file:%0a
+host:1676040568=114.125.5.157
+author:1676040479=Yonle
+csum:1676040479=Use /etc/daily.local
+diff:1676040479:1655193716:=175,176c175,176%0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]] by writing script at @@/etc/daily.local@@%0a%3c %0a---%0a> Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a> %0a178c178%0a%3c $ nano /etc/daily.local%0a---%0a> $ doas crontab -e%0a181,182c181,182%0a%3c Add this line at the script file:%0a%3c %0a---%0a> Add this line at the bottom:%0a> %0a184,186c184%0a%3c #!/bin/ksh%0a%3c %0a%3c acme-client example.com >> /var/log/acme-client.log 2>&1%0a---%0a> ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a189,190c187%0a%3c %0a%3c This cronjob script will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a---%0a> This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a
+host:1676040479=114.125.5.157
+author:1655193716=jrmu
+diff:1655193716:1655192828:=173,176c173,180%0a%3c !! Automation%0a%3c %0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a%3c %0a---%0a> !! Troubleshooting%0a> %0a> If acme-client fails, there are several possible causes:%0a> %0a> !!! Domain Not Listed%0a> %0a> If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a>  %0a178c182%0a%3c $ doas crontab -e%0a---%0a> acme-client: /etc/ssl/example.com.crt: domain not listed: new.example.com%0a181,182c185,186%0a%3c Add this line at the bottom:%0a%3c %0a---%0a> Here, @@new.example.com@@ was a new alternative name you added. The solution is to move your old public cert and private key to a new location (to back it up). Then, request the cert again.%0a> %0a184c188,189%0a%3c ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a---%0a> $ doas mv /etc/ssl/example.com.crt /etc/ssl/example.com.crt.bak%0a> $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a187,196c192,193%0a%3c This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a%3c %0a%3c !! Troubleshooting%0a%3c %0a%3c If acme-client fails, there are several possible causes:%0a%3c %0a%3c !!! Domain Not Listed%0a%3c %0a%3c If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a%3c  %0a---%0a> Then request the cert again:%0a> %0a198c195%0a%3c acme-client: /etc/ssl/example.com.crt: domain not listed: new.example.com%0a---%0a> $ doas acme-client -Fv example.com%0a201,202c198,201%0a%3c Here, @@new.example.com@@ was a new alternative name you added. The solution is to move your old public cert and private key to a new location (to back it up). Then, request the cert again.%0a%3c %0a---%0a> !!! Missing Domain Records%0a> %0a> It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a> %0a204,205c203%0a%3c $ doas mv /etc/ssl/example.com.crt /etc/ssl/example.com.crt.bak%0a%3c $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a---%0a> $ host example.com%0a208,209c206,207%0a%3c Then request the cert again:%0a%3c %0a---%0a> You should see one or two records like the following:%0a> %0a211c209,210%0a%3c $ doas acme-client -Fv example.com%0a---%0a> example.com has address 93.184.216.34%0a> example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a214,217c213,214%0a%3c !!! Missing Domain Records%0a%3c %0a%3c It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a%3c %0a---%0a> If you have missing records, you will see this response:%0a> %0a219c216%0a%3c $ host example.com%0a---%0a> Host example.com not found: 3(NXDOMAIN)%0a222,234d218%0a%3c You should see one or two records like the following:%0a%3c %0a%3c [@%0a%3c example.com has address 93.184.216.34%0a%3c example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a%3c @]%0a%3c %0a%3c If you have missing records, you will see this response:%0a%3c %0a%3c [@%0a%3c Host example.com not found: 3(NXDOMAIN)%0a%3c @]%0a%3c %0a249,250c233,234%0a%3c To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain) on another computer.%0a%3c %0a---%0a> To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain) from another computer:%0a> %0a257,264c241,242%0a%3c If you do not get the correct response, double check your [[openhttpd/configure|openhttpd configuration]].%0a%3c %0a%3c '''Note''': Although a web browser can also be used for testing, many web browsers automatically forward all port 80 requests to port 443. As a result, your web browser will only see what is listening on port 443, whereas the certificate authority tests port 80 only.%0a%3c %0a%3c !!! Incorrect File Permissions%0a%3c %0a%3c Double check @@/var/www@@ and @@/var/www/acme@@ for correct file permissions:%0a%3c %0a---%0a> You should a response similar to the one below:%0a> %0a266,268c244,251%0a%3c $ ls -ld /var/www /var/www/acme%0a%3c drwxr-xr-x  10 root  daemon  512 Oct  5 07:47 /var/www%0a%3c drwxr-xr-x   2 root  daemon  512 Oct  5 07:47 /var/www/acme%0a---%0a> HTTP/1.0 302 Found%0a> Date: Tue, 23 Feb 2021 14:01:28 GMT%0a> OpenBSD httpd%0a> Connection: close%0a> Content-Type: text/html%0a> Content-Length: 486%0a> Location: https://example.com/index.html%0a> ...%0a269a253,283%0a> %0a> If you do not get this response, double check your openhttpd configuration.%0a> %0a> '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests for port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a> %0a> %0a> !!! Incorrect File Permissions%0a> %0a> Double check the file permissions for /var/www and /var/www/acme:%0a> %0a> [@%0a> $ ls -ld /var/www /var/www/acme%0a> drwxr-xr-x  10 root  daemon  512 Oct  5 07:47 /var/www%0a> drwxr-xr-x   2 root  daemon  512 Oct  5 07:47 /var/www/acme%0a> @]%0a> %0a> !! Automation%0a> %0a> Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a> %0a> [@%0a> $ doas crontab -e%0a> @]%0a> %0a> Add this line at the bottom:%0a> %0a> [@%0a> ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a> @]%0a> %0a> This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a
+host:1655193716=38.87.162.154
+author:1655192828=jrmu
+diff:1655192828:1655192572:=212a213,222%0a> The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on.%0a> %0a> '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a> %0a> There are a few possible mistakes:%0a> %0a> # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a> # You have the wrong IP addresses.%0a> # DNS records are missing.%0a> %0a219,225c229%0a%3c You will either need to speak with your DNS provider or troubleshoot [[nsd/troubleshoot|nsd]]. If DNS records are missing or incorrect, fix these first.%0a%3c %0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. If they do not match, you must fix this.%0a%3c %0a%3c '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a%3c %0a%3c Lastly, if your DNS record includes an IPv6 address, make sure your web server is listening on IPv6. If the DNS record contains an IPv4 address, make sure your web server is listening on IPv4.%0a---%0a> You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a
+host:1655192828=38.87.162.154
+author:1655192572=jrmu
+diff:1655192572:1655191866:=125,136c125,131%0a%3c The public key goes inside the folder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a%3c %0a%3c The line @@sign with letsencrypt@@ line tells Acme-client which Certificate Authority (which you defined in the Authority Blocks) to use.%0a%3c %0a%3c For testing purposes, you may want to change it to @@letsencrypt-staging@@. You can also consider using @@buypass@@ or @@buypass-test@@.%0a%3c %0a%3c '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority (such as @@sign with letsencrypt@@).%0a%3c %0a%3c !! Requesting Certificates%0a%3c %0a%3c After you have finished configuring the conf file, we can request certificates:%0a%3c %0a---%0a> Replace @@example.com@@ with your real domain. The public key goes inside the folder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a> %0a> %0a> sign with: %0a> %0a> this line tells Acme-client which CA (that you defined in the Authority Blocks) to use.%0a> %0a138c133%0a%3c $ doas acme-client -Fv example.com%0a---%0a>         sign with letsencrypt%0a141,142c136,143%0a%3c If there are no errors, you should see something similar to the following output:%0a%3c %0a---%0a> would cause it to use the CA @@ letsencrypt @@. For testing purposes, change it to @@ letsencrypt-staging @@. If you want to use @@ buypass @@ or it's testing CA  @@ buypass-test @@, then change it accordingly.%0a> %0a> '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority (@@sign with letsencrypt@@).%0a> %0a> !! Requesting Certificates%0a> %0a> After you have finished configuring the conf file, we can request certificates:%0a> %0a144a146,153%0a> @]%0a> %0a> replace @@ example.com @@ with your domain.%0a> %0a> If there are no errors, you should see something similar to the following output:%0a> %0a> [@%0a> $ doas acme-client -Fv example.com%0a163,166c172,175%0a%3c The last line says that the public certificate was generated. If you see that, it's a success!%0a%3c %0a%3c You now have two certificates, the public key inside @@/etc/ssl/example.com.crt@@, and the private key inside @@/etc/ssl/private/example.com.key@@:%0a%3c %0a---%0a> Note the last line: it says that the public certificate was generated. If you see that, it's a success!%0a> %0a> You now have two certificates, the public key inside @@/etc/ssl/example.com.crt@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to):%0a> %0a169,170c178,179%0a%3c -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/example.com.crt%0a%3c -r--------  1 root  wheel  3272 Feb 25 02:10 /etc/ssl/private/example.com.key%0a---%0a> -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/jrmu.coconut.ircnow.org.crt%0a> -r--------  1 root  wheel  3272 Feb 25 02:10 /etc/ssl/private/jrmu.coconut.ircnow.org.key%0a185,186c194,197%0a%3c Here, @@new.example.com@@ was a new alternative name you added. The solution is to move your old public cert and private key to a new location (to back it up). Then, request the cert again.%0a%3c %0a---%0a> Here, @@new.example.com@@ was a new alternative name I added. The solution is to move your old public cert and private key to a new location (rather than deleting it, back it up!)%0a> %0a> Example (using example.com):%0a> %0a197a209%0a> %0a217c229%0a%3c There are a few possible mistakes:%0a---%0a>  There are a few possible mistakes:%0a
+host:1655192572=38.87.162.154
+author:1655191866=jrmu
+diff:1655191866:1655191536:=98,105c98,105%0a%3c First, replace every appearance of @@example.com@@ with your own domain.%0a%3c %0a%3c Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.com@@ and the alternative names @@www.example.com@@ and @@mail.example.com@@. You can safely skip this by commenting out this line (see warning below)%0a%3c %0a%3c If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, we recommend keeping the number of alternative names to under 5.%0a%3c %0a%3c '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. For example, the below will cause errors:%0a%3c %0a---%0a> domain: This would configure acme-client for the domain @@ example.com @@. Replace every appearance of @@ example.com @@ with your own domain, which might look like @@ username.fruit.ircnow.org @@.%0a> %0a> alternative names: Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@ example.ircnow.org @@ and the alternative names @@ fruit.ircnow.org @@ and @@ vegetable.ircnow.org @@. You can safely skip this by commenting out this line (see warning below)%0a> %0a> If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, I recommend keeping the number of alternative names to under 5.%0a> %0a> '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. The below will cause errors:%0a> %0a116,118c116,121%0a%3c '''Note''': If you add an alternative name to the conf file, but the cert already exists, you must remove the old public cert first before requesting a new one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will complain there is an unknown '''Subject Alternative Name'''.%0a%3c %0a%3c Next, the @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a---%0a> %0a> '''Note''': If you add an alternative name to the conf file, but the cert already exists, you must remove the old public cert first before requesting a new one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will complain there is an unknown Subject Alternative Name.%0a> %0a> domain key, domain full chain certificate:%0a> %0a> The @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a
+host:1655191866=38.87.162.154
+author:1655191536=jrmu
+diff:1655191536:1649038510:=42c42%0a%3c Although we are using Let's Encrypt for this tutorial, it is important to note that having the majority of servers depend upon a single provider is dangerous. For this reason, it would be beneficial to someday have the community run its own Certificate Authority to avoid censorship of domains or other security issues.%0a---%0a> Although we are using Let's Encrypt for this tutorial, it is important to note that Let's Encrypt currently has a monopoly on free SSL certs. For this reason, IRCNow wants to run its own Certificate Authority in case Let's Encrypt should try to censor our domains.%0a
+host:1655191536=38.87.162.154
+author:1649038510=jrmu
+diff:1649038510:1644404186:=299c299%0a%3c ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1%0a---%0a> ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1 && rcctl reload httpd%0a302c302%0a%3c This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert.%0a---%0a> This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert, then reload openhttpd to use it.%0a
+host:1649038510=38.87.162.154
+author:1644404186=SummerSonw
+csum:1644404186=https://acme-staging-v02.api.letsencrypt.org/directory
+diff:1644404186:1644404177:=
+host:1644404186=203.77.49.232
+author:1644404177=SummerSonw
+csum:1644404177=https://acme-staging-v02.api.letsencrypt.org/directory
+diff:1644404177:1644404155:=
+host:1644404177=203.77.49.232
+author:1644404155=SummerSonw
+csum:1644404155=https://acme-staging-v02.api.letsencrypt.org/directory
+diff:1644404155:1643583464:=46c46%0a%3c         api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a---%0a>         api url "https://acme-staging.api.letsencrypt.org/directory"%0a
+host:1644404155=203.77.49.232
+author:1643583464=jrmu
+diff:1643583464:1643202311:=299c299%0a%3c ~       ~       *       *       *       acme-client example.com >> /var/log/acme-client.log 2>&1 && rcctl reload httpd%0a---%0a> ~       ~       *       *       *       acme-client example.com && rcctl reload httpd%0a
+host:1643583464=38.87.162.8
+author:1643202311=Naglfar
+csum:1643202311=Update crontab reference
+diff:1643202311:1642281315:=290c290%0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/edit|crontab]].%0a---%0a> Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/configure|crontab]].%0a
+host:1643202311=92.191.225.58
+author:1642281315=jan6
+csum:1642281315=fix renewal crontab to run randomly once a day, not once an hour
+diff:1642281315:1636907615:minor=299c299%0a%3c ~       ~       *       *       *       acme-client example.com && rcctl reload httpd%0a---%0a> ~       *       *       *       *       acme-client example.com && rcctl reload httpd%0a
+host:1642281315=2a01:4f9:c010:291f::1
+author:1636907615=theguest
+diff:1636907615:1635981333:minor=9c9%0a%3c SSL certificates are obtained from CAs (Certificate Authorities). Currently, the only free CAs are [[https://letsencrypt.org/getting-started/ | Lets Encrypt]], [[https://www.buypass.com/ssl/products/acme | Buypass]] and [[https://zerossl.com/ | ZeroSSL]]. You can request an SSL cert for your web domain using an Automatic Certificate Management Environment (ACME) client such as OpenBSD's Acme-client, which we will configure in this article.%0a---%0a> SSL certificates are obtained from CA's (Certificate Authorities). Currently, the only free CA is Lets Encrypt. You can request an SSL cert for your web domain using an Automatic Certificate Management Environment (ACME) client such as OpenBSD's Acme-client, which we will configure in this article.%0a
+host:1636907615=38.87.162.129
+author:1635981333=jrmu
+diff:1635981333:1635936085:=93c93%0a%3c         domain full chain certificate "/etc/ssl/example.com.crt"%0a---%0a>         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a125c125%0a%3c         domain full chain certificate "/etc/ssl/example.com.crt"%0a---%0a>         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a172c172%0a%3c acme-client: /etc/ssl/example.com.crt: created%0a---%0a> acme-client: /etc/ssl/example.com.fullchain.pem: created%0a177,178c177,178%0a%3c You now have two certificates, the public key inside @@/etc/ssl/example.com.crt@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to):%0a%3c %0a---%0a> You now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to):%0a> %0a180,181c180,181%0a%3c $ doas ls -l /etc/ssl/example.com.crt /etc/ssl/private/example.com.key%0a%3c -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/jrmu.coconut.ircnow.org.crt%0a---%0a> $ doas ls -l /etc/ssl/example.com.fullchain.pem /etc/ssl/private/example.com.key%0a> -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/jrmu.coconut.ircnow.org.fullchain.pem%0a194c194%0a%3c acme-client: /etc/ssl/example.com.crt: domain not listed: new.example.com%0a---%0a> acme-client: /etc/ssl/example.com.fullchain.pem: domain not listed: new.example.com%0a202c202%0a%3c $ doas mv /etc/ssl/example.com.crt /etc/ssl/example.com.crt.bak%0a---%0a> $ doas mv /etc/ssl/example.com.fullchain.pem /etc/ssl/example.com.fullchain.pem.bak%0a
+host:1635981333=38.87.162.47
+author:1635936085=jrmu
+diff:1635936085:1629257098:=11,15c11,15%0a%3c !!! Before You Begin %0a%3c %0a%3c You will first need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need properly functioning [[dns/overview|DNS records]] for your hostname (@@username.example.com@@). If you are using a training vps, it is likely that DNS records for your hostname have already been set up for you.%0a%3c %0a%3c You can and should test the two configurations using [[host/usage|host]] and [[netcat/http|netcat]].%0a---%0a> !!! Prerequisites %0a> %0a> Openhttpd:%0a> %0a> Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS records]] for your hostname, which might look like @@username.fruit.ircnow.org@@. If you are using a training vps, it is likely that your DNS record (your domain) is already set up for now, and will have the form @@username.host.ircnow.org@@%0a
+host:1635936085=38.87.162.47
+author:1629257098=craziness
+csum:1629257098=fixed a misspelling
+diff:1629257098:1626873311:=128c128%0a%3c Replace @@example.com@@ with your real domain. The public key goes inside the folder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a---%0a> Replace @@example.com@@ with your real domain. The public key goes inside the forlder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a
+host:1629257098=2601:546:8200:3710::66f4
+author:1626873311=mistera
+diff:1626873311:1626873281:=141c141%0a%3c '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority (@@sign with letsencrypt@@).%0a---%0a> '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority.%0a
+host:1626873311=204.111.39.57
+author:1626873281=mistera
+diff:1626873281:1626871882:=
+host:1626873281=204.111.39.57
+author:1626871882=mistera
+diff:1626871882:1626871865:=55c55%0a%3c [@%0a---%0a> @@%0a67c67%0a%3c @]%0a---%0a> @@%0a
+host:1626871882=204.111.39.57
+author:1626871865=mistera
+diff:1626871865:1626871816:=55c55%0a%3c @@%0a---%0a> [@%0a67c67%0a%3c @@%0a---%0a> @]%0a
+host:1626871865=204.111.39.57
+author:1626871816=mistera
+diff:1626871816:1626871739:=53c53%0a%3c To both of these blocks, we will want to add our contact email, so we add [@contact "mailto:me@example.com" @] inside both blocks. (make sure to have the @@mailto:@@):%0a---%0a> To both of these blocks, we will want to add our contact email, so we add @@contact mailto:me@example.com @@ inside both blocks:%0a
+host:1626871816=204.111.39.57
+author:1626871739=mistera
+diff:1626871739:1626871579:=53c53%0a%3c To both of these blocks, we will want to add our contact email, so we add @@contact mailto:me@example.com @@ inside both blocks:%0a---%0a> To both of these blocks, we will want to add our contact email, so we add @@contact "mailto:me@example.com"@@ inside both blocks:%0a
+host:1626871739=204.111.39.57
+author:1626871579=mistera
+diff:1626871579:1626788685:=27c27%0a%3c We'll open up [@ /etc/acme-client.conf @] and analyze the meaning of each block:%0a---%0a> We'll open up /etc/acme-client.conf and analyze the meaning of each block:%0a
+host:1626871579=204.111.39.57
+author:1626788685=mistera
+diff:1626788685:1626786887:=5c5%0a%3c !! Overview%0a---%0a> !! Theory%0a
+host:1626788685=204.111.39.57
+author:1626786887=mistera
+diff:1626786887:1619180493:=5,16c5,8%0a%3c !! Theory%0a%3c %0a%3c TLS (Transport Layer Security) aka SSL (Secure Sockets Layer) is the encryption security measure that enables browsers to recognize a website as "secure". In modern browsers the SSL information can be accessed by clicking the padlock icon in the address bar. %0a%3c %0a%3c SSL certificates are obtained from CA's (Certificate Authorities). Currently, the only free CA is Lets Encrypt. You can request an SSL cert for your web domain using an Automatic Certificate Management Environment (ACME) client such as OpenBSD's Acme-client, which we will configure in this article.%0a%3c %0a%3c !!! Prerequisites %0a%3c %0a%3c Openhttpd:%0a%3c %0a%3c Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS records]] for your hostname, which might look like @@username.fruit.ircnow.org@@. If you are using a training vps, it is likely that your DNS record (your domain) is already set up for now, and will have the form @@username.host.ircnow.org@@%0a%3c %0a---%0a> !! Setting up OpenHTTPd%0a> %0a> Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS records]] for your hostname, which might look like @@username.fruit.ircnow.org@@.%0a> %0a29,30d20%0a%3c !!! Authority blocks%0a%3c %0a40,41c30,31%0a%3c '''Note''': Let's Encrypt [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of SSL certs you can request. If you encounter an error and are unable to request an SSL cert, please fix all errors before requesting again. If you request too many certs in a short time, your domain will get blacklisted for a few hours or days. To avoid issues, use letsencrypt-staging first and make sure you get success with that before using letsencrypt.%0a%3c %0a---%0a> '''Note''': Let's Encrypt [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of SSL certs you can request. If you encounter an error and are unable to request an SSL cert, please fix all errors before requesting again. If you request too many certs in a short time, your domain will get blacklisted for a few hours or days.%0a> %0a87,88d76%0a%3c !!! Domain Block%0a%3c %0a98,101c86,89%0a%3c domain: This would configure acme-client for the domain @@ example.com @@. Replace every appearance of @@ example.com @@ with your own domain, which might look like @@ username.fruit.ircnow.org @@.%0a%3c %0a%3c alternative names: Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@ example.ircnow.org @@ and the alternative names @@ fruit.ircnow.org @@ and @@ vegetable.ircnow.org @@. You can safely skip this by commenting out this line (see warning below)%0a%3c %0a---%0a> This configures acme-client for the domain example.com. You'll want to replace every appearance of @@example.com@@ with your own domain, which might look like @@username.fruit.ircnow.org@@.%0a> %0a> Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.ircnow.org@@ and the alternative names @@fruit.ircnow.org@@ and @@vegetable.ircnow.org@@.%0a> %0a119,120d106%0a%3c domain key, domain full chain certificate:%0a%3c %0a128,134c114,117%0a%3c Replace @@example.com@@ with your real domain. The public key goes inside the forlder @@/etc/ssl@@ and the private key goes inside @@/etc/ssl/private@@.%0a%3c %0a%3c %0a%3c sign with: %0a%3c %0a%3c this line tells Acme-client which CA (that you defined in the Authority Blocks) to use.%0a%3c %0a---%0a> You will want to replace @@example.com@@ with your real domain. The public key should go inside @@/etc/ssl@@ and the private key should go inside @@/etc/ssl/private@@.%0a> %0a> If you want to sign with buypass, test a staging certificate (to avoid using up your rate-limit), or switch to another authority, then edit this line:%0a> %0a139,142c122,128%0a%3c would cause it to use the CA @@ letsencrypt @@. For testing purposes, change it to @@ letsencrypt-staging @@. If you want to use @@ buypass @@ or it's testing CA  @@ buypass-test @@, then change it accordingly.%0a%3c %0a%3c '''Note''': staging or testing certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, change this line back to an official authority.%0a%3c %0a---%0a> Change it to match one of your defined authorities. For example:%0a> %0a> # To test with letsencrypt-staging, replace it with @@sign with letsencrypt-staging@@.%0a> # To sign with buypass, replace it with @@sign with buypass@@.%0a> %0a> '''Note''': staging certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, you will want to get a properly signed one.%0a> %0a151,152d136%0a%3c replace @@ example.com @@ with your domain.%0a%3c %0a175,176c159,160%0a%3c Note the last line: it says that the public certificate was generated. If you see that, it's a success!%0a%3c %0a---%0a> Pay attention to the last line: it says that the public certificate was generated. If you see that, it's a success!%0a> %0a189,192c173,176%0a%3c !!! Domain Not Listed%0a%3c %0a%3c If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a%3c  %0a---%0a> !!! Missing Domain Records%0a> %0a> It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a> %0a194c178%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: domain not listed: new.example.com%0a---%0a> $ host example.com%0a197,200c181,182%0a%3c Here, @@new.example.com@@ was a new alternative name I added. The solution is to move your old public cert and private key to a new location (rather than deleting it, back it up!)%0a%3c %0a%3c Example (using example.com):%0a%3c %0a---%0a> You should see one or two records like the following:%0a> %0a202,203c184,185%0a%3c $ doas mv /etc/ssl/example.com.fullchain.pem /etc/ssl/example.com.fullchain.pem.bak%0a%3c $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a---%0a> example.com has address 93.184.216.34%0a> example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a206,207c188,199%0a%3c Then request the cert again:%0a%3c %0a---%0a> The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on.%0a> %0a> '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a> %0a>  There are a few possible mistakes:%0a> %0a> # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a> # You have the wrong IP addresses.%0a> # DNS records are missing.%0a> %0a> If you have missing records, you will see this response:%0a> %0a209c201%0a%3c $ doas acme-client -Fv example.com%0a---%0a> Host example.com not found: 3(NXDOMAIN)%0a212,216c204,211%0a%3c %0a%3c !!! Missing Domain Records%0a%3c %0a%3c It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a%3c %0a---%0a> You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a> %0a> !!! OpenHTTPd Misconfigured%0a> %0a> acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a> %0a> To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain):%0a> %0a218c213,215%0a%3c $ host example.com%0a---%0a> $ telnet example.com 80%0a> GET /index.html HTTP/1.1%0a> Host: example.com%0a221,222c218,219%0a%3c You should see one or two records like the following:%0a%3c %0a---%0a> You should a response similar to the one below:%0a> %0a224,225c221,228%0a%3c example.com has address 93.184.216.34%0a%3c example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a---%0a> HTTP/1.0 302 Found%0a> Date: Tue, 23 Feb 2021 14:01:28 GMT%0a> OpenBSD httpd%0a> Connection: close%0a> Content-Type: text/html%0a> Content-Length: 486%0a> Location: https://example.com/index.html%0a> ...%0a228,239c231,238%0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on.%0a%3c %0a%3c '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a%3c %0a%3c  There are a few possible mistakes:%0a%3c %0a%3c # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a%3c # You have the wrong IP addresses.%0a%3c # DNS records are missing.%0a%3c %0a%3c If you have missing records, you will see this response:%0a%3c %0a---%0a> If you do not get this response, double check your openhttpd configuration.%0a> %0a> '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests for port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a> %0a> !!! Domain Not Listed%0a> %0a> If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a>  %0a241c240%0a%3c Host example.com not found: 3(NXDOMAIN)%0a---%0a> acme-client: /etc/ssl/example.com.fullchain.pem: domain not listed: new.example.com%0a244,253c243,244%0a%3c You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a%3c %0a%3c !!! OpenHTTPd Misconfigured%0a%3c %0a%3c If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a%3c %0a%3c (acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. )%0a%3c %0a%3c To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain) from another computer:%0a%3c %0a---%0a> Here, @@new.example.com@@ was a new alternative name I added. The solution is to move your old public cert and private key to a new location, then request the cert again:%0a> %0a255,257c246,247%0a%3c $ telnet example.com 80%0a%3c GET /index.html HTTP/1.1%0a%3c Host: example.com%0a---%0a> $ doas mv /etc/ssl/example.com.fullchain.pem /etc/ssl/example.com.fullchain.pem.bak%0a> $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a260,261c250,251%0a%3c You should a response similar to the one below:%0a%3c %0a---%0a> Again, you must replace @@example.com@@ with your actual domain. Then:%0a> %0a263,270c253%0a%3c HTTP/1.0 302 Found%0a%3c Date: Tue, 23 Feb 2021 14:01:28 GMT%0a%3c OpenBSD httpd%0a%3c Connection: close%0a%3c Content-Type: text/html%0a%3c Content-Length: 486%0a%3c Location: https://example.com/index.html%0a%3c ...%0a---%0a> $ doas acme-client -Fv example.com%0a272,276d254%0a%3c %0a%3c If you do not get this response, double check your openhttpd configuration.%0a%3c %0a%3c '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests for port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a%3c %0a
+host:1626786887=204.111.39.57
+author:1619180493=jrmu
+diff:1619180493:1619176983:=105c105,106%0a%3c '''Note''': If you add an alternative name to the conf file, but the cert already exists, you must remove the old public cert first before requesting a new one. Otherwise, you will get @@unknown SAN error@@ -- acme-client will complain there is an unknown Subject Alternative Name.%0a---%0a> '+'''Please note that if you add an alternative name while there is already an existing cert, that you have to remove the old certs and then use continue.'''+'%0a> %0a
+host:1619180493=198.251.81.119
+author:1619176983=miniontoby
+csum:1619176983=cert
+diff:1619176983:1619176919:=104,107d103%0a%3c %0a%3c '+'''Please note that if you add an alternative name while there is already an existing cert, that you have to remove the old certs and then use continue.'''+'%0a%3c %0a%3c %0a281a278,282%0a> %0a> %0a> '+'''Please note that if you add an alternative name, that you have to remove the old certs and then use acme-client.'''+'%0a> %0a> %0a
+host:1619176983=77.168.188.164
+author:1619176919=miniontoby
+diff:1619176919:1614320419:=278,282d277%0a%3c %0a%3c %0a%3c '+'''Please note that if you add an alternative name, that you have to remove the old certs and then use acme-client.'''+'%0a%3c %0a%3c %0a
+host:1619176919=77.168.188.164
+author:1614320419=jrmu
+diff:1614320419:1614254423:=265c265%0a%3c Let's Encrypt TLS certs expire after 90 days, while Buypass certs expire after 180. For both, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/configure|crontab]].%0a---%0a> ACME TLS certs expire after 90 days. So, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/configure|crontab]].%0a
+host:1614320419=198.251.81.119
+author:1614254423=jrmu
+diff:1614254423:1614254344:=277c277%0a%3c This cronjob will check the certificate once each day, at a random time of day, to see if it needs to be renewed. If it does, it will renew the cert, then reload openhttpd to use it.%0a---%0a> This cronjob will check the certificate once a day to see if it needs to be renewed. If it does, it will renew the cert, then reload openhttpd to use it.%0a
+host:1614254423=198.251.81.119
+author:1614254344=jrmu
+diff:1614254344:1614248928:=262,277d261%0a%3c %0a%3c !! Automation%0a%3c %0a%3c ACME TLS certs expire after 90 days. So, you must remember to request the TLS cert or TLS will stop working. To avoid forgetting, we can automate the request process using [[crontab/configure|crontab]].%0a%3c %0a%3c [@%0a%3c $ doas crontab -e%0a%3c @]%0a%3c %0a%3c Add this line at the bottom:%0a%3c %0a%3c [@%0a%3c ~       *       *       *       *       acme-client example.com && rcctl reload httpd%0a%3c @]%0a%3c %0a%3c This cronjob will check the certificate once a day to see if it needs to be renewed. If it does, it will renew the cert, then reload openhttpd to use it.%0a
+host:1614254344=198.251.81.119
+author:1614248928=jrmu
+diff:1614248928:1614248764:=265,268c265,267%0a%3c || border=1 width=100%25 class="sortable simpletable"%0a%3c || [[openhttpd/configure|Configure OpenHTTPd]] || Configure HTTPd ||%0a%3c || [[telnet/http|Telnet HTTP]] || Use Telnet to Troubleshoot HTTP ||%0a%3c || [[openssl/http|OpenSSL HTTP]] || Use OpenSSL to Troubleshoot HTTPS ||%0a---%0a> [[openhttpd/configure|Configure OpenHTTPd]]%0a> [[telnet/HTTP|Telnet HTTP]]%0a> [[openssl/HTTP|OpenSSL HTTP]]%0a
+host:1614248928=198.251.81.119
+author:1614248764=jrmu
+diff:1614248764:1614248201:=247,252d246%0a%3c Again, you must replace @@example.com@@ with your actual domain. Then:%0a%3c %0a%3c [@%0a%3c $ doas acme-client -Fv example.com%0a%3c @]%0a%3c %0a261,267c255%0a%3c @]%0a%3c %0a%3c See Also:%0a%3c %0a%3c [[openhttpd/configure|Configure OpenHTTPd]]%0a%3c [[telnet/HTTP|Telnet HTTP]]%0a%3c [[openssl/HTTP|OpenSSL HTTP]]%0a---%0a> @]%0a\ No newline at end of file%0a
+host:1614248764=198.251.81.119
+author:1614248201=jrmu
+diff:1614248201:1614247880:=231,245d230%0a%3c %0a%3c !!! Domain Not Listed%0a%3c %0a%3c If you add a new alternative name inside your domain block in [[https://man.openbsd.org/acme-client.conf|/etc/acme-client.conf]], you will see this error:%0a%3c  %0a%3c [@%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: domain not listed: new.example.com%0a%3c @]%0a%3c %0a%3c Here, @@new.example.com@@ was a new alternative name I added. The solution is to move your old public cert and private key to a new location, then request the cert again:%0a%3c %0a%3c [@%0a%3c $ doas mv /etc/ssl/example.com.fullchain.pem /etc/ssl/example.com.fullchain.pem.bak%0a%3c $ doas mv /etc/ssl/private/example.com.key /etc/ssl/private/example.com.key.bak%0a%3c @]%0a
+host:1614248201=198.251.81.119
+author:1614247880=jrmu
+diff:1614247880:1614247705:=185,190c185,186%0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on.%0a%3c %0a%3c '''Note''': You '''cannot''' request a domain you don't own! The domain must point to an IP you own.%0a%3c %0a%3c  There are a few possible mistakes:%0a%3c %0a---%0a> The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. There are a few possible mistakes:%0a> %0a240c236,241%0a%3c @]%0a\ No newline at end of file%0a---%0a> @]%0a> %0a> !! Common errors%0a> %0a> # Do not request domains you don't own%0a> # If you change the domains, you need to move the cert and request again%0a\ No newline at end of file%0a
+host:1614247880=198.251.81.119
+author:1614247705=jrmu
+diff:1614247705:1614247508:=
+host:1614247705=198.251.81.119
+author:1614247508=jrmu
+diff:1614247508:1614247487:=
+host:1614247508=198.251.81.119
+author:1614247487=jrmu
+diff:1614247487:1614245123:=134,135c134,135%0a%3c If there are no errors, you should see something similar to the following output:%0a%3c %0a---%0a> If all goes well, you should see something similar to the following output:%0a> %0a156,159c156%0a%3c Pay attention to the last line: it says that the public certificate was generated. If you see that, it's a success!%0a%3c %0a%3c You now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to):%0a%3c %0a---%0a> %0a161,163c158%0a%3c $ doas ls -l /etc/ssl/example.com.fullchain.pem /etc/ssl/private/example.com.key%0a%3c -r--r--r--  1 root  wheel  4797 Feb 25 02:11 /etc/ssl/jrmu.coconut.ircnow.org.fullchain.pem%0a%3c -r--------  1 root  wheel  3272 Feb 25 02:10 /etc/ssl/private/jrmu.coconut.ircnow.org.key%0a---%0a> acme-client: /etc/ssl/example.com.fullchain.pem: created%0a164a160,174%0a> %0a> %0a> [@%0a> $ doas ls -l /etc/ssl/private%0a> -r--------  1 root  wheel  3272 Mar 28 22:16 example.com.key%0a> @]%0a>   # A PEM certificate under /etc/ssl e.g.%0a> [@%0a> $ ls -l /etc/ssl/*.pem%0a> -r--r--r--  1 root  wheel    3937 Mar 28 22:16 example.com.fullchain.pem%0a> @]%0a> %0a> It would have the following output of running acme-client, generating a certificate for example.com%0a> %0a> You should now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to).%0a
+host:1614247487=198.251.81.119
+author:1614245123=jrmu
+diff:1614245123:1614242993:=134,135c134,135%0a%3c If all goes well, you should see something similar to the following output:%0a%3c %0a---%0a> If all goes well, you should see the following line at the very bottom:%0a> %0a137,152d136%0a%3c $ doas acme-client -Fv example.com%0a%3c acme-client: /etc/acme/letsencrypt-privkey.pem: generated RSA account key%0a%3c acme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/directory: directories%0a%3c acme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/11133258838%0a%3c acme-client: challenge, token: uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A, status: 0%0a%3c acme-client: /var/www/acme/uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs: created%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A: challenge%0a%3c acme-client: order.status 0%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/11133258838%0a%3c acme-client: challenge, token: uWHZmqhx6NEpcv25LEvodMAeymB1guTFVtyktVzkJgs, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/11133258838/_UI3-A, status: 2%0a%3c acme-client: order.status 1%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/113861127/8112730231: certificate%0a%3c acme-client: order.status 3%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/cert/03f7fd846802cb0689c2bbd7b6f5e89eb66b: certificate%0a156c140,149%0a%3c %0a---%0a> You should now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to).%0a> %0a> !! Troubleshooting%0a> %0a> If acme-client fails, there are several possible causes:%0a> %0a> !!! Missing Domain Records%0a> %0a> It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a> %0a158c151%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: created%0a---%0a> $ host example.com%0a161c154,155%0a%3c %0a---%0a> You should see one or two records like the following:%0a> %0a163,164c157,158%0a%3c $ doas ls -l /etc/ssl/private%0a%3c -r--------  1 root  wheel  3272 Mar 28 22:16 example.com.key%0a---%0a> example.com has address 93.184.216.34%0a> example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a166c160,168%0a%3c   # A PEM certificate under /etc/ssl e.g.%0a---%0a> %0a> The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. There are a few possible mistakes:%0a> %0a> # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a> # You have the wrong IP addresses.%0a> # DNS records are missing.%0a> %0a> If you have missing records, you will see this response:%0a> %0a168,169c170%0a%3c $ ls -l /etc/ssl/*.pem%0a%3c -r--r--r--  1 root  wheel    3937 Mar 28 22:16 example.com.fullchain.pem%0a---%0a> Host example.com not found: 3(NXDOMAIN)%0a172,183c173,180%0a%3c It would have the following output of running acme-client, generating a certificate for example.com%0a%3c %0a%3c You should now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to).%0a%3c %0a%3c !! Troubleshooting%0a%3c %0a%3c If acme-client fails, there are several possible causes:%0a%3c %0a%3c !!! Missing Domain Records%0a%3c %0a%3c It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a%3c %0a---%0a> You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a> %0a> !!! OpenHTTPd Misconfigured%0a> %0a> acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a> %0a> To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain):%0a> %0a185c182,184%0a%3c $ host example.com%0a---%0a> $ telnet example.com 80%0a> GET /index.html HTTP/1.1%0a> Host: example.com%0a188,189c187,188%0a%3c You should see one or two records like the following:%0a%3c %0a---%0a> You should a response similar to the one below:%0a> %0a191,192c190,197%0a%3c example.com has address 93.184.216.34%0a%3c example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a---%0a> HTTP/1.0 302 Found%0a> Date: Tue, 23 Feb 2021 14:01:28 GMT%0a> OpenBSD httpd%0a> Connection: close%0a> Content-Type: text/html%0a> Content-Length: 486%0a> Location: https://example.com/index.html%0a> ...%0a195,202c200,205%0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. There are a few possible mistakes:%0a%3c %0a%3c # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a%3c # You have the wrong IP addresses.%0a%3c # DNS records are missing.%0a%3c %0a%3c If you have missing records, you will see this response:%0a%3c %0a---%0a> If you do not get this response, double check your openhttpd configuration.%0a> %0a> '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests to port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a> %0a> # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a> %0a204c207,218%0a%3c Host example.com not found: 3(NXDOMAIN)%0a---%0a> $ ls -l /var | grep www%0a> drwxr-xr-x  11 root     daemon     512 Mar 28 05:28 www%0a> $ ls -l /var/www%0a> total 36%0a> drwxr-xr-x  2 root  daemon  512 Mar 28 22:16 acme%0a> drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 bin%0a> drwx-----T  2 www   daemon  512 Oct 12 12:34 cache%0a> drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 cgi-bin%0a> drwxr-xr-x  2 root  daemon  512 Mar 14 06:03 conf%0a> drwxr-xr-x  3 root  daemon  512 Oct 12 12:34 htdocs%0a> drwxr-xr-x  2 root  daemon  512 Mar 29 00:00 logs%0a> drwxr-xr-x  2 root  daemon  512 Oct 12 12:34 run%0a206,214c220,224%0a%3c %0a%3c You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a%3c %0a%3c !!! OpenHTTPd Misconfigured%0a%3c %0a%3c acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a%3c %0a%3c To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain):%0a%3c %0a---%0a>   # Your firewall is not configured to block Let's Encrypt certification verification process. Typically it will initiate a few servers to connect to port 80 on your server.%0a> %0a> !! Successful outcomes%0a> A successful outcome would result in:%0a>   # A ASCII text file, suffixed with .key with your hostname in /etc/ssl/private e.g.%0a216,218c226,227%0a%3c $ telnet example.com 80%0a%3c GET /index.html HTTP/1.1%0a%3c Host: example.com%0a---%0a> $ doas ls -l /etc/ssl/private%0a> -r--------  1 root  wheel  3272 Mar 28 22:16 example.com.key%0a220,222c229%0a%3c %0a%3c You should a response similar to the one below:%0a%3c %0a---%0a>   # A PEM certificate under /etc/ssl e.g.%0a224,231c231,232%0a%3c HTTP/1.0 302 Found%0a%3c Date: Tue, 23 Feb 2021 14:01:28 GMT%0a%3c OpenBSD httpd%0a%3c Connection: close%0a%3c Content-Type: text/html%0a%3c Content-Length: 486%0a%3c Location: https://example.com/index.html%0a%3c ...%0a---%0a> $ ls -l /etc/ssl/*.pem%0a> -r--r--r--  1 root  wheel    3937 Mar 28 22:16 example.com.fullchain.pem%0a234,241c235,236%0a%3c If you do not get this response, double check your openhttpd configuration.%0a%3c %0a%3c '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests for port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a%3c %0a%3c !!! Incorrect File Permissions%0a%3c %0a%3c Double check the file permissions for /var/www and /var/www/acme:%0a%3c %0a---%0a> It would have the following output of running acme-client, generating a certificate for example.com%0a> %0a243,245c238,263%0a%3c $ ls -ld /var/www /var/www/acme%0a%3c drwxr-xr-x  10 root  daemon  512 Oct  5 07:47 /var/www%0a%3c drwxr-xr-x   2 root  daemon  512 Oct  5 07:47 /var/www/acme%0a---%0a> acme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0a> acme-client: /etc/acme/letsencrypt-privkey.pem: generated RSA account key%0a> acme-client: https://acme-v02.api.letsencrypt.org/directory: directories%0a> acme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 0%0a> acme-client: /var/www/acme/mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL: created%0a> acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ: challenge%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: order.status 0%0a> acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 2%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: order.status 1%0a> acme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/81817869/2815341474: certificate%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: order.status 3%0a> acme-client: https://acme-v02.api.letsencrypt.org/acme/cert/vxsJMODZOeZxwiuyq9Bz6jqgoRRRUak8ZQ3ob: certificate%0a> acme-client: 172.65.32.248: tls_close: EOF without close notify%0a> acme-client: /etc/ssl/example.com.fullchain.pem: created%0a
+host:1614245123=198.251.81.119
+author:1614242993=jrmu
+diff:1614242993:1614242757:=177,203c177,181%0a%3c acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If [[openhttpd/configure|openhttpd]] is not configured and running properly, acme-client won't work.%0a%3c %0a%3c To test if your web server is running properly, use [[telnet/http|telnet]] (replacing @@example.com@@ with your domain):%0a%3c %0a%3c [@%0a%3c $ telnet example.com 80%0a%3c GET /index.html HTTP/1.1%0a%3c Host: example.com%0a%3c @]%0a%3c %0a%3c You should a response similar to the one below:%0a%3c %0a%3c [@%0a%3c HTTP/1.0 302 Found%0a%3c Date: Tue, 23 Feb 2021 14:01:28 GMT%0a%3c OpenBSD httpd%0a%3c Connection: close%0a%3c Content-Type: text/html%0a%3c Content-Length: 486%0a%3c Location: https://example.com/index.html%0a%3c ...%0a%3c @]%0a%3c %0a%3c If you do not get this response, double check your openhttpd configuration.%0a%3c %0a%3c '''Note''': Using the telnet command above is more reliable than visiting the URL in a web browser. By default, httpd.conf (and most web browsers) will forward all requests to port 80 to port 443. As a result, your web browser will see what is listening on port 443, but the certificate authority will test port 80 only.%0a%3c %0a---%0a> acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If openhttpd is not configured and running properly, acme-client won't work.%0a> %0a> You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a> # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a> %0a
+host:1614242993=198.251.81.119
+author:1614242757=jrmu
+diff:1614242757:1614242252:=175,179c175%0a%3c !!! OpenHTTPd Misconfigured%0a%3c %0a%3c acme-client uses the "http-01" challenge. A file is created with a special message in @@/var/www/acme/@@, and the certificate authority requests that file using the URL @@http://example.com/.well-known/acme-challenge/*@@. If openhttpd is not configured and running properly, acme-client won't work.%0a%3c %0a%3c You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a---%0a> # The [[Openhttpd|web server]] is configured properly. You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a
+host:1614242757=198.251.81.119
+author:1614242252=jrmu
+diff:1614242252:1614242101:=164,174c164,171%0a%3c # You have the wrong IP addresses.%0a%3c # DNS records are missing.%0a%3c %0a%3c If you have missing records, you will see this response:%0a%3c %0a%3c [@%0a%3c Host example.com not found: 3(NXDOMAIN)%0a%3c @]%0a%3c %0a%3c You will either need to speak with your DNS provider or you will need to troubleshoot [[nsd/troubleshoot|nsd]].%0a%3c %0a---%0a> # %0a> %0a> %0a> Host blahblah.coconut.ircnow.org not found: 3(NXDOMAIN)%0a> %0a> If you %0a> %0a> [[nsd|DNS]] is configured properly%0a
+host:1614242252=198.251.81.119
+author:1614242101=jrmu
+diff:1614242101:1614241008:=144,173c144,149%0a%3c If acme-client fails, there are several possible causes:%0a%3c %0a%3c !!! Missing Domain Records%0a%3c %0a%3c It's possible that your domain records are missing. Run this command, replacing @@example.com@@ with your real hostname:%0a%3c %0a%3c [@%0a%3c $ host example.com%0a%3c @]%0a%3c %0a%3c You should see one or two records like the following:%0a%3c %0a%3c [@%0a%3c example.com has address 93.184.216.34%0a%3c example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946%0a%3c @]%0a%3c %0a%3c The IPv4 and IPv6 address must exactly match the IPs that [[openhttpd/configure|OpenHTTPd]] is listening on. There are a few possible mistakes:%0a%3c %0a%3c # Your web server is listening only one IPv4 but your DNS record includes IPv6; or vice versa.%0a%3c # %0a%3c %0a%3c %0a%3c Host blahblah.coconut.ircnow.org not found: 3(NXDOMAIN)%0a%3c %0a%3c If you %0a%3c %0a%3c [[nsd|DNS]] is configured properly%0a%3c # The [[Openhttpd|web server]] is configured properly. You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a%3c # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a---%0a> If you run into errors, check to make sure:%0a> %0a>   # [[nsd|DNS]] is configured properly. %0a>   # The [[Openhttpd|web server]] is configured properly. You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a>   # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a> %0a
+host:1614242101=198.251.81.119
+author:1614241008=jrmu
+diff:1614241008:1614240851:=134,141d133%0a%3c If all goes well, you should see the following line at the very bottom:%0a%3c %0a%3c [@%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: created%0a%3c @]%0a%3c %0a%3c You should now have two certificates, the public key inside @@/etc/ssl/example.com.fullchain.pem@@, and the private key inside @@/etc/ssl/private/example.com.key@@ (or wherever you changed the path to).%0a%3c %0a143d134%0a%3c %0a
+host:1614241008=198.251.81.119
+author:1614240851=jrmu
+diff:1614240851:1614240518:=113,114c113,114%0a%3c If you want to sign with buypass, test a staging certificate (to avoid using up your rate-limit), or switch to another authority, then edit this line:%0a%3c %0a---%0a> If you want to sign with buypass or another authority instead of Let's Encrypt, then edit this line:%0a> %0a119,124c119%0a%3c Change it to match one of your defined authorities. For example:%0a%3c %0a%3c # To test with letsencrypt-staging, replace it with @@sign with letsencrypt-staging@@.%0a%3c # To sign with buypass, replace it with @@sign with buypass@@.%0a%3c %0a%3c '''Note''': staging certificates are not recognized by most browsers and will be rejected as an invalid certificate. After you finish testing with a staging certificate, you will want to get a properly signed one.%0a---%0a> Change it to match one of your defined authorities.%0a
+host:1614240851=198.251.81.119
+author:1614240518=jrmu
+diff:1614240518:1614239909:=43,44d42%0a%3c To both of these blocks, we will want to add our contact email, so we add @@contact "mailto:me@example.com"@@ inside both blocks:%0a%3c %0a46,49c44,48%0a%3c authority letsencrypt {%0a%3c         api url "https://acme-v02.api.letsencrypt.org/directory"%0a%3c         account key "/etc/acme/letsencrypt-privkey.pem"%0a%3c         contact "mailto:me@example.com"%0a---%0a> domain example.com {%0a>         alternative names { secure.example.com }%0a>         domain key "/etc/ssl/private/example.com.key"%0a>         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a>         sign with letsencrypt%0a51,56d49%0a%3c %0a%3c authority letsencrypt-staging {%0a%3c         api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a%3c         account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a%3c         contact "mailto:me@example.com"%0a%3c }%0a59,60c52,59%0a%3c Next, the default [[https://man.openbsd.org/acme-client.conf|acme-client.conf]] defines two more authorities:%0a%3c %0a---%0a> This configures acme-client for the domain example.com. You'll want to replace every appearance of @@example.com@@ with your own domain, which might look like @@username.fruit.ircnow.org@@.%0a> %0a> Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.ircnow.org@@ and the alternative names @@fruit.ircnow.org@@ and @@vegetable.ircnow.org@@.%0a> %0a> If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, I recommend keeping the number of alternative names to under 5.%0a> %0a> '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. The below will cause errors:%0a> %0a62,72c61%0a%3c authority buypass {%0a%3c         api url "https://api.buypass.com/acme/directory"%0a%3c         account key "/etc/acme/buypass-privkey.pem"%0a%3c         contact "mailto:me@example.com"%0a%3c }%0a%3c %0a%3c authority buypass-test {%0a%3c         api url "https://api.test4.buypass.no/acme/directory"%0a%3c         account key "/etc/acme/buypass-test-privkey.pem"%0a%3c         contact "mailto:me@example.com"%0a%3c }%0a---%0a> alternative names { }%0a75,76c64,65%0a%3c These two blocks are the same as for letsencrypt, but with the alternative provider [[https://buypass.com/|buypass]]. Make sure to replace the contact email with your own email.%0a%3c %0a---%0a> If you don't need any alternative names, you should comment this line out by putting a # at the beginning of the line, like so:%0a> %0a78,83c67%0a%3c domain example.com {%0a%3c         alternative names { secure.example.com }%0a%3c         domain key "/etc/ssl/private/example.com.key"%0a%3c         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a%3c         sign with letsencrypt%0a%3c }%0a---%0a> #        alternative names { }%0a86,93c70,71%0a%3c This configures acme-client for the domain example.com. You'll want to replace every appearance of @@example.com@@ with your own domain, which might look like @@username.fruit.ircnow.org@@.%0a%3c %0a%3c Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.ircnow.org@@ and the alternative names @@fruit.ircnow.org@@ and @@vegetable.ircnow.org@@.%0a%3c %0a%3c If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, I recommend keeping the number of alternative names to under 5.%0a%3c %0a%3c '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. The below will cause errors:%0a%3c %0a---%0a> The @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a> %0a95c73,74%0a%3c alternative names { }%0a---%0a>         domain key "/etc/ssl/private/example.com.key"%0a>         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a98,123c77,80%0a%3c If you don't need any alternative names, you should comment this line out by putting a # at the beginning of the line, like so:%0a%3c %0a%3c [@%0a%3c #        alternative names { }%0a%3c @]%0a%3c %0a%3c The @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a%3c %0a%3c [@%0a%3c         domain key "/etc/ssl/private/example.com.key"%0a%3c         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a%3c @]%0a%3c %0a%3c You will want to replace @@example.com@@ with your real domain. The public key should go inside @@/etc/ssl@@ and the private key should go inside @@/etc/ssl/private@@.%0a%3c %0a%3c If you want to sign with buypass or another authority instead of Let's Encrypt, then edit this line:%0a%3c %0a%3c [@%0a%3c         sign with letsencrypt%0a%3c @]%0a%3c %0a%3c Change it to match one of your defined authorities.%0a%3c %0a%3c !! Requesting Certificates%0a%3c %0a%3c After you have finished configuring the conf file, we can request certificates:%0a---%0a> You will want to replace @@example.com@@ with your real domain. The public key should go inside @@/etc/ssl@@ and the private key should go inside @@/etc/ssl/private@@.%0a> %0a> Now, run acme-client:%0a> %0a
+host:1614240518=198.251.81.119
+author:1614239909=jrmu
+diff:1614239909:1614239863:=9c9%0a%3c Note: You must have a server block in [[https://man.openbsd.org/httpd.conf|/etc/httpd.conf]] listening on port 80. Do not delete this block or else acme-client will not work.%0a---%0a> Note: You must have a server block listening on port 80. Do not delete this block or else acme-client will not work.%0a
+host:1614239909=198.251.81.119
+author:1614239863=jrmu
+diff:1614239863:1614239297:=7c7%0a%3c Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS records]] for your hostname, which might look like @@username.fruit.ircnow.org@@.%0a---%0a> Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS record]], such as @@username.fruit.ircnow.org@@.%0a
+host:1614239863=198.251.81.119
+author:1614239297=jrmu
+diff:1614239297:1614238842:=54,59c54,57%0a%3c Each SSL cert is valid only for a '''common name''' and a set of '''alternative names''' that are provided on the certificate. For example, an SSL certificate might have the common name @@example.ircnow.org@@ and the alternative names @@fruit.ircnow.org@@ and @@vegetable.ircnow.org@@.%0a%3c %0a%3c If you use too many alternative names, an acme-client certificate request has a higher chance of failure. So, I recommend keeping the number of alternative names to under 5.%0a%3c %0a%3c '''Warning''': Having the @@alternative names@@ directive with nothing inside will cause errors. The below will cause errors:%0a%3c %0a---%0a> SSL certs%0a> %0a> Replace example.com with your domain. If you didn't use any alternative names, in the past, having:%0a> %0a64,65c62,63%0a%3c If you don't need any alternative names, you should comment this line out by putting a # at the beginning of the line, like so:%0a%3c %0a---%0a> would cause issues. So, if you have no alternative names, I recommend you comment that line out as follows:%0a> %0a67c65%0a%3c #        alternative names { }%0a---%0a> #        alternative names { secure.example.com }%0a69,77d66%0a%3c %0a%3c The @@domain key@@ and @@domain full chain certificate@@ tell acme-client where to put the private key and certificate:%0a%3c %0a%3c [@%0a%3c         domain key "/etc/ssl/private/example.com.key"%0a%3c         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a%3c @]%0a%3c %0a%3c You will want to replace @@example.com@@ with your real domain. The public key should go inside @@/etc/ssl@@ and the private key should go inside @@/etc/ssl/private@@.%0a
+host:1614239297=198.251.81.119
+author:1614238842=jrmu
+diff:1614238842:1614238762:=51,54d50%0a%3c %0a%3c This configures acme-client for the domain example.com. You'll want to replace every appearance of @@example.com@@ with your own domain, which might look like @@username.fruit.ircnow.org@@.%0a%3c %0a%3c SSL certs%0a
+host:1614238842=198.251.81.119
+author:1614238762=jrmu
+diff:1614238762:1614238543:=30,33c30,33%0a%3c '''Note''': Let's Encrypt [[https://letsencrypt.org/docs/rate-limits/|rate-limits]] the number of SSL certs you can request. If you encounter an error and are unable to request an SSL cert, please fix all errors before requesting again. If you request too many certs in a short time, your domain will get blacklisted for a few hours or days.%0a%3c %0a%3c Although we are using Let's Encrypt for this tutorial, it is important to note that Let's Encrypt currently has a monopoly on free SSL certs. For this reason, IRCNow wants to run its own Certificate Authority in case Let's Encrypt should try to censor our domains.%0a%3c %0a---%0a> '''Note''': Let's Encrypt rate-limits the number of SSL certs you can request.%0a> %0a> Although we are using Let's Encrypt for this tutorial, it is important to note that Let's Encrypt currently has a monopoly on free SSL certs. For this reason, IRCNow is considering running its own Certificate Authority in case Let's Encrypt should try to censor our domains.%0a> %0a41c41%0a%3c letsencrypt-staging is a staging server which you can use to practice requesting fake certificates. The rate limits for the staging server are less strict, so you should practice first with this CA.%0a---%0a> letsencrypt-staging is a staging server which you can use to practice requesting fake certificates.%0a
+host:1614238762=198.251.81.119
+author:1614238543=jrmu
+diff:1614238543:1614238364:=30,33d29%0a%3c '''Note''': Let's Encrypt rate-limits the number of SSL certs you can request.%0a%3c %0a%3c Although we are using Let's Encrypt for this tutorial, it is important to note that Let's Encrypt currently has a monopoly on free SSL certs. For this reason, IRCNow is considering running its own Certificate Authority in case Let's Encrypt should try to censor our domains.%0a%3c %0a39,43c35%0a%3c @]%0a%3c %0a%3c letsencrypt-staging is a staging server which you can use to practice requesting fake certificates.%0a%3c %0a%3c [@%0a---%0a> %0a
+host:1614238543=198.251.81.119
+author:1614238364=jrmu
+diff:1614238364:1614237906:=19,20d18%0a%3c We'll open up /etc/acme-client.conf and analyze the meaning of each block:%0a%3c %0a26,30c24%0a%3c @]%0a%3c %0a%3c This defines the Certificate Authority [[https://letsencrypt.org/|letsencrypt]]. It provides the API URL and the location of the account key.%0a%3c %0a%3c [@%0a---%0a> %0a
+host:1614238364=198.251.81.119
+author:1614237906=jrmu
+diff:1614237906:1614237321:=1,4c1,4%0a%3c (:title Configuring Acme-client:)%0a%3c %0a%3c To enable TLS, you will want a certificate signed by a trusted certificate authority (CA). In this guide, we'll use OpenBSD's [[https://man.openbsd.org/acme-client|acme-client]] with Let's Encrypt.%0a%3c %0a---%0a> (:title Configuring Acme-client)%0a> %0a> To have TLS, you will want a certificate signed by a trusted certificate authority (CA). In this guide, we'll use OpenBSD's [[https://man.openbsd.org/acme-client|acme-client]] with Let's Encrypt.%0a> %0a13c13%0a%3c First, copy the [[https://man.openbsd.org/acme-client.conf|acme-client.conf]] template:%0a---%0a> First, copy the /etc/examples/acme-client.conf template:%0a
+host:1614237906=198.251.81.119
+author:1614237321=jrmu
+diff:1614237321:1614236903:=11c11%0a%3c !! Configuration%0a---%0a> %0a
+host:1614237321=198.251.81.119
+author:1614236903=jrmu
+diff:1614236903:1614236691:=7,8c7,8%0a%3c Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning [[dns/overview|DNS record]], such as @@username.fruit.ircnow.org@@.%0a%3c %0a---%0a> Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning hostname%0a> %0a11c11%0a%3c %0a---%0a>  %0a
+host:1614236903=198.251.81.119
+author:1614236691=jrmu
+diff:1614236691:1614236390:=
+host:1614236691=198.251.81.119
+author:1614236390=jrmu
+diff:1614236390:1614076701:=1,11c1,4%0a%3c (:title Configuring Acme-client)%0a%3c %0a%3c To have TLS, you will want a certificate signed by a trusted certificate authority (CA). In this guide, we'll use OpenBSD's [[https://man.openbsd.org/acme-client|acme-client]] with Let's Encrypt.%0a%3c %0a%3c !! Setting up OpenHTTPd%0a%3c %0a%3c Before you begin, you will need to properly configure and start [[openhttpd/configure|openhttpd]]. You will also need a properly functioning hostname%0a%3c %0a%3c Note: You must have a server block listening on port 80. Do not delete this block or else acme-client will not work.%0a%3c %0a%3c  %0a---%0a> In order to provide proper TLS for your services, you will need a certificate signed by a trusted certificate authority (CA). The easiest option for now is to use the Let's Encrypt client by acme-client.%0a> %0a> !! Howto%0a> You will need to set up a httpd server in order for the acme-client to work. It is recommended to use openhttpd, click [[Openbsd/Openhttpd|here]] to find out how to set up openhttpd.%0a
+host:1614236390=198.251.81.119
+author:1614076701=jrmu
+diff:1614076701:1614076701:=1,119d0%0a%3c In order to provide proper TLS for your services, you will need a certificate signed by a trusted certificate authority (CA). The easiest option for now is to use the Let's Encrypt client by acme-client.%0a%3c %0a%3c !! Howto%0a%3c You will need to set up a httpd server in order for the acme-client to work. It is recommended to use openhttpd, click [[Openbsd/Openhttpd|here]] to find out how to set up openhttpd.%0a%3c %0a%3c First, copy the /etc/examples/acme-client.conf template:%0a%3c %0a%3c [@%0a%3c $ doas cp /etc/examples/acme-client.conf /etc/acme-client.conf%0a%3c @]%0a%3c %0a%3c [@%0a%3c authority letsencrypt {%0a%3c         api url "https://acme-v02.api.letsencrypt.org/directory"%0a%3c         account key "/etc/acme/letsencrypt-privkey.pem"%0a%3c }%0a%3c %0a%3c authority letsencrypt-staging {%0a%3c         api url "https://acme-staging.api.letsencrypt.org/directory"%0a%3c         account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a%3c }%0a%3c %0a%3c domain example.com {%0a%3c         alternative names { secure.example.com }%0a%3c         domain key "/etc/ssl/private/example.com.key"%0a%3c         domain full chain certificate "/etc/ssl/example.com.fullchain.pem"%0a%3c         sign with letsencrypt%0a%3c }%0a%3c @]%0a%3c %0a%3c Replace example.com with your domain. If you didn't use any alternative names, in the past, having:%0a%3c %0a%3c [@%0a%3c alternative names { }%0a%3c @]%0a%3c %0a%3c would cause issues. So, if you have no alternative names, I recommend you comment that line out as follows:%0a%3c %0a%3c [@%0a%3c #        alternative names { secure.example.com }%0a%3c @]%0a%3c %0a%3c Now, run acme-client:%0a%3c %0a%3c [@%0a%3c $ doas acme-client -Fv example.com%0a%3c @]%0a%3c %0a%3c !! Troubleshooting%0a%3c If you run into errors, check to make sure:%0a%3c %0a%3c   # [[nsd|DNS]] is configured properly. %0a%3c   # The [[Openhttpd|web server]] is configured properly. You **must** have a web server in order for the acme-client to work. (Don't be confused here if your web server seems not running in a web browser: the example config redirects all visits to the https port, that may not yet be working yet.)%0a%3c   # You have the proper permissions set on the folders in /var/www/. An example output would be,%0a%3c %0a%3c [@%0a%3c $ ls -l /var | grep www%0a%3c drwxr-xr-x  11 root     daemon     512 Mar 28 05:28 www%0a%3c $ ls -l /var/www%0a%3c total 36%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 28 22:16 acme%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 bin%0a%3c drwx-----T  2 www   daemon  512 Oct 12 12:34 cache%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 14 06:12 cgi-bin%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 14 06:03 conf%0a%3c drwxr-xr-x  3 root  daemon  512 Oct 12 12:34 htdocs%0a%3c drwxr-xr-x  2 root  daemon  512 Mar 29 00:00 logs%0a%3c drwxr-xr-x  2 root  daemon  512 Oct 12 12:34 run%0a%3c @]%0a%3c   # Your firewall is not configured to block Let's Encrypt certification verification process. Typically it will initiate a few servers to connect to port 80 on your server.%0a%3c %0a%3c !! Successful outcomes%0a%3c A successful outcome would result in:%0a%3c   # A ASCII text file, suffixed with .key with your hostname in /etc/ssl/private e.g.%0a%3c [@%0a%3c $ doas ls -l /etc/ssl/private%0a%3c -r--------  1 root  wheel  3272 Mar 28 22:16 example.com.key%0a%3c @]%0a%3c   # A PEM certificate under /etc/ssl e.g.%0a%3c [@%0a%3c $ ls -l /etc/ssl/*.pem%0a%3c -r--r--r--  1 root  wheel    3937 Mar 28 22:16 example.com.fullchain.pem%0a%3c @]%0a%3c %0a%3c It would have the following output of running acme-client, generating a certificate for example.com%0a%3c %0a%3c [@%0a%3c acme-client: /etc/ssl/private/example.com.key: generated RSA domain key%0a%3c acme-client: /etc/acme/letsencrypt-privkey.pem: generated RSA account key%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/directory: directories%0a%3c acme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 0%0a%3c acme-client: /var/www/acme/mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL: created%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ: challenge%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: order.status 0%0a%3c acme-client: dochngreq: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3674632835%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: challenge, token: mylkLrPXTvdyiTbDDybKy7M-0JyqiBr0nOg8UXnJ0uDL, uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3674632835/-1tUXQ, status: 2%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: order.status 1%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/finalize/81817869/2815341474: certificate%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: order.status 3%0a%3c acme-client: https://acme-v02.api.letsencrypt.org/acme/cert/vxsJMODZOeZxwiuyq9Bz6jqgoRRRUak8ZQ3ob: certificate%0a%3c acme-client: 172.65.32.248: tls_close: EOF without close notify%0a%3c acme-client: /etc/ssl/example.com.fullchain.pem: created%0a%3c @]%0a%3c %0a%3c !! Common errors%0a%3c %0a%3c # Do not request domains you don't own%0a%3c # If you change the domains, you need to move the cert and request again%0a\ No newline at end of file%0a
+host:1614076701=198.251.81.119
blob - /dev/null
blob + 1582b6f98bcefcc9d8c5fb79a23a4edd6f24f2d8 (mode 644)
--- /dev/null
+++ wiki.d/Acme-client.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (X11; Linux x86_64; OpenBSD amd64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/60.5 Safari/605.1.15
+charset=UTF-8
+ctime=1614076701
+host=104.167.242.150
+name=Acme-client.RecentChanges
+rev=80
+text=* [[Acme-client/Configure]]  . . . @2025-07-05T12:49:46Z by [[~saeed]]: [==]%0a* [[Acme-client/AutoRenew]]  . . . July 03, 2022, at 11:50 AM by [[~mkf]]: [==]%0a
+time=1751719786
blob - /dev/null
blob + 0f1ec715f766eaf0b503fbf542acf8494305fcba (mode 644)
--- /dev/null
+++ wiki.d/Acmesh.Configure
@@ -0,0 +1,16 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 12_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15
+author=akoizumi
+charset=UTF-8
+csum=Added acme.sh (currently a WIP)
+ctime=1662919431
+host=138.117.22.177
+name=Acmesh.Configure
+rev=1
+targets=
+text=Acme.sh is a pure Unix shell script implementing the ACME client protocol.%0a%0a!!! Installation%0a* git clone https://github.com/acmesh-official/acme.sh.git%0a* cd acme.sh%0a* doas sh acme.sh --install -m %3cteam support email> --home /usr/local/acme.sh%0a%0a!!! Setup%0aThe installation does pretty much everything, including setting up a cron job so no more work is needed. %0a%0a!!! Issue certificates%0aIt is as simple as running doas /usr/local/acme.sh/acme.sh --issue -d %3cdomain> -w %3cwebroot>.%0aThen for more domains or SANs, just add more -d options with its arguments to the command line
+time=1662919431
+author:1662919431=akoizumi
+csum:1662919431=Added acme.sh (currently a WIP)
+diff:1662919431:1662919431:=1,13d0%0a%3c Acme.sh is a pure Unix shell script implementing the ACME client protocol.%0a%3c %0a%3c !!! Installation%0a%3c * git clone https://github.com/acmesh-official/acme.sh.git%0a%3c * cd acme.sh%0a%3c * doas sh acme.sh --install -m %3cteam support email> --home /usr/local/acme.sh%0a%3c %0a%3c !!! Setup%0a%3c The installation does pretty much everything, including setting up a cron job so no more work is needed. %0a%3c %0a%3c !!! Issue certificates%0a%3c It is as simple as running doas /usr/local/acme.sh/acme.sh --issue -d %3cdomain> -w %3cwebroot>.%0a%3c Then for more domains or SANs, just add more -d options with its arguments to the command line%0a\ No newline at end of file%0a
+host:1662919431=138.117.22.177
blob - /dev/null
blob + 5e281c9c92f9b1bb2ff49ba72c8b58825bc342d1 (mode 644)
--- /dev/null
+++ wiki.d/Acmesh.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 12_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15
+charset=UTF-8
+ctime=1662919431
+host=138.117.22.177
+name=Acmesh.RecentChanges
+rev=1
+text=* [[Acmesh/Configure]]  . . . September 11, 2022, at 06:03 PM by [[~akoizumi]]: [=Added acme.sh (currently a WIP)=]%0a
+time=1662919431
blob - /dev/null
blob + 8a9f26c1a46bc68262d43f0051caf25b226ee490 (mode 644)
--- /dev/null
+++ wiki.d/Adium.Connect
@@ -0,0 +1,24 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+author=jrmu
+charset=UTF-8
+csum=
+ctime=1637391251
+host=38.87.162.8
+name=Adium.Connect
+rev=4
+targets=Xmpp.Xmpp
+text=[[https://adium.im|Adium]] is a free instant messaging app for macOS that can connect to XMPP, IRC, and much more. It easily integrates with macOS' Contacts app, supports macOS Notification Center, OTR encryption, file transfer, and has been translated into 27 different languages.%0a%0a# Open Adium.%0a# Click @@Continue@@:\\%0aAttach:adium-welcome.png%0a# Setup Assistant:%0a  # For Service, select XMPP (Jabber)%0a  # For Jabber ID, pick @@username@example.com@@. Replace example.com with one of [[xmpp/xmpp|IRCNow's free servers]].%0a  # Pick a hard to guess password.%0a  # Click @@Continue@@.\\%0aAttach:adium-assistant.png%0a# Click @@Done@@:\\%0aAttach:adium-congrats.png%0a# From the menu bar, select @@File@@->@@Add Account@@->@@XMPP (Jabber)@@:\\%0aAttach:adium-menu.png%0a# Fill in JabberID and Password, then click @@Register New Account@@:\\%0aAttach:adium-editaccount.png%0a# If you see an error message, click @@OK@@:\\%0aAttach:adium-zerobyte.png%0a# Fill in your [[xmpp/xmpp|server]], then click @@Request New Account@@:\\%0aAttach:adium-server.png%0a# Fill in your username (don't type the domain) and password.\\%0aAttach:adium-createnewaccount.png%0a# Click @@OK@@.\\%0aAttach:adium-registrationsuccessful.png%0a# To log in, click on the @@Offline@@ status and select @@Available@@:%0aAttach:adium-available.png%0a
+time=1637393544
+author:1637393544=jrmu
+diff:1637393544:1637393119:=25,27c25%0a%3c Attach:adium-registrationsuccessful.png%0a%3c # To log in, click on the @@Offline@@ status and select @@Available@@:%0a%3c Attach:adium-available.png%0a---%0a> Attach:registrationsuccessful.png%0a
+host:1637393544=38.87.162.8
+author:1637393119=jrmu
+diff:1637393119:1637391803:=22c22%0a%3c # Fill in your username (don't type the domain) and password.\\%0a---%0a> # Fill in your username (don't type the domain) and password.%0a24c24%0a%3c # Click @@OK@@.\\%0a---%0a> # Click @@OK@@.%0a
+host:1637393119=38.87.162.8
+author:1637391803=jrmu
+diff:1637391803:1637391251:=3,10c3%0a%3c # Open Adium.%0a%3c # Click @@Continue@@:\\%0a%3c Attach:adium-welcome.png%0a%3c # Setup Assistant:%0a%3c   # For Service, select XMPP (Jabber)%0a%3c   # For Jabber ID, pick @@username@example.com@@. Replace example.com with one of [[xmpp/xmpp|IRCNow's free servers]].%0a%3c   # Pick a hard to guess password.%0a%3c   # Click @@Continue@@.\\%0a---%0a> Attach:adium-welcome.png\\%0a12c5,6%0a%3c # Click @@Done@@:\\%0a---%0a> # Open Conversations.%0a> # Tap @@Create new account@@:\\%0a14c8%0a%3c # From the menu bar, select @@File@@->@@Add Account@@->@@XMPP (Jabber)@@:\\%0a---%0a> # Tap @@Use my own provider@@:\\%0a16c10%0a%3c # Fill in JabberID and Password, then click @@Register New Account@@:\\%0a---%0a> # Choose a username and password. The username must include the domain (@@@example.com@@). In this example, we used username@ircnow.org. Then, tap @@Next@@.\\%0a18c12%0a%3c # If you see an error message, click @@OK@@:\\%0a---%0a> # You can tap the avatar, or tap @@Skip@@.\\%0a20c14%0a%3c # Fill in your [[xmpp/xmpp|server]], then click @@Request New Account@@:\\%0a---%0a> # Your account has been created!\\%0a22d15%0a%3c # Fill in your username (don't type the domain) and password.%0a24d16%0a%3c # Click @@OK@@.%0a
+host:1637391803=38.87.162.8
+author:1637391251=jrmu
+diff:1637391251:1637391251:=1,17d0%0a%3c [[https://adium.im|Adium]] is a free instant messaging app for macOS that can connect to XMPP, IRC, and much more. It easily integrates with macOS' Contacts app, supports macOS Notification Center, OTR encryption, file transfer, and has been translated into 27 different languages.%0a%3c %0a%3c Attach:adium-welcome.png\\%0a%3c Attach:adium-assistant.png%0a%3c # Open Conversations.%0a%3c # Tap @@Create new account@@:\\%0a%3c Attach:adium-congrats.png%0a%3c # Tap @@Use my own provider@@:\\%0a%3c Attach:adium-menu.png%0a%3c # Choose a username and password. The username must include the domain (@@@example.com@@). In this example, we used username@ircnow.org. Then, tap @@Next@@.\\%0a%3c Attach:adium-editaccount.png%0a%3c # You can tap the avatar, or tap @@Skip@@.\\%0a%3c Attach:adium-zerobyte.png%0a%3c # Your account has been created!\\%0a%3c Attach:adium-server.png%0a%3c Attach:adium-createnewaccount.png%0a%3c Attach:registrationsuccessful.png%0a
+host:1637391251=38.87.162.8
blob - /dev/null
blob + 4967c77567ee994e91a6a9e6de484d8bd0c2f242 (mode 644)
--- /dev/null
+++ wiki.d/Adium.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20210102
+charset=UTF-8
+ctime=1637391251
+host=38.87.162.8
+name=Adium.RecentChanges
+rev=4
+text=* [[Adium/Connect]]  . . . November 20, 2021, at 07:32 AM by [[~jrmu]]: [==]%0a
+time=1637393544
blob - /dev/null
blob + 7fdc558d62f2769dbcca1862b016b21e1de02476 (mode 644)
--- /dev/null
+++ wiki.d/Adminforces.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230718
+charset=UTF-8
+ctime=1716923189
+host=104.167.242.227
+name=Adminforces.RecentChanges
+rev=127
+text=* [[Adminforces/Training]]  . . . @2025-07-15T21:04:45Z by [[~jrmu]]: [=got/repo has now been subsumed by got/usage, gotd/configure, and gotwebd/configure=]%0a
+time=1752613485
blob - /dev/null
blob + dc5fed75ac07ff719a0ab5b376e2f143ed6a3c5c (mode 644)
--- /dev/null
+++ wiki.d/Adminforces.Training
@@ -0,0 +1,406 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=w3m/0.5.3+git20230718
+author=jrmu
+charset=UTF-8
+csum=got/repo has now been subsumed by got/usage, gotd/configure, and gotwebd/configure
+ctime=1716923189
+host=104.167.242.227
+name=Adminforces.Training
+rev=127
+targets=Openbsd.Intro,Doas.Configure,Syspatch.Syspatch,FwUpdate.Usage,Openbsd.Pkg,Ircnow.Howtoask,Lists.Ircnow,Freedom.Fork,Chroot.Intro,Openhttpd.Configure,Telnet.Http,Netcat.Http,Tls.Intro,Tls.San,Acme-client.Configure,Openhttpd.Tls,Openssl.Http,Openhttpd.Website,Openhttpd.Perl,Dns.Overview,Unwind.Configure,Dns.Cachingservers,Unbound.Configure,Unbound.Control,Dns.Dnssec,Unbound.Dnssec,Unbound.Opennic,Unbound.Localzone,Dig.Usage,Host.Usage,Nslookup.Usage,Hostname.Usage,Hosts.Configure,Freedom.Selfadmin,Netcat.Irc,Netcat.Usage,Netcat.Daemon,Openbsd.Rcctl,Openbsd.Ed,Tar.Usage,Ksh.Editor,Ksh.History,Crontab.Edit,Openbsd.Adduser,Group.Usage,Usermod.Usage,Openbsd.Localtime,Dd.Iso,Ln.Intro,Openbsd.Fstab,Dmesg.Usage,Openbsd.Hier,Top.Usage,Ps.Usage,Renice.Usage,Fstat.Usage,Fuser.Usage,Kill.Usage,Openbsd.Panic,Openbsd.Loginconf,Openbsd.Sysctl,Swapctl.Usage,Openbsd.Outofmemory,Freedom.Firstamendment,Atactl.Usage,Acct.Accton,Openbsd.Vipw,Ircnow.Dogfood,Freedom.Software,Relayd.Acceleration,Relayd.TLSMulti,Openhttpd.Hosting,Openbsd.Httpopenproxy,Freedom.Religion,Tcpip.Overview,IPv4.Overview,IPv6.Overview,Tcpip.Sockets,Ip.Netmask,Tcpip.Ports,IP.Myaddress,Tcpbench.Usage,Openbsd.Ping,Traceroute.Usage,Openbsd.Dig,Adminforces.Ifconfig,Ifconfig.Change,Hostnameif.Static,Hostnameif.Autoconf,Ifstated.Configure,Arp.Usage,Ndp.Usage,Arp.Spoofing,Ip.Spoofing,Resolv.Conf,Resolvd.Usage,Route.Usage,Route.Hostnameif,Netstat.Usage,Route.Sourceaddr,Ifconfig.Hostap,Hostapd.Configure,Freedom.Openforeveryone,Pf.Configure,Pf.Intro,Pf.Nat,Pf.Whitelisting,Pf.Debugging,Pf.Rdr-to,Pf.TrafficShaping,Pf.Pflog,Pf.Authpf,Pf.Testing,Pf.Nat64,Pf.Ftp-proxy,Pf.Dmz,Openbsd.Ddos,Openbsd.Tcpdump,Openbsd.SSDP,Openbsd.ACKFlood,Openbsd.RSTFlood,Openbsd.UDPFlood,Openbsd.Amplification,Openbsd.PFStable,Openbsd.PFTesting,Openbsd.Pf,Pfctl.Usage,Ifconfig.Wifi,Ifconfig.Wifitoethernet,Ifconfig.Bridge,Ifconfig.Vlan,Ifconfig.Veb,Ifconfig.Vether,Ifconfig.Carp,Ifconfig.Gre,Ifconfig.Mgre,Ifconfig.Egre,Ifconfig.Eoip,Ifconfig.Etherip,Ifconfig.Vxlan,Ifconfig.Mpe,Ifconfig.Mpip,Ifconfig.Mpw,Ifconfig.Bpe,Ifconfig.Pppoe,Ifconfig.Sppp,Ifconfig.Tpmr,Ifconfig.Trunk,Ifconfig.Aggr,Ifconfig.Urndis,Ifconfig.Pflow,Ifconfig.Pfsync,Gre.6in4vmm,Gre.6in4,Gre.4in6,Ifconfig.Wg,Ifconfig.Tap,Ifconfig.Tun,Netizen.Become,Netizen.Rights,Dns.Records,Dns.Registrars,Dns.FQDN,Nsd.Configure,Dns.Zonefile,Nsd.Zone,Nsd.Masterslave,Nsd.Troubleshoot,DNS.RDNS,DNS.Ipv4rDNS,DNS.Ipv6rDNS,Freedom.Unix,Dns.Vhost,Identd.Configure,Freedom.Federation,Opensmtpd.Maildir,DNS.Mail,DNS.SPF,DNS.DKIM,DNS.DMARC,Netcat.SMTP,Opensmtpd.Test,Opensmtpd.Inbox,Opensmtpd.Openrelay,Smtp.Usage,Spamd.Configure,Opensmtpd.Aliases,Snmpd.Configure,Snmp.Configure,Sensorsd.Configure,Ldapd.Configure,Servers.Rights,Minutemin.Code,Minutemin.Duty,Cvsweb.Restore,Got.Usage,Gotconf.Configure,Gotadmin.Usage,Gotd.Configure,Tog.Usage,Gotwebd.Configure,Minutemin.Server,Openbsd.Dump,Openrsync.Usage,Openbsd.Fdisk,Openbsd.Disklabel,Disklabel.Partitioning,Newfs.Usage,Mount.Usage,Openbsd.Newdisk,Mfs.Usage,Ffs.Intro,Fsck.Usage,Openbsd.Quota,Openbsd.Growfs,ScanFfs.Usage,Softraid.Install,Softraid.Rebuild,Exports.Configure,Nfsd.Configure,MountNfs.Usage,Mountd.Configure,Ftpd.Configure,Tftpd.Configure,Sed.Usage,Awk.Usage,Roff.Usage,Ksh.Intro,Perl101.Perl101,Vmm.Intro,Vmctl.Usage,Cu.Usage,Vmctl.Disk,Vmctl.Reinstall,Vmm.Install,Openbsd.Install,Openbsd.Upgrade,Openbsd.Sysupgrade,Vmm.Sysupgrade,Sysmerge.Usage,Openbsd.Bsdrd,Openbsd.Bootconf,Openbsd.Singleuser,OpenBSD.ResetPassword,Openbsd.Autoinstall,Vmm.Configure,Hosting.Providers,Dhcpd.Configure,Pxeboot.Configure,Rad.Configure,Slaacd.Configure,Openbsd.Diskless,Rc.Conf,Syslogd.Configure,Syslogd.Remote,Newsyslog.Configure,Sendbug.Usage,Openbsd.Mail,Freedom.Independence,Ircnow.Constitution,Freedom.Union,Freedom.Privacy,Freedom.Homestead,Freedom.Madeonirc,Freedom.Startupdream,Freedom.Dueprocess,Freedom.Checks,Freedom.Rulebylaw,Openbsd.Ports,Pkgadd.CheckUpdates-,Ntpd.Configure,Abuse.Intro,Team.Security,Password.Management,Openssl.Encryptfile,Signify.Verify,Shell.Limits,Openbsd.FilePermissions,Pledge.Intro,Unveil.Intro,Openbsd.Setuid,Security.Usage,Vlan.Configure,Pair.Configure,Veb.Configure,Bridge.Configure,Nat.Configure,Route.Static,Ripd.Configure,Route6d.Configure,Ospfd.Configure,Bgpd.Configure,Dvmrpd.Configure,Mrouted.Configure,Npppd.Configure,Dhcpleased.Configure,Iked.Sitetosite,Iked.Sitetositevmm,Iked.Roadwarrior,Iked.Roadwarriorvmm,Vpn.Vpn,Vpn.Myipaddress,Iked.Binat,Sshd.Configure,Ssh.Fingerprints,Ssh.Agent,OpenSSH.Connect,OpenSSH.Keygen,Openbsd.Sshkeys,Openbsd.Sshbackdoor,Sftp.Chroot,Sshd.Chroot,Openrsync.Chroot,Openbsd.Books,Unix.Reading,Team.Welcome,Team.Testing,Team.Announce
+text=(:title Admin Forces Training:)%0a%0a|| border=1 width=100%25 class="sortable simpletable"%0a||! OpenBSD Jumpstart ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[openbsd/intro|OpenBSD Intro]] || BSD || Introduction to OpenBSD || ||%0a|| [[doas/configure|Configure doas]] || BSD || Execute commands as root || ||%0a|| [[syspatch/syspatch|Patch your system]] || BSD || Patch your system || ||%0a|| [[fw_update/usage|Update firmware]] || BSD || Update firmware || ||%0a|| [[openbsd/pkg|Installing Packages]] || BSD || Install new software || ||%0a|| [[Ircnow/Howtoask|Good Questions]] || Civics || How to Ask Good Questions || ||%0a|| [[Lists/Ircnow|IRCNow Mailing Lists]] || Civics || Sign up to IRCNow Mailing lists || Extend VPS for 1 week ||%0a||! Web Server ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[freedom/fork|Freedom to Fork]] || Civics || Freedom to Fork || ||%0a|| [[chroot/intro|Intro to Chroot]] || BSD || Learn about Chroots || ||%0a|| [[Openhttpd/Configure|Simple OpenHTTPd]] || Web || Host your own web server || Extend VPS 1 week ||%0a|| [[telnet/http|Telnet HTTP]] || Network || Troubleshoot webserver with telnet || ||%0a|| [[netcat/http|netcat HTTP]] || Network || Troubleshoot webserver with netcat || ||%0a|| [[tls/intro|TLS overview]] || Network || TLS introduction || ||%0a|| [[tls/san|Subject Alternative Names]] || Network || TLS and Subject Alternative Names || ||%0a|| [[acme-client/configure|acme-client]] || Security || Request an SSL cert || ||%0a|| [[Openhttpd/Tls|OpenHTTPd TLS]] || Web || Provide TLS for webpages || ||%0a|| [[openssl/http|OpenSSL HTTP]] || Network || Test TLS for webpages with OpenSSL || ||%0a|| [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || ||%0a|| [[Openhttpd/Perl|OpenHTTPd Perl]] || Web || Install Perl inside OpenHTTPd chroot || Extend VPS 1 week ||%0a||! Domain Name Lookup ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[dns/overview|DNS Overview]] || DNS || Learn the Domain Name System || ||%0a|| [[unwind/configure|unwind]] || Network || Validating DNS resolver || ||%0a|| [[dns/cachingservers|Caching DNS servers]] || DNS || Caching DNS servers ||%0a|| [[unbound/configure|unbound]] || DNS || Configure a local caching nameserver || ||%0a|| [[unbound/control|unbound-control]] || DNS || Using unbound-control || ||%0a|| [[dns/dnssec|DNSSec]] || DNS || DNSSec || ||%0a|| [[unbound/dnssec|DNSSec for Unbound]] || DNS || Add DNSSec for unbound || ||%0a|| [[unbound/opennic|Unbound with OpenNIC]] || DNS || Using OpenNIC to handle queries for Unbound || ||%0a|| [[unbound/localzone|Unbound with local zones]] || DNS || Customize local DNS lookup || ||%0a|| [[dig/usage|dig]] || DNS || Troubleshoot DNS records with dig || ||%0a|| [[host/usage|host]] || DNS || Troubleshoot DNS records with host || ||%0a|| [[nslookup/usage|nslookup]] || DNS || Troubleshoot DNS records with nslookup || ||%0a|| [[hostname/usage|hostname]] || DNS || Set hostname || ||%0a|| [[hosts/configure|Configure /etc/hosts]] || BSD || Host and network name database || Extend VPS 1 ||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[freedom/selfadmin|Self-Admin]] || Civics || Admin your network || ||%0a|| [[netcat/irc|netcat IRC]] || Network || Troubleshoot IRC with netcat || ||%0a|| [[netcat/usage|netcat]] || Network || Troubleshoot applications with netcat || ||%0a|| [[netcat/daemon|netcat]] || Network || Troubleshoot clients with netcat || ||%0a|| [[openbsd/rcctl|rcctl]] || BSD || Start services automatically || Extend VPS 1 week ||%0a||! System Administration ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[openbsd/ed|ed]] || BSD || ed text editor || ||%0a|| [[tar/usage|tar]] || BSD || Tape archives || ||%0a|| [[ksh/editor|Change editor]] || BSD || Change default editor || ||%0a|| [[ksh/history|ksh history]] || BSD || Add history for shell commands || ||%0a|| [[crontab/edit|Editing crontab]] || BSD || Editing crontab || ||%0a|| [[openbsd/adduser|adduser]] || BSD || Add users to your system || ||%0a|| [[group/usage|group]] || BSD || Manage groups || ||%0a|| [[usermod/usage|Modifying user accounts]] || BSD || Modifying user accounts || ||%0a|| [[openbsd/localtime|localtime]] || BSD || Set time zone || ||%0a|| [[dd/iso|Write image to usb]] || BSD || Write image to USB || ||%0a|| [[ln/intro|symbolic links]] || BSD || Create symbolic links || ||%0a|| [[openbsd/fstab|fstab]] || BSD || Edit filesystem table || ||%0a|| [[dmesg/usage|dmesg]] || BSD || Display system message buffer || ||%0a|| [[openbsd/hier|hier]] || BSD || OpenBSD filesystem hierarchy || ||%0a|| [[top/usage|top]] || BSD || Info about CPU processes || ||%0a|| [[ps/usage|ps]] || BSD || Monitor Processes || ||%0a|| [[renice/usage|renice]] || BSD || Renice processes || ||%0a|| [[fstat/usage|fstat]] || Network || Show file status || ||%0a|| [[fuser/usage|fuser]] || Network || Show process using a file || ||%0a|| [[kill/usage|kill]] || BSD || Send signals to processes || ||%0a|| [[openbsd/panic|kernel panics]] || BSD || Dealing with kernel panics || ||%0a|| [[openbsd/loginconf|Login classes]] || BSD || Configure login classes || ||%0a|| [[openbsd/sysctl|sysctl]] || BSD || Getting and setting kernel state || ||%0a|| [[swapctl/usage|swapctl]] || BSD || Manage system swap space || ||%0a|| [[openbsd/outofmemory|OOM error]] || BSD || Out of memory error || ||%0a|| [[freedom/firstamendment|Free Press]] || Civics || Freedom of Speech and of the Press || ||%0a|| [[atactl/usage|atactl]] || BSD || Get disk information || ||%0a|| [[rc/rc.d|rc.d]] || BSD || rc.d || ||%0a|| [[rc/rc.conf|rc.conf]] || BSD || rc.conf || ||%0a|| [[acct/accton|accton]] || BSD || accton  || ||%0a|| [[openbsd/vipw|vipw]] || BSD || Edit the password file || Extend VPS 1 week ||%0a|| [[Ircnow/Dogfood|Dogfooding]] || Civics || Eat your own dogfood || ||%0a||! Virtual Hosting ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[freedom/software|Software Freedom]] || Civics || Software Freedom || ||%0a|| [[relayd/acceleration|TLS Acceleration]] || Security || Provide TLS for multiple services || ||%0a|| [[relayd/TLSMulti|TLS Acceleration (multiple)]] || Security || Encrypt traffic with TLS for multiple services || ||%0a|| [[Openhttpd/Hosting|Multi-user OpenHTTPd]] || Web || Configure webserver for multiple domains || ||%0a|| [[Openbsd/Httpopenproxy|Open Proxies]] || Web || Avoid blacklists by closing open proxies || ||%0a||! TCP/IP Networking ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[freedom/religion|Religious Liberty]] || Civics || Freedom of Religion || ||%0a|| [[tcpip/overview|TCP/IP Networking]] || Network || Learn Basics of TCP/IP || ||%0a|| [[IPv4/overview|IPv4 Networking]] || Network || Learn IPv4 Networking || ||%0a|| [[IPv6/overview|IPv6 Networking]] || Network || Learn IPv6 Networking || ||%0a|| [[tcpip/sockets|TCP/IP sockets]] || Network || Learn Basics of TCP/IP sockets || ||%0a|| [[ip/netmask|IP netmasks]] || Network || Learn Basics of IP netmasks || ||%0a|| [[tcpip/ports|TCP/UDP ports]] || Network || Learn Basics of TCP/UDP ports || ||%0a|| [[IP/Myaddress|My IP Address]] || Network || What's my IP Address? || ||%0a|| [[tcpbench/usage|tcpbench]] || Network || Benchmark TCP/IP throughput || ||%0a|| [[openbsd/ping|ping]] || Network || Troubleshoot networking with ping || ||%0a|| [[traceroute/usage|traceroute]] || Network || Trace packet route || ||%0a|| [[openbsd/dig|dig]] || Network || Troubleshoot DNS servers and records || Extend VPS 1 week ||%0a|| [[ifconfig|ifconfig]] || Network || ifconfig guide || ||%0a|| [[ifconfig/change|Changing addresses]] || Network || Changing network addresses || ||%0a|| [[Hostnameif/Static|Static Networking]] || Network || || ||%0a|| [[Hostnameif/autoconf|Autoconf Networking]] || Network || || ||%0a|| [[ifstated/configure|Configure ifstated]] || Network || Configure ifstated || ||%0a|| [[arp/usage|arp]] || Network || Address resolution protocol || ||%0a|| [[ndp/usage|ndp]] || Network || Neighbor discovery protocol || ||%0a|| [[arp/spoofing|arp spoofing]] || Network || Detect ARP spoofing || ||%0a|| [[ip/spoofing|ip spoofing]] || Network || Detect IP spoofing || ||%0a|| [[resolv/conf|resolv.conf]] || Network || Configuring resolv.conf || ||%0a|| [[resolvd/usage|resolvd]] || Network || Using resolvd || ||%0a|| [[route/usage|Route]] || Network || Configure route paths || ||%0a|| [[route/hostnameif|hostname.if route]] || Network || Add routes to hostname.if at bootup || ||%0a|| [[netstat/usage|netstat]] || Network || Show network status || ||%0a|| [[route/sourceaddr|Route source address]] || Network || Configure routing source address || Extend VPS 1 week ||%0a||! Wireless ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[ifconfig/hostap|hostap]] || Network || Set up Host Access Point || ||%0a|| [[hostapd/configure|hostapd]] || Network || Synchronize Host Access Points || ||%0a||! Packet Filter ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[freedom/openforeveryone|Open For Everyone]] || Civics || || ||%0a|| [[pf/configure|pf.conf]] || Network || Configure Packet Filter || ||%0a|| [[pf/intro|Packet Filter]] || Network || Setup firewall with Packet Filter || ||%0a|| [[pf/nat|NAT with packet filter]] || Network || NAT with Packet Filter || ||%0a|| [[pf/whitelisting|Whitelisting]] || Network || Whitelisting || ||%0a|| [[pf/debugging|Debugging PF rulesets]] || Network || Debugging PF rulesets || ||%0a|| [[pf/rdr-to|rdr-to]] || Network || rdr-to || ||%0a|| [[pf/traffic shaping|Traffic shaping]] || Network || Traffic shaping || ||%0a|| [[pf/pflog|pflog]] || Network || pflog || ||%0a|| [[pf/authpf|authpf]] || Network || authpf || ||%0a|| [[pf/testing|testing rulesets]] || Network || Testing PF rulesets || ||%0a|| [[pf/nat64|NAT64 with packet filter]] || Network || NAT6 with packetfilter || ||%0a|| [[pf/ftp-proxy|ftp-proxy]] || Network || ftp-proxy || ||%0a|| [[pf/dmz|DMZ]] || Network || DMZ || ||%0a|| [[openbsd/ddos|DDoS Defense]] || Network || Defend against DDoS Attacks || ||%0a|| [[openbsd/tcpdump|tcpdump]] || Network || Read network packets || ||%0a|| [[openbsd/SSDP|SSDP attack]] || Network || || ||%0a|| [[openbsd/ACKFlood|TCP ack flood]] || Network || || ||%0a|| [[openbsd/RSTFlood|TCP reset flood]] || Network || || ||%0a|| [[openbsd/UDPFlood|UDP Flood]] || Network || || ||%0a|| [[openbsd/amplification|amplification attack]] || Network || || ||%0a|| [[openbsd/PFStable|PF Stable]] || Network || Sample PF Firewall for Stable || ||%0a|| [[openbsd/PFTesting|PF Testing]] || Network || Sample PF Firewall for Testing || ||%0a|| [[openbsd/pf|Packet Filter]] || Network || PF Guide || Extend VPS 1 week ||%0a|| [[pfctl/usage|pfctl]] || Network || PF Guide || Control packet filter ||%0a||! Networking ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[ifconfig/wifi|WiFi]] || Network || Configure WiFi || ||%0a|| [[ifconfig/wifitoethernet|WiFi to Ethernet]] || Network || WiFi to Ethernet || ||%0a|| [[ifconfig/bridge|bridge]] || Network || Bridge interface || ||%0a|| [[ifconfig/vlan|vlan]] || Network || vlan interface || ||%0a|| [[ifconfig/veb|veb]] || Network || veb interface || ||%0a|| [[ifconfig/vether|vether]] || Network || Virtual Ethernet interface || ||%0a|| [[ifconfig/carp|carp]] || Network || CARP interface || ||%0a|| [[ifconfig/gre|gre]] || Network || GRE interface || ||%0a|| [[ifconfig/mgre|mgre]] || Network || MGRE interface || ||%0a|| [[ifconfig/egre|egre]] || Network || EGRE interface || ||%0a|| [[ifconfig/eoip|eoip]] || Network || eoip interface || ||%0a|| [[ifconfig/etherip|etherip]] || Network || etherip interface || ||%0a|| [[ifconfig/vxlan|vxlan]] || Network || vxlan interface || ||%0a|| [[ifconfig/mpe|mpe]] || Network || mpe interface || ||%0a|| [[ifconfig/mpip|mpip]] || Network || mpip interface || ||%0a|| [[ifconfig/mpw|mpw]] || Network || mpw interface || ||%0a|| [[ifconfig/bpe|bpe]] || Network || bpe interface || ||%0a|| [[ifconfig/pppoe|pppoe]] || Network || pppoe interface || ||%0a|| [[ifconfig/sppp|sppp]] || Network || sppp interface || ||%0a|| [[ifconfig/tpmr|tpmr]] || Network || tpmr interface || ||%0a|| [[ifconfig/trunk|trunk]] || Network || trunk interface || ||%0a|| [[ifconfig/aggr|aggr]] || Network || aggr interface || ||%0a|| [[ifconfig/urndis|urndis]] || Network || urndis interface || ||%0a|| [[ifconfig/pflow|pflow]] || Network || pflow interface || ||%0a|| [[ifconfig/pfsync|pfsync]] || Network || pfsync interface || ||%0a|| [[gre/6in4vmm|6-in-4 gre (vmm)]] || Network || Tunnel IPv6 inside IPv4 with GRE (vmm) || ||%0a|| [[gre/6in4|6-in-4 gre]] || Network || Tunnel IPv6 inside IPv4 with GRE || ||%0a|| [[gre/4in6|4-in-6 gre]] || Network || Tunnel IPv4 inside IPv6 with GRE || ||%0a|| [[ifconfig/wg|wg]] || Network || WireGuard interface || ||%0a|| [[ifconfig/tap|tap]] || Network || Ethernet tunnel pseudo-device interface || ||%0a|| [[ifconfig/tun|tun]] || Network || Network tunnel pseudo-device interface || ||%0a||! Name Server ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[netizen/become|Become a Netizen]] || Civics || || ||%0a|| [[netizen/rights|Netizen Rights]] || Civics || || ||%0a|| [[dns/records|DNS Records]] || DNS || Understand DNS record types || ||%0a|| [[dns/registrars|Name Registrars]] || DNS || Choose a name registrar || ||%0a|| [[dns/FQDN|FQDN]] || DNS || Understand FQDN and $ORIGIN || ||%0a|| [[nsd/configure|Configure NSD]] || DNS || Configure name server for custom domains || ||%0a|| [[dns/zonefile|Zone File]] || DNS || || ||%0a|| [[nsd/zone|NSD Zone]] || DNS || || Extend VPS 1 week ||%0a|| [[nsd/masterslave|nsd master slave]] || DNS || || ||%0a|| [[nsd/troubleshoot|Troubleshooting NSD]] || DNS || || ||%0a|| [[DNS/rDNS|rDNS]] || DNS || Configure reverse DNS for vhosts and email || ||%0a|| [[DNS/Ipv4rDNS|IPv4 rDNS]] || DNS || Configure IPv4 reverse DNS || ||%0a|| [[DNS/Ipv6rDNS|IPv6 rDNS]] || DNS || Configure IPv6 reverse DNS || Extend VPS 1 week ||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[freedom/unix|Unix Work Ethic]] || Civics || || ||%0a|| [[dns/vhost|vhost]] || DNS || Create custom vhost || ||%0a|| [[identd/configure|identd]] || Security || Provide ident to stop abuse || ||%0a||! Mail Server ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[freedom/federation|Federation]] || Civics || || ||%0a|| [[opensmtpd/maildir|OpenSMTPd (with Maildir)]] || Mail || Configure your mail server (using Maildir) || ||%0a|| [[DNS/Mail|DNS for Mail]] || Mail || Create DNS records for email || ||%0a|| [[DNS/SPF]] || Mail || Configure SPF records to avoid the spam folder || ||%0a|| [[DNS/DKIM]] || Mail || Configure DKIM records to avoid the SPAM folder || ||%0a|| [[DNS/DMARC]] || Mail || Configure DMARC records to block phishing and spam || ||%0a|| [[netcat/SMTP|netcat SMTP]] || Network || Troubleshoot SMTP with netcat || ||%0a|| [[Opensmtpd/Test|SMTP Testing]] || Mail || Send a test letter || ||%0a|| [[Opensmtpd/Inbox|Getting inboxed]] || Mail || Getting inboxed || ||%0a|| [[Opensmtpd/Openrelay|Open Mail Relay]] || Mail || Block open mail relay to avoid sending spam || ||%0a|| [[smtp/usage|smtp]] || Mail || SMTP client || ||%0a|| [[spamd/configure|spamd]] || Mail || Configure spam filter || ||%0a|| [[opensmtpd/aliases|aliases]] || Mail || Configure aliases for mail || ||%0a||! Simple Network Management Protocol ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[snmpd/configure|snmpd]] || SNMP || Configure SNMPd || ||%0a|| [[snmp/configure|snmp]] || SNMP || Configure SNMP || ||%0a|| [[sensorsd/configure|sensorsd]] || BSD || sensorsd || ||%0a||! LDAP ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[ldapd/configure|ldapd]] || LDAP || Configure ldapd || ||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[Servers/Rights|Servers' Rights]] || Civics || Servers' Rights || ||%0a|| [[Minutemin/Code|Minutemin's Code]] || Civics || Recite the Code of Honor || ||%0a||! Version Control ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[Minutemin/Duty|Call of Duty]] || Civics || The Call of Duty || ||%0a|| [[cvsweb/restore|Restore from CVSweb]] || Code || Learn how to restore files with CVSweb || ||%0a|| [[got/usage|got]] || Code || Set up got version control (clone of git) || ||%0a|| [[gotconf/configure|got.conf]] || Code || Configure got.conf || ||%0a|| [[gotadmin/usage|gotadmin]] || Code || Admin got repos || ||%0a|| [[gotd/configure|Configure gotd]] || Code || Configure gotd server || ||%0a|| [[tog/usage|tog]] || Code || Browse git repository || ||%0a|| [[gotwebd/configure|gotwebd]] || Code || Configure gotwebd || Extend VPS 1 week ||%0a||! Disk Setup and Backups ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[Minutemin/Server|Minutemin's Server]] || Civics || The Minutemin's Server || ||%0a|| [[openbsd/dump|dump]] || BSD || Backup a partition || ||%0a|| [[openrsync/usage|openrsync]] || BSD || Backup and sync files || ||%0a|| [[openbsd/fdisk|fdisk]] || BSD || Partition Hard Disk || ||%0a|| [[openbsd/disklabel|disklabel]] || BSD || Edit Partitions || ||%0a|| [[disklabel/partitioning|disklabel partitioning]] || BSD || Partition New Hard Disk || ||%0a|| [[newfs/usage|newfs]] || BSD || Construct a new filesystem || ||%0a|| [[mount/usage|mount]] || BSD || Mount partitions || ||%0a|| [[openbsd/newdisk|newdisk]] || BSD || Add a New Hard Disk || ||%0a|| [[mfs/usage|mfs]] || BSD || Construct a memory-based filesystem || ||%0a|| [[ffs/intro|FFS]] || BSD || Learn about the Fast Filesystem || ||%0a|| [[fsck/usage|fsck]] || BSD || Filesystem check consistency check || ||%0a|| [[openbsd/quota]] || BSD || Edit disk quotas || ||%0a|| [[openbsd/growfs|growfs]] || BSD || Grow a Disk Partition || Get shell account on server ||%0a|| [[scan_ffs/usage|scan_ffs]] || BSD || Recover a deleted disklabel || Extend 1 week VPS ||%0a||! RAID ||||||||%0a|| [[softraid/install|softraid]] || BSD || Configuring software RAID || ||%0a|| [[softraid/rebuild|Rebuild softraid]] || BSD || Rebuilding software RAID || ||%0a||! File servers ||||||||%0a|| [[exports/configure|nfsd]] || BSD || Configure NFS || ||%0a|| [[nfsd/configure|nfsd]] || BSD || Serve files over NFS || ||%0a|| [[mount_nfs/usage|mount_nfs]] || BSD || Mount NFS filesystems || ||%0a|| [[mountd/configure|nfsd]] || BSD || Automatically mount NFS filesystems || ||%0a|| [[ftpd/configure|ftpd]] || BSD || Serve files over FTP || ||%0a|| [[tftpd/configure|tftpd]] || BSD || Serve files over TFTP || ||%0a||! Text Processing ||||||||%0a|| [[sed/usage|sed]] || BSD || sed scripting || ||%0a|| [[awk/usage|awk]] || BSD || awk scripting || ||%0a|| [[roff/usage|roff]] || BSD || roff || ||%0a||! Shell Scripting ||||||||%0a|| [[ksh/intro|ksh intro]] || BSD || shell scripting || ||%0a|| [[perl101/perl101|perl intro]] || BSD || perl scripting || ||%0a||! Virtual Machine ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[vmm/intro|VMM Intro]] || BSD || Intro to the VMM Hypervisor || ||%0a|| [[vmctl/usage|Vmctl User Guide]] || BSD || Control your VPS || ||%0a|| [[cu/usage|cu]] || BSD || Serial terminal emulator || ||%0a|| [[vmctl/disk|Add disk to VM]] || BSD || Add new storage disk to VPS || ||%0a|| [[vmctl/reinstall|Reinstall VM]] || BSD || Reinstall OpenBSD inside VMM || ||%0a|| [[vmm/install|Install OpenBSD inside VMM]] || BSD || Install OpenBSD inside VMM || ||%0a|| [[openbsd/install|Install OpenBSD]] || BSD || Install OpenBSD || ||%0a|| [[openbsd/upgrade|Upgrade OpenBSD]] || BSD || Upgrade OpenBSD || ||%0a|| [[openbsd/sysupgrade|OpenBSD Sysupgrade]] || BSD || Sysupgrade OpenBSD || ||%0a|| [[vmm/sysupgrade|Vmm Sysupgrade]] || BSD || Sysupgrade OpenBSD VMM Host || ||%0a|| [[sysmerge/usage|sysmerge]] || BSD || Merge conf files after upgrade || ||%0a|| [[openbsd/bsdrd|bsd.rd]] || BSD || Install/Upgrade/Repair with Ramdisk || ||%0a|| [[openbsd/bootconf|boot.conf]] || BSD || Set default boot parameters || ||%0a|| [[openbsd/singleuser|Single User Mode]] || BSD || Boot OpenBSD into single user mode || ||%0a|| [[OpenBSD.ResetPassword|Reset root password]] || BSD || Reset root password || ||%0a|| [[openbsd/autoinstall|autoinstall]] || BSD || Unattended autoinstall || ||%0a||! VMM Hosting ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[vmm/configure|Configure VMM]] || Network || Offer Hosting with VMM || ||%0a|| [[hosting/providers|Hosting Providers]] || Network || Choose a Hosting Provider || ||%0a|| [[dhcpd/configure|Configure DHCP server]] || Network || Configure DHCP server || ||%0a|| [[pxeboot/configure|Configure pxeboot]] || Network || Configure pxeboot || ||%0a|| [[rad/configure|Configure rad server]] || Network || Set up Router Advertisements for IPv6 || ||%0a|| [[slaacd/configure|Configure slaacd daemon]] || Network || Configure slaacd daemon || ||%0a|| [[openbsd/diskless|diskless]] || BSD || Run OpenBSD on diskless systems || Acquire admin access ||%0a||! System Bootup ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[rc/conf|rc.conf]] || BSD || System daemon configuration || ||%0a||! System Logging ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[syslogd/configure|syslogd]] || BSD || Configure system logging || ||%0a|| [[syslogd/remote|Remote syslogd]] || BSD || Configure remote system logging || ||%0a|| [[newsyslog/configure|newsyslog]] || BSD || Log rotation || ||%0a||! System Logging ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[sendbug/usage|send]] || BSD || sendbug || ||%0a|| [[openbsd/mail|OpenBSD mailing list]] || BSD || OpenBSD mailing list || ||%0a||! Civics ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[Freedom/Independence|Independence]] || Civics || Declaration of Network Independence || ||%0a|| [[ircnow/constitution|Constitution]] || Civics || Read the Constitution and Bill of Rights || ||%0a|| [[freedom/union|United We Serve]] || Civics || || ||%0a|| [[freedom/privacy|Privacy]] || Civics || Right to Privacy || ||%0a|| [[freedom/homestead|Homestead VPS]] || Civics || || ||%0a|| [[freedom/madeonirc|Made on IRC]] || Civics || || ||%0a|| [[freedom/startupdream|The Startup Dream]] || Civics || || ||%0a|| [[freedom/dueprocess|Due Process]] || Civics || || ||%0a|| [[freedom/checks|Checks and Balances]] || Civics || || ||%0a|| [[freedom/rulebylaw|Rule by Law]] || Civics || || Extend VPS 1 week ||%0a||! Miscellaneous ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[openbsd/ports|ports]] || BSD || Install software from ports tree || ||%0a|| [[Pkgadd.CheckUpdates-|pkg_add updates]] || BSD || Keep software updated || ||%0a|| [[ntpd/configure|ntpd]] || Network || Update date and time from network automatically || Extend VPS 1 week ||%0a||! Stopping Abuse ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[abuse/intro|Abuse Guide]] || Security || Investigation techniques to report criminals || ||%0a|| [[team/security|Team Security]] || Security || Prevent security leaks || Extend VPS 1 week ||%0a||! Security ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[Password/Management|Manage Passwords]] || Shell || Create secure passwords || ||%0a|| [[Openssl/Encryptfile|Encrypt Files]] || Shell || Encrypt files with OpenSSL || ||%0a|| [[signify/verify|signify]] || Security || Verify OpenBSD software || ||%0a|| [[shell/limits]] || Security || Setting resource limits || ||%0a|| [[openbsd/FilePermissions|File Permissions]] || Security || Fix insecure file permissions || Extend VPS 1 week ||%0a|| [[pledge/intro|pledge]] || Security || Restrict system operations || ||%0a|| [[unveil/intro|unveil]] || Security || Unveil parts of restricted filesystems || ||%0a|| [[openbsd/setuid]] || Security || Audit setuid root binaries || ||%0a|| [[security/usage|security]] || Security || Security checks || ||%0a|| [[team/security]] || Security || Team security || ||%0a||! Routing ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[vlan/configure|Configure vlan]] || Network || Configure vlan || ||%0a|| [[pair/configure|pair]] || Network || Configure pair interface || ||%0a|| [[veb/configure|Configure veb]] || Network || Configure veb || ||%0a|| [[bridge/configure|Configure bridge]] || Network || Configure bridge || ||%0a|| [[nat/configure|Configure nat]] || Network || Configure NAT || ||%0a|| [[route/static|Static routing]] || Network || Configure static routing || ||%0a|| [[ripd/configure|RIPd]] || Network || Configure RIPd || ||%0a|| [[route6d/configure|route6d]] || Network || Configure route6d || ||%0a|| [[ospfd/configure|OSPFd]] || Network || Configure OSPFd || ||%0a|| [[bgpd/configure|BGPd]] || Network || Configure BGPd || ||%0a|| [[dhcpd/configure|Configure DHCP server]] || Network || || ||%0a|| [[dvmrpd/configure|DVMRPd]] || Network || Configure DVMRPd || ||%0a|| [[mrouted/configure|mrouted]] || Network || Configure Multicast Routing || ||%0a|| [[npppd/configure|Configure npppd server]] || Network || Configure npppd server || ||%0a|| [[dhcpleased/configure|Configure DHCP client]] || Network || || ||%0a||! VPNs and Proxies ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[iked/sitetosite|Site-to-site IPsec]] || Security || Provide site-to-site IPsec VPN || ||%0a|| [[iked/sitetositevmm|Site-to-site IPsec (vmm)]] || Security || Emulate site-to-site IPsec VPN with VMM || ||%0a|| [[iked/roadwarrior|Road warrior IPsec]] || Network || Provide Roadwarrior IPsec VPNs || ||%0a|| [[iked/roadwarriorvmm|Road warrior IPsec (vmm) ]] || Network || Emulate Roadwarrior IPsec VPNs || ||%0a|| [[vpn/vpn|VPN clients]] || Security || Configure IPsec VPN client || ||%0a|| [[vpn/myipaddress|Test VPN]] || Security || Test IP address behind VPN || ||%0a|| [[iked/binat|Binat IPsec]] || Network || Host home from with IPsec || ||%0a||! Secure Shell ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[sshd/configure|sshd]] || Security || Configure and start sshd || ||%0a|| [[ssh/fingerprints|ssh fingerprints]] || Security || Verify SSH fingerprints || ||%0a|| [[ssh/agent|ssh agent]] || Security || Configure ssh agent || ||%0a|| [[OpenSSH/connect|OpenSSH]] || Security || Configure ssh and connect securely || ||%0a|| [[OpenSSH/Keygen|Generate SSH Keys]] || Security || Generate SSH keys || Extend VPS 1 week ||%0a|| [[openbsd/sshkeys|Verify SSH keys]] || Security || Verify ssh keys || ||%0a|| [[openbsd/sshbackdoor|SSH backdoor]] || Security || Configure ssh side channel to avoid DDoS || ||%0a|| [[sftp/chroot|Chroot SFTP]] || Security || Configure sftp inside a chroot || ||%0a|| [[sshd/chroot|Chroot sshd]] || Network || Configure ssh users inside a chroot || ||%0a|| [[openrsync/chroot|Chroot openrsync]] || Network || Configure openrsync inside a chroot || Extend VPS 1 week ||%0a||! Further Reading ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[openbsd/books|OpenBSD Books]] || BSD || OpenBSD recommended reading || ||%0a|| [[unix/reading|Unix Books]] || BSD || Unix recommended reading || ||%0a||! Minutemin ||||||||%0a||! Lesson ||! Topic ||! Description ||! Reward ||%0a|| [[Team/Welcome|Welcome to the Team]] || Civics || Learn Team Responsibilities || ||%0a|| [[Team/Testing|Testing Servers]] || Civics || Learn Team Procedure for Testing || ||%0a|| [[Team/Announce|Announcements]] || Civics || Announce downtime and updates for users || Extend VPS 1 week ||%0a
+time=1752613485
+title=Admin Forces Training
+author:1752613485=jrmu
+csum:1752613485=got/repo has now been subsumed by got/usage, gotd/configure, and gotwebd/configure
+diff:1752613485:1752447612:=234a235%0a> || [[got/repo|got repo]] || Code || Set up got repo || ||%0a
+host:1752613485=104.167.242.227
+author:1752447612=jrmu
+csum:1752447612=merged got/mirror with got/usage
+diff:1752447612:1752438473:=236a237%0a> || [[got/mirror|got mirror]] || Code || Set up got mirror || ||%0a
+host:1752447612=104.167.242.227
+author:1752438473=jrmu
+csum:1752438473=Add guide for configuring boot.conf
+diff:1752438473:1752279279:=288d287%0a%3c || [[openbsd/bootconf|boot.conf]] || BSD || Set default boot parameters || ||%0a
+host:1752438473=104.167.242.140
+author:1752279279=jrmu
+diff:1752279279:1752270404:=238d237%0a%3c || [[tog/usage|tog]] || Code || Browse git repository || ||%0a
+host:1752279279=104.167.242.140
+author:1752270404=jrmu
+csum:1752270404=add got.conf configuration
+diff:1752270404:1751723778:=233d232%0a%3c || [[gotconf/configure|got.conf]] || Code || Configure got.conf || ||%0a
+host:1752270404=104.167.242.227
+author:1751723778=saeed
+csum:1751723778=connect tables together, this looks better
+diff:1751723778:1751723550:minor=12a13%0a> %0a26a28%0a> %0a42c44,47%0a%3c || [[hosts/configure|Configure /etc/hosts]] || BSD || Host and network name database || Extend VPS 1 ||%0a---%0a> || [[hosts/configure|Configure /etc/hosts]] || BSD || Host and network name database || Extend VPS 1 week ||%0a> %0a> %0a> || border=1 width=100%25 class="sortable simpletable"%0a48a54%0a> %0a76d81%0a%3c || [[freedom/firstamendment|Free Press]] || Civics || Freedom of Speech and of the Press || ||%0a81a87,90%0a> %0a> %0a> ||! Lesson ||! Topic ||! Description ||! Reward ||%0a> || [[freedom/firstamendment|Free Press]] || Civics || Freedom of Speech and of the Press || ||%0a82a92%0a> %0a89a100%0a> %0a118a130%0a> %0a122a135%0a> %0a149a163%0a> %0a182a197%0a> %0a197a213%0a> %0a201a218%0a> %0a216a234%0a> %0a220a239%0a> %0a221a241%0a> %0a224a245,246%0a> %0a> %0a227a250%0a> %0a237a261%0a> %0a254a279%0a> %0a257a283%0a> %0a264a291%0a> %0a268a296%0a> %0a271a300%0a> %0a288a318%0a> %0a297a328%0a> %0a300a332%0a> %0a305a338%0a> %0a309a343%0a> %0a321a356%0a> %0a326a362%0a> %0a330a367%0a> %0a342a380%0a> %0a359a398%0a> %0a368a408%0a> %0a380a421%0a> %0a384a426%0a> %0a
+host:1751723778=104.167.242.150
+author:1751723550=saeed
+csum:1751723550=fix two entries in tables being incomplete
+diff:1751723550:1748816847:minor=62c62%0a%3c || [[openbsd/adduser|adduser]] || BSD || Add users to your system || ||%0a---%0a> || [[openbsd/adduser|adduser]] || BSD || Addusers || ||%0a117,118c117,118%0a%3c || [[Hostnameif/Static|Static Networking]] || Network || || ||%0a%3c || [[Hostnameif/autoconf|Autoconf Networking]] || Network || || ||%0a---%0a> || [[Hostnameif/Static|Static Networking]] || Network || ||%0a> || [[Hostnameif/autoconf|Autoconf Networking]] || Network || ||%0a
+host:1751723550=104.167.242.150
+author:1748816847=jrmu
+diff:1748816847:1745430765:=93c93%0a%3c ||! Virtual Hosting ||||||||%0a---%0a> ||! IRC Bouncer ||||||||%0a
+host:1748816847=172.56.232.87
+author:1745430765=jrmu
+diff:1745430765:1744052631:=140c140%0a%3c || [[pf/intro|Packet Filter]] || Network || Setup firewall with Packet Filter || ||%0a---%0a> || [[pf/guide|Packet Filter]] || Network || Setup firewall with Packet Filter || ||%0a
+host:1745430765=172.56.232.213
+author:1744052631=jrmu
+diff:1744052631:1736095639:=324d323%0a%3c || [[pxeboot/configure|Configure pxeboot]] || Network || Configure pxeboot || ||%0a
+host:1744052631=172.56.234.179
+author:1736095639=jrmu
+diff:1736095639:1735710374:=306c306%0a%3c || [[vmctl/disk|Add disk to VM]] || BSD || Add new storage disk to VPS || ||%0a---%0a> || [[vmctl/newdisk|Add disk to VM]] || BSD || Add new storage disk to VPS || ||%0a
+host:1736095639=172.56.234.225
+author:1735710374=jrmu
+diff:1735710374:1735447392:=260c260%0a%3c || [[gotwebd/configure|gotwebd]] || Code || Configure gotwebd || Extend VPS 1 week ||%0a---%0a> || [[gotweb/install|gotweb]] || Code || Set up got web access || Extend VPS 1 week ||%0a
+host:1735710374=2602:fccf:1:2140::
+author:1735447392=jrmu
+csum:1735447392=fix formatting
+diff:1735447392:1735447326:minor=255,258c255,256%0a%3c || [[got/usage|got]] || Code || Set up got version control (clone of git) || ||%0a%3c || [[gotadmin/usage|gotadmin]] || Code || Admin got repos || ||%0a%3c || [[got/repo|got repo]] || Code || Set up got repo || ||%0a%3c || [[gotd/configure|Configure gotd]] || Code || Configure gotd server || ||%0a---%0a> || [[got/usage|got]] || Code || Set up got version control (clone of git) || || || [[gotadmin/usage|gotadmin]] || Code || Admin got repos || ||%0a> || [[got/repo|got repo]] || Code || Set up got repo || ||                       || [[gotd/configure|Configure gotd]] || Code || Configure gotd server || ||%0a
+host:1735447392=198.251.82.194
+author:1735447326=jrmu
+csum:1735447326=replace old git server with gotd
+diff:1735447326:1734307507:=255,256c255,257%0a%3c || [[got/usage|got]] || Code || Set up got version control (clone of git) || || || [[gotadmin/usage|gotadmin]] || Code || Admin got repos || ||%0a%3c || [[got/repo|got repo]] || Code || Set up got repo || ||                       || [[gotd/configure|Configure gotd]] || Code || Configure gotd server || ||%0a---%0a> || [[got/usage|got]] || Code || Set up got version control (clone of git) || ||%0a> || [[got/repo|got repo]] || Code || Set up got repo || ||%0a> || [[got/server|got server]] || Code || Set up got server || ||%0a
+host:1735447326=198.251.82.194
+author:1734307507=jrmu
+diff:1734307507:1734299120:=36d35%0a%3c || [[dns/dnssec|DNSSec]] || DNS || DNSSec || ||%0a
+host:1734307507=2602:fccf:1:2140::
+author:1734299120=jrmu
+diff:1734299120:1734123527:=38d37%0a%3c || [[unbound/localzone|Unbound with local zones]] || DNS || Customize local DNS lookup || ||%0a
+host:1734299120=2602:fccf:1:2140::
+author:1734123527=jrmu
+diff:1734123527:1734063043:=35d34%0a%3c || [[unbound/control|unbound-control]] || DNS || Using unbound-control || ||%0a
+host:1734123527=2602:fccf:1:2243::
+author:1734063043=jrmu
+diff:1734063043:1733895005:=39d38%0a%3c || [[nslookup/usage|nslookup]] || DNS || Troubleshoot DNS records with nslookup || ||%0a
+host:1734063043=2602:fccf:1:2243::
+author:1733895005=jrmu
+diff:1733895005:1733812988:=36d35%0a%3c || [[unbound/opennic|Unbound with OpenNIC]] || DNS || Using OpenNIC to handle queries for Unbound || ||%0a
+host:1733895005=2602:fccf:1:2243::
+author:1733812988=jrmu
+diff:1733812988:1733799884:=35c35%0a%3c || [[unbound/dnssec|DNSSec for Unbound]] || DNS || Add DNSSec for unbound || ||%0a---%0a> || [[unbound/dnssec-|DNSSec for Unbound]] || DNS || Add DNSSec for unbound || ||%0a
+host:1733812988=2602:fccf:1:2243::
+author:1733799884=jrmu
+diff:1733799884:1733795182:=33d32%0a%3c || [[dns/cachingservers|Caching DNS servers]] || DNS || Caching DNS servers ||%0a
+host:1733799884=2602:fccf:1:2243::
+author:1733795182=jrmu
+diff:1733795182:1733467808:minor=408c408%0a%3c || [[openbsd/sshkeys|Verify SSH keys]] || Security || Verify ssh keys || ||%0a---%0a> || [[openbsd/sshkeys|SSH keys]] || Security || Verify ssh keys || ||%0a
+host:1733795182=2602:fccf:1:2243::
+author:1733467808=jrmu
+diff:1733467808:1733363710:=58d57%0a%3c || [[usermod/usage|Modifying user accounts]] || BSD || Modifying user accounts || ||%0a
+host:1733467808=198.251.82.194
+author:1733363710=jrmu
+diff:1733363710:1733363382:=32d31%0a%3c || [[unwind/configure|unwind]] || Network || Validating DNS resolver || ||%0a
+host:1733363710=198.251.82.194
+author:1733363382=jrmu
+diff:1733363382:1732325302:=31a32%0a> || [[unwind/configure|unwind]] || Network || Validating DNS resolver || ||%0a
+host:1733363382=198.251.82.194
+author:1732325302=jrmu
+diff:1732325302:1732077170:=117c117%0a%3c || [[resolv/conf|resolv.conf]] || Network || Configuring resolv.conf || ||%0a---%0a> || [[resolv/conf-|resolv.conf]] || Network || Configuring resolv.conf || ||%0a
+host:1732325302=104.167.242.140
+author:1732077170=jrmu
+diff:1732077170:1732077065:=115,116d114%0a%3c || [[arp/spoofing|arp spoofing]] || Network || Detect ARP spoofing || ||%0a%3c || [[ip/spoofing|ip spoofing]] || Network || Detect IP spoofing || ||%0a
+host:1732077170=198.251.82.194
+author:1732077065=jrmu
+diff:1732077065:1731996057:=268d267%0a%3c || [[scan_ffs/usage|scan_ffs]] || BSD || Recover a deleted disklabel || Extend 1 week VPS ||%0a
+host:1732077065=198.251.82.194
+author:1731996057=jrmu
+csum:1731996057=Reorganize lessons
+diff:1731996057:1731995826:minor=29c29%0a%3c ||! Domain Name Lookup ||||||||%0a---%0a> || border=1 width=100%25 class="sortable simpletable"%0a31,42d30%0a%3c || [[dns/overview|DNS Overview]] || DNS || Learn the Domain Name System || ||%0a%3c || [[unwind/configure|unwind]] || Network || Validating DNS resolver || ||%0a%3c || [[unbound/configure|unbound]] || DNS || Configure a local caching nameserver || ||%0a%3c || [[unbound/dnssec-|DNSSec for Unbound]] || DNS || Add DNSSec for unbound || ||%0a%3c || [[dig/usage|dig]] || DNS || Troubleshoot DNS records with dig || ||%0a%3c || [[host/usage|host]] || DNS || Troubleshoot DNS records with host || ||%0a%3c || [[hostname/usage|hostname]] || DNS || Set hostname || ||%0a%3c || [[hosts/configure|Configure /etc/hosts]] || BSD || Host and network name database || Extend VPS 1 week ||%0a%3c %0a%3c %0a%3c || border=1 width=100%25 class="sortable simpletable"%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a187a176,186%0a> %0a> ||! Domain Name Lookup ||||||||%0a> ||! Lesson ||! Topic ||! Description ||! Reward ||%0a> || [[dns/overview|DNS Overview]] || DNS || Learn the Domain Name System || ||%0a> || [[unwind/configure|unwind]] || Network || Validating DNS resolver || ||%0a> || [[unbound/configure|unbound]] || DNS || Configure a local caching nameserver || ||%0a> || [[unbound/dnssec-|DNSSec for Unbound]] || DNS || Add DNSSec for unbound || ||%0a> || [[dig/usage|dig]] || DNS || Troubleshoot DNS records with dig || ||%0a> || [[host/usage|host]] || DNS || Troubleshoot DNS records with host || ||%0a> || [[hostname/usage|hostname]] || DNS || Set hostname || ||%0a> || [[hosts/configure|Configure /etc/hosts]] || BSD || Host and network name database || Apply for IRC operator ||%0a
+host:1731996057=198.251.82.194
+author:1731995826=jrmu
+csum:1731995826=change extension lesson
+diff:1731995826:1731995758:minor=18c18%0a%3c || [[Openhttpd/Configure|Simple OpenHTTPd]] || Web || Host your own web server || Extend VPS 1 week ||%0a---%0a> || [[Openhttpd/Configure|Simple OpenHTTPd]] || Web || Host your own web server || ||%0a26c26%0a%3c || [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || ||%0a---%0a> || [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || Extend VPS 1 week ||%0a
+host:1731995826=198.251.82.194
+author:1731995758=jrmu
+csum:1731995758=remove slowcgi stub
+diff:1731995758:1731991709:minor=27a28%0a> || [[slowcgi/usage|slowcgi]] || Web || Configure slowcgi || ||%0a
+host:1731995758=198.251.82.194
+author:1731991709=jrmu
+csum:1731991709=remove repeat of earlier lesson
+diff:1731991709:1731812065:minor=26a27%0a> || [[Openbsd/Chroot|OpenHTTPd Chroot]] || Web || OpenHTTPd chroot environment || ||%0a
+host:1731991709=198.251.82.194
+author:1731812065=jrmu
+diff:1731812065:1731811240:=26a27,28%0a> || [[Openhttpd/Hosting|Multi-user OpenHTTPd]] || Web || Configure webserver for multiple domains || ||%0a> || [[Openbsd/Httpopenproxy|Open Proxies]] || Web || Avoid blacklists by closing open proxies || ||%0a81,82d82%0a%3c || [[Openhttpd/Hosting|Multi-user OpenHTTPd]] || Web || Configure webserver for multiple domains || ||%0a%3c || [[Openbsd/Httpopenproxy|Open Proxies]] || Web || Avoid blacklists by closing open proxies || ||%0a
+host:1731812065=198.251.82.194
+author:1731811240=jrmu
+diff:1731811240:1731808104:=25a26%0a> || [[openssl/cert|Save OpenSSL cert]] || Network || Save OpenSSL cert || ||%0a
+host:1731811240=198.251.82.194
+author:1731808104=jrmu
+diff:1731808104:1731808060:=39c39%0a%3c || [[netcat/daemon|netcat]] || Network || Troubleshoot clients with netcat || ||%0a---%0a> || [[netcat/httpd|netcat]] || Network || Troubleshoot web clients with netcat || ||%0a
+host:1731808104=198.251.82.194
+author:1731808060=jrmu
+diff:1731808060:1731551165:=39d38%0a%3c || [[netcat/httpd|netcat]] || Network || Troubleshoot web clients with netcat || ||%0a
+host:1731808060=198.251.82.194
+author:1731551165=jrmu
+diff:1731551165:1731469150:=24a25%0a> || [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || Extend VPS 1 week ||%0a27d27%0a%3c || [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || Extend VPS 1 week ||%0a
+host:1731551165=198.251.82.194
+author:1731469150=jrmu
+diff:1731469150:1731467407:=22d21%0a%3c || [[tls/san|Subject Alternative Names]] || Network || TLS and Subject Alternative Names || ||%0a
+host:1731469150=198.251.82.194
+author:1731467407=jrmu
+diff:1731467407:1731462742:=21d20%0a%3c || [[tls/intro|TLS overview]] || Network || TLS introduction || ||%0a71a71,75%0a> %0a> ||! TLS ||||||||%0a> ||! Lesson ||! Topic ||! Description ||! Reward ||%0a> || [[tls/intro|TLS overview]] || Network || TLS introduction || ||%0a> || [[tls/CA|Certificate Authorities]] || Network || TLS Certificate Authorities || ||%0a
+host:1731467407=198.251.82.194
+author:1731462742=jrmu
+diff:1731462742:1731462623:=19d18%0a%3c || [[telnet/http|Telnet HTTP]] || Network || Troubleshoot webserver with telnet || ||%0a20a20%0a> || [[telnet/http|Telnet HTTP]] || Network || Troubleshoot webserver with telnet || ||%0a
+host:1731462742=198.251.82.194
+author:1731462623=jrmu
+diff:1731462623:1731462523:=18a19,20%0a> || [[Openhttpd/Tls|OpenHTTPd TLS]] || Web || Provide TLS for webpages || ||%0a> || [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || Extend VPS 1 week ||%0a22,23d23%0a%3c || [[Openhttpd/Tls|OpenHTTPd TLS]] || Web || Provide TLS for webpages || ||%0a%3c || [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || Extend VPS 1 week ||%0a
+host:1731462623=198.251.82.194
+author:1731462523=jrmu
+diff:1731462523:1731392438:=74a75%0a> || [[tls/overview|TLS overview]] || Network || TLS overview || ||%0a
+host:1731462523=198.251.82.194
+author:1731392438=jrmu
+diff:1731392438:1731392348:=19d18%0a%3c || [[Openhttpd/Tls|OpenHTTPd TLS]] || Web || Provide TLS for webpages || ||%0a23a23%0a> || [[Openhttpd/Tls|OpenHTTPd TLS]] || Web || Provide TLS for webpages || ||%0a
+host:1731392438=198.251.82.194
+author:1731392348=jrmu
+diff:1731392348:1731392287:=41a42,43%0a> || [[chmod/usage|chmod]] || BSD || chmod file permissions || ||%0a> || [[chown/usage|chown]] || BSD || chown file ownership || ||%0a
+host:1731392348=198.251.82.194
+author:1731392287=jrmu
+diff:1731392287:1731383767:=42,43d41%0a%3c || [[chmod/usage|chmod]] || BSD || chmod file permissions || ||%0a%3c || [[chown/usage|chown]] || BSD || chown file ownership || ||%0a
+host:1731392287=198.251.82.194
+author:1731383767=jrmu
+diff:1731383767:1731383554:=14c14%0a%3c ||! Web Server ||||||||%0a---%0a> || border=1 width=100%25 class="sortable simpletable"%0a16,33d15%0a%3c || [[freedom/fork|Freedom to Fork]] || Civics || Freedom to Fork || ||%0a%3c || [[chroot/intro|Intro to Chroot]] || BSD || Learn about Chroots || ||%0a%3c || [[Openhttpd/Configure|Simple OpenHTTPd]] || Web || Host your own web server || ||%0a%3c || [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || Extend VPS 1 week ||%0a%3c || [[netcat/http|netcat HTTP]] || Network || Troubleshoot webserver with netcat || ||%0a%3c || [[telnet/http|Telnet HTTP]] || Network || Troubleshoot webserver with telnet || ||%0a%3c || [[acme-client/configure|acme-client]] || Security || Request an SSL cert || ||%0a%3c || [[Openhttpd/Tls|OpenHTTPd TLS]] || Web || Provide TLS for webpages || ||%0a%3c || [[openssl/http|OpenSSL HTTP]] || Network || Test TLS for webpages with OpenSSL || ||%0a%3c || [[openssl/cert|Save OpenSSL cert]] || Network || Save OpenSSL cert || ||%0a%3c || [[Openhttpd/Hosting|Multi-user OpenHTTPd]] || Web || Configure webserver for multiple domains || ||%0a%3c || [[Openbsd/Httpopenproxy|Open Proxies]] || Web || Avoid blacklists by closing open proxies || ||%0a%3c || [[Openbsd/Chroot|OpenHTTPd Chroot]] || Web || OpenHTTPd chroot environment || ||%0a%3c || [[Openhttpd/Perl|OpenHTTPd Perl]] || Web || Install Perl inside OpenHTTPd chroot || Extend VPS 1 week ||%0a%3c || [[slowcgi/usage|slowcgi]] || Web || Configure slowcgi || ||%0a%3c %0a%3c || border=1 width=100%25 class="sortable simpletable"%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a70a53,70%0a> %0a> ||! Web Server ||||||||%0a> ||! Lesson ||! Topic ||! Description ||! Reward ||%0a> || [[freedom/fork|Freedom to Fork]] || Civics || Freedom to Fork || ||%0a> || [[chroot/intro|Intro to Chroot]] || BSD || Learn about Chroots || ||%0a> || [[Openhttpd/Configure|Simple OpenHTTPd]] || Web || Host your own web server || ||%0a> || [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || Extend VPS 1 week ||%0a> || [[netcat/http|netcat HTTP]] || Network || Troubleshoot webserver with netcat || ||%0a> || [[telnet/http|Telnet HTTP]] || Network || Troubleshoot webserver with telnet || ||%0a> || [[acme-client/configure|acme-client]] || Security || Request an SSL cert || ||%0a> || [[Openhttpd/Tls|OpenHTTPd TLS]] || Web || Provide TLS for webpages || ||%0a> || [[openssl/http|OpenSSL HTTP]] || Network || Test TLS for webpages with OpenSSL || ||%0a> || [[openssl/cert|Save OpenSSL cert]] || Network || Save OpenSSL cert || ||%0a> || [[Openhttpd/Hosting|Multi-user OpenHTTPd]] || Web || Configure webserver for multiple domains || ||%0a> || [[Openbsd/Httpopenproxy|Open Proxies]] || Web || Avoid blacklists by closing open proxies || ||%0a> || [[Openbsd/Chroot|OpenHTTPd Chroot]] || Web || OpenHTTPd chroot environment || ||%0a> || [[Openhttpd/Perl|OpenHTTPd Perl]] || Web || Install Perl inside OpenHTTPd chroot || Extend VPS 1 week ||%0a> || [[slowcgi/usage|slowcgi]] || Web || Configure slowcgi || ||%0a
+host:1731383767=198.251.82.194
+author:1731383554=jrmu
+diff:1731383554:1731383288:=16a17%0a> || [[openbsd/loginconf|Login classes]] || BSD || Configure login classes || ||%0a21c22%0a%3c ||! System Administration ||||||||%0a---%0a> ||! Web Server ||||||||%0a23,55d23%0a%3c || [[openbsd/ed|ed]] || BSD || ed text editor || ||%0a%3c || [[tar/usage|tar]] || BSD || Tape archives || ||%0a%3c || [[ksh/editor|Change editor]] || BSD || Change default editor || ||%0a%3c || [[ksh/history|ksh history]] || BSD || Add history for shell commands || ||%0a%3c || [[crontab/edit|Editing crontab]] || BSD || Editing crontab || ||%0a%3c || [[openbsd/adduser|adduser]] || BSD || Addusers || ||%0a%3c || [[group/usage|group]] || BSD || Manage groups || ||%0a%3c || [[openbsd/localtime|localtime]] || BSD || Set time zone || ||%0a%3c || [[dd/iso|Write image to usb]] || BSD || Write image to USB || ||%0a%3c || [[ln/intro|symbolic links]] || BSD || Create symbolic links || ||%0a%3c || [[openbsd/fstab|fstab]] || BSD || Edit filesystem table || ||%0a%3c || [[dmesg/usage|dmesg]] || BSD || Display system message buffer || ||%0a%3c || [[openbsd/hier|hier]] || BSD || OpenBSD filesystem hierarchy || ||%0a%3c || [[top/usage|top]] || BSD || Info about CPU processes || ||%0a%3c || [[ps/usage|ps]] || BSD || Monitor Processes || ||%0a%3c || [[renice/usage|renice]] || BSD || Renice processes || ||%0a%3c || [[fstat/usage|fstat]] || Network || Show file status || ||%0a%3c || [[fuser/usage|fuser]] || Network || Show process using a file || ||%0a%3c || [[kill/usage|kill]] || BSD || Send signals to processes || ||%0a%3c || [[openbsd/panic|kernel panics]] || BSD || Dealing with kernel panics || ||%0a%3c || [[openbsd/loginconf|Login classes]] || BSD || Configure login classes || ||%0a%3c || [[openbsd/sysctl|sysctl]] || BSD || Getting and setting kernel state || ||%0a%3c || [[swapctl/usage|swapctl]] || BSD || Manage system swap space || ||%0a%3c || [[openbsd/outofmemory|OOM error]] || BSD || Out of memory error || ||%0a%3c || [[atactl/usage|atactl]] || BSD || Get disk information || ||%0a%3c || [[rc/rc.d|rc.d]] || BSD || rc.d || ||%0a%3c || [[rc/rc.conf|rc.conf]] || BSD || rc.conf || ||%0a%3c || [[acct/accton|accton]] || BSD || accton  || ||%0a%3c || [[openbsd/vipw|vipw]] || BSD || Edit the password file || Extend VPS 1 week ||%0a%3c %0a%3c %0a%3c ||! Web Server ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a320a289,319%0a> %0a> ||! System Administration ||||||||%0a> ||! Lesson ||! Topic ||! Description ||! Reward ||%0a> || [[openbsd/ed|ed]] || BSD || ed text editor || ||%0a> || [[tar/usage|tar]] || BSD || Tape archives || ||%0a> || [[ksh/editor|Change editor]] || BSD || Change default editor || ||%0a> || [[ksh/history|ksh history]] || BSD || Add history for shell commands || ||%0a> || [[crontab/edit|Editing crontab]] || BSD || Editing crontab || ||%0a> || [[openbsd/adduser|adduser]] || BSD || Addusers || ||%0a> || [[group/usage|group]] || BSD || Manage groups || ||%0a> || [[openbsd/localtime|localtime]] || BSD || Set time zone || ||%0a> || [[dd/iso|Write image to usb]] || BSD || Write image to USB || ||%0a> || [[ln/intro|symbolic links]] || BSD || Create symbolic links || ||%0a> || [[openbsd/fstab|fstab]] || BSD || Edit filesystem table || ||%0a> || [[dmesg/usage|dmesg]] || BSD || Display system message buffer || ||%0a> || [[openbsd/hier|hier]] || BSD || OpenBSD filesystem hierarchy || ||%0a> || [[top/usage|top]] || BSD || Info about CPU processes || ||%0a> || [[ps/usage|ps]] || BSD || Monitor Processes || ||%0a> || [[renice/usage|renice]] || BSD || Renice processes || ||%0a> || [[fstat/usage|fstat]] || Network || Show file status || ||%0a> || [[fuser/usage|fuser]] || Network || Show process using a file || ||%0a> || [[kill/usage|kill]] || BSD || Send signals to processes || ||%0a> || [[openbsd/panic|kernel panics]] || BSD || Dealing with kernel panics || ||%0a> || [[openbsd/sysctl|sysctl]] || BSD || Getting and setting kernel state || ||%0a> || [[swapctl/usage|swapctl]] || BSD || Manage system swap space || ||%0a> || [[openbsd/outofmemory|OOM error]] || BSD || Out of memory error || ||%0a> || [[atactl/usage|atactl]] || BSD || Get disk information || ||%0a> || [[rc/rc.d|rc.d]] || BSD || rc.d || ||%0a> || [[rc/rc.conf|rc.conf]] || BSD || rc.conf || ||%0a> || [[acct/accton|accton]] || BSD || accton  || ||%0a> || [[openbsd/vipw|vipw]] || BSD || Edit the password file || Extend VPS 1 week ||%0a
+host:1731383554=198.251.82.194
+author:1731383288=jrmu
+diff:1731383288:1731374090:=11c11%0a%3c || [[Ircnow/Howtoask|Good Questions]] || Civics || How to Ask Good Questions || ||%0a---%0a> || [[Minutemin/Questions|Good Questions]] || Civics || How to Ask Good Questions || ||%0a
+host:1731383288=198.251.82.194
+author:1731374090=jrmu
+diff:1731374090:1731373338:=404c404%0a%3c || [[ssh/fingerprints|ssh fingerprints]] || Security || Verify SSH fingerprints || ||%0a---%0a> || [[ssh/fingerprints|ssh fingerprints]] || Security || Verify SSH fingerprints|| ||%0a
+host:1731374090=198.251.82.194
+author:1731373338=jrmu
+diff:1731373338:1731360544:=305d304%0a%3c || [[top/usage|top]] || BSD || Info about CPU processes || ||%0a
+host:1731373338=198.251.82.194
+author:1731360544=jrmu
+diff:1731360544:1726637622:=272,273c272,273%0a%3c || [[openbsd/upgrade|Upgrade OpenBSD]] || BSD || Upgrade OpenBSD || ||%0a%3c || [[openbsd/sysupgrade|OpenBSD Sysupgrade]] || BSD || Sysupgrade OpenBSD || ||%0a---%0a> || [[openbsd/upgrade|Upgrade OpenBSD]] || BSD || Upgrade to OpenBSD || ||%0a> || [[openbsd/sysupgrade|OpenBSD Sysupgrade]] || BSD || Sysupgrade to OpenBSD || ||%0a
+host:1731360544=198.251.82.194
+author:1726637622=jrmu
+diff:1726637622:1722025802:=186c186%0a%3c || [[opensmtpd/maildir|OpenSMTPd (with Maildir)]] || Mail || Configure your mail server (using Maildir) || ||%0a---%0a> || [[opensmtpd/configure|OpenSMTPd]] || Mail || Configure your mail server || ||%0a
+host:1726637622=104.167.242.179
+author:1722025802=jrmu
+diff:1722025802:1721807406:=398d397%0a%3c || [[iked/binat|Binat IPsec]] || Network || Host home from with IPsec || ||%0a
+host:1722025802=104.167.242.140
+author:1721807406=jrmu
+diff:1721807406:1721364855:=395d394%0a%3c || [[iked/roadwarriorvmm|Road warrior IPsec (vmm) ]] || Network || Emulate Roadwarrior IPsec VPNs || ||%0a
+host:1721807406=104.167.242.140
+author:1721364855=jrmu
+diff:1721364855:1721328060:=392,394c392,394%0a%3c || [[iked/sitetosite|Site-to-site IPsec]] || Security || Provide site-to-site IPsec VPN || ||%0a%3c || [[iked/sitetositevmm|Site-to-site IPsec (vmm)]] || Security || Emulate site-to-site IPsec VPN with VMM || ||%0a%3c || [[iked/roadwarrior|Road warrior IPsec]] || Network || Provide Roadwarrior IPsec VPNs || ||%0a---%0a> || [[iked/sitetosite|site-to-site iked]] || Security || Provide site-to-site IPsec || ||%0a> || [[iked/sitetositevmm|site-to-site iked (vmm)]] || Security || Emulate site-to-site IPsec with VMM || ||%0a> || [[iked/roadwarrior|iked]] || Network || Provide Roadwarrior IPsec VPNs || ||%0a
+host:1721364855=104.167.242.140
+author:1721328060=jrmu
+diff:1721328060:1721326412:=393d392%0a%3c || [[iked/sitetositevmm|site-to-site iked (vmm)]] || Security || Emulate site-to-site IPsec with VMM || ||%0a
+host:1721328060=104.167.242.140
+author:1721326412=jrmu
+diff:1721326412:1721202606:=94,99d93%0a%3c || [[pf/nat|NAT with packet filter]] || Network || NAT with Packet Filter || ||%0a%3c || [[pf/whitelisting|Whitelisting]] || Network || Whitelisting || ||%0a%3c || [[pf/debugging|Debugging PF rulesets]] || Network || Debugging PF rulesets || ||%0a%3c || [[pf/rdr-to|rdr-to]] || Network || rdr-to || ||%0a%3c || [[pf/traffic shaping|Traffic shaping]] || Network || Traffic shaping || ||%0a%3c || [[pf/pflog|pflog]] || Network || pflog || ||%0a101,104d94%0a%3c || [[pf/testing|testing rulesets]] || Network || Testing PF rulesets || ||%0a%3c || [[pf/nat64|NAT64 with packet filter]] || Network || NAT6 with packetfilter || ||%0a%3c || [[pf/ftp-proxy|ftp-proxy]] || Network || ftp-proxy || ||%0a%3c || [[pf/dmz|DMZ]] || Network || DMZ || ||%0a
+host:1721326412=104.167.242.140
+author:1721202606=jrmu
+diff:1721202606:1721194202:=94d93%0a%3c || [[pf/authpf|authpf]] || Network || authpf || ||%0a194,195d192%0a%3c || [[sensorsd/configure|sensorsd]] || BSD || sensorsd || ||%0a%3c %0a269,270c266%0a%3c || [[openbsd/autoinstall|autoinstall]] || BSD || Unattended autoinstall || ||%0a%3c %0a---%0a> %0a305,307d300%0a%3c || [[rc/rc.d|rc.d]] || BSD || rc.d || ||%0a%3c || [[rc/rc.conf|rc.conf]] || BSD || rc.conf || ||%0a%3c || [[acct/accton|accton]] || BSD || accton  || ||%0a
+host:1721202606=104.167.242.140
+author:1721194202=jrmu
+diff:1721194202:1721024489:=369a370%0a> || [[radiusd/configure|Configure RADIUS server]] || Network || Configure RADIUS server || ||%0a
+host:1721194202=104.167.242.140
+author:1721024489=jrmu
+diff:1721024489:1721024333:=375a376,378%0a> || [[iked/configure|iked]] || Network || Provide Roadwarrior IPsec VPNs || ||%0a> || [[vpn/vpn|VPN clients]] || Security || Configure IPsec VPN client || ||%0a> || [[vpn/myipaddress|Test VPN]] || Security || Test IP address behind VPN || ||%0a377,379d379%0a%3c || [[iked/roadwarrior|iked]] || Network || Provide Roadwarrior IPsec VPNs || ||%0a%3c || [[vpn/vpn|VPN clients]] || Security || Configure IPsec VPN client || ||%0a%3c || [[vpn/myipaddress|Test VPN]] || Security || Test IP address behind VPN || ||%0a
+host:1721024489=104.167.242.140
+author:1721024333=jrmu
+diff:1721024333:1721009679:=376,377c376,377%0a%3c || [[iked/configure|iked]] || Network || Provide Roadwarrior IPsec VPNs || ||%0a%3c || [[vpn/vpn|VPN clients]] || Security || Configure IPsec VPN client || ||%0a---%0a> || [[iked/configure|iked]] || Network || Provide Roadwarrior IPSec VPNs || ||%0a> || [[vpn/vpn|VPN clients]] || Security || Configure IPSec VPN client || ||%0a379c379%0a%3c || [[iked/sitetosite|site-to-site iked]] || Security || Provide site-to-site IPsec || ||%0a---%0a> || [[iked/sitetosite|site-to-site iked]] || Security || Provide site-to-site IPSec || ||%0a
+host:1721024333=104.167.242.140
+author:1721009679=jrmu
+diff:1721009679:1720926780:=376c376%0a%3c || [[iked/configure|iked]] || Network || Provide Roadwarrior IPSec VPNs || ||%0a---%0a> || [[iked/configure|iked]] || Network || Provide Roadwarrio IPSec VPNs || ||%0a
+host:1721009679=104.167.242.140
+author:1720926780=jrmu
+diff:1720926780:1720925822:=128c128%0a%3c || [[ifconfig/trunk|trunk]] || Network || trunk interface || ||%0a---%0a> || [[ifconfig/trunk|tpmr]] || Network || trunk interface || ||%0a
+host:1720926780=104.167.242.140
+author:1720925822=jrmu
+diff:1720925822:1720551246:=302,305d301%0a%3c %0a%3c ||! System Bootup ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[rc/conf|rc.conf]] || BSD || System daemon configuration || ||%0a
+host:1720925822=104.167.242.140
+author:1720551246=jrmu
+diff:1720551246:1720551023:=360d359%0a%3c || [[route6d/configure|route6d]] || Network || Configure route6d || ||%0a
+host:1720551246=104.167.242.140
+author:1720551023=jrmu
+diff:1720551023:1720550913:=
+host:1720551023=104.167.242.140
+author:1720550913=jrmu
+diff:1720550913:1720277673:=192,196d191%0a%3c %0a%3c ||! LDAP ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[ldapd/configure|ldapd]] || LDAP || Configure ldapd || ||%0a%3c %0a
+host:1720550913=104.167.242.140
+author:1720277673=jrmu
+diff:1720277673:1720072076:=353d352%0a%3c || [[route/static|Static routing]] || Network || Configure static routing || ||%0a
+host:1720277673=104.167.242.140
+author:1720072076=jrmu
+diff:1720072076:1720071189:=380c380%0a%3c || [[sshd/chroot|Chroot sshd]] || Network || Configure ssh users inside a chroot || ||%0a---%0a> || [[ssh/chroot|Chroot SSH]] || Network || Configure ssh users inside a chroot || ||%0a
+host:1720072076=104.167.242.140
+author:1720071189=jrmu
+diff:1720071189:1720036276:=380,381c380%0a%3c || [[ssh/chroot|Chroot SSH]] || Network || Configure ssh users inside a chroot || ||%0a%3c || [[openrsync/chroot|Chroot openrsync]] || Network || Configure openrsync inside a chroot || Extend VPS 1 week ||%0a---%0a> || [[ssh/chroot|Chroot SSH]] || Network || Configure ssh users inside a chroot || Extend VPS 1 week ||%0a
+host:1720071189=104.167.242.140
+author:1720036276=jrmu
+diff:1720036276:1719815026:=323a324%0a> || [[openbsd/sftp|chrooted sftp]] || Network || Chroot sftp server for secure file hosting || ||%0a379,380c380%0a%3c || [[sftp/chroot|Chroot SFTP]] || Security || Configure sftp inside a chroot || ||%0a%3c || [[ssh/chroot|Chroot SSH]] || Network || Configure ssh users inside a chroot || Extend VPS 1 week ||%0a---%0a> || [[sftp/chroot|Chroot SFTP]] || Security || Configure sftp inside a chroot || Extend VPS 1 week ||%0a
+host:1720036276=104.167.242.140
+author:1719815026=jrmu
+diff:1719815026:1719684057:=362c362%0a%3c || [[dhcpleased/configure|Configure DHCP client]] || Network || || ||%0a---%0a> || [[dhclient/configure|Configure DHCP client]] || Network || || ||%0a
+host:1719815026=104.167.242.140
+author:1719684057=jrmu
+diff:1719684057:1719539840:=133d132%0a%3c || [[gre/6in4vmm|6-in-4 gre (vmm)]] || Network || Tunnel IPv6 inside IPv4 with GRE (vmm) || ||%0a
+host:1719684057=104.167.242.140
+author:1719539840=jrmu
+diff:1719539840:1719539777:=120d119%0a%3c || [[ifconfig/vxlan|vxlan]] || Network || vxlan interface || ||%0a
+host:1719539840=104.167.242.140
+author:1719539777=jrmu
+diff:1719539777:1719539742:=127,128d126%0a%3c || [[ifconfig/trunk|tpmr]] || Network || trunk interface || ||%0a%3c || [[ifconfig/aggr|aggr]] || Network || aggr interface || ||%0a
+host:1719539777=104.167.242.140
+author:1719539742=jrmu
+diff:1719539742:1719539493:=126d125%0a%3c || [[ifconfig/tpmr|tpmr]] || Network || tpmr interface || ||%0a
+host:1719539742=104.167.242.140
+author:1719539493=jrmu
+diff:1719539493:1719539422:=356d355%0a%3c || [[npppd/configure|Configure npppd server]] || Network || Configure npppd server || ||%0a
+host:1719539493=104.167.242.140
+author:1719539422=jrmu
+diff:1719539422:1719538909:=124,126d123%0a%3c || [[ifconfig/pppoe|pppoe]] || Network || pppoe interface || ||%0a%3c || [[ifconfig/sppp|sppp]] || Network || sppp interface || ||%0a%3c || [[ifconfig/urndis|urndis]] || Network || urndis interface || ||%0a
+host:1719539422=104.167.242.140
+author:1719538909=jrmu
+diff:1719538909:1719538493:=352d351%0a%3c || [[radiusd/configure|Configure RADIUS server]] || Network || Configure RADIUS server || ||%0a
+host:1719538909=104.167.242.140
+author:1719538493=jrmu
+diff:1719538493:1719538093:=120,122d119%0a%3c || [[ifconfig/mpe|mpe]] || Network || mpe interface || ||%0a%3c || [[ifconfig/mpip|mpip]] || Network || mpip interface || ||%0a%3c || [[ifconfig/mpw|mpw]] || Network || mpw interface || ||%0a124,125d120%0a%3c || [[ifconfig/pflow|pflow]] || Network || pflow interface || ||%0a%3c || [[ifconfig/pfsync|pfsync]] || Network || pfsync interface || ||%0a
+host:1719538493=104.167.242.140
+author:1719538093=jrmu
+diff:1719538093:1719537230:=120d119%0a%3c || [[ifconfig/bpe|bpe]] || Network || bpe interface || ||%0a205d203%0a%3c || [[mfs/usage|mfs]] || BSD || Construct a memory-based filesystem || ||%0a
+host:1719538093=104.167.242.140
+author:1719537230=jrmu
+diff:1719537230:1719536602:=116,119d115%0a%3c || [[ifconfig/mgre|mgre]] || Network || MGRE interface || ||%0a%3c || [[ifconfig/egre|egre]] || Network || EGRE interface || ||%0a%3c || [[ifconfig/eoip|eoip]] || Network || eoip interface || ||%0a%3c || [[ifconfig/etherip|etherip]] || Network || etherip interface || ||%0a
+host:1719537230=104.167.242.140
+author:1719536602=jrmu
+diff:1719536602:1719518586:=117d116%0a%3c || [[gre/4in6|4-in-6 gre]] || Network || Tunnel IPv4 inside IPv6 with GRE || ||%0a
+host:1719536602=104.167.242.140
+author:1719518586=jrmu
+diff:1719518586:1719515378:=92d91%0a%3c || [[pf/configure|pf.conf]] || Network || Configure Packet Filter || ||%0a
+host:1719518586=104.167.242.140
+author:1719515378=jrmu
+diff:1719515378:1718745253:=115d114%0a%3c || [[gre/6in4|6-in-4 gre]] || Network || Tunnel IPv6 inside IPv4 with GRE || ||%0a
+host:1719515378=104.167.242.140
+author:1718745253=jrmu
+diff:1718745253:1718745149:=108c108%0a%3c || [[ifconfig/wifitoethernet|WiFi to Ethernet]] || Network || WiFi to Ethernet || ||%0a---%0a> || [[ifconfig/wifitoethernet|WiFi]] || Network || WiFi to Ethernet || ||%0a
+host:1718745253=104.167.242.140
+author:1718745149=jrmu
+diff:1718745149:1718740832:=108d107%0a%3c || [[ifconfig/wifitoethernet|WiFi]] || Network || WiFi to Ethernet || ||%0a
+host:1718745149=104.167.242.140
+author:1718740832=jrmu
+diff:1718740832:1718689001:=105c105%0a%3c ||! Networking ||||||||%0a---%0a> ||! Domain Name Lookup ||||||||%0a107d106%0a%3c || [[ifconfig/wifi|WiFi]] || Network || Configure WiFi || ||%0a
+host:1718740832=104.167.242.140
+author:1718689001=jrmu
+diff:1718689001:1718682571:=86,87c86%0a%3c || [[ifconfig/hostap|hostap]] || Network || Set up Host Access Point || ||%0a%3c || [[hostapd/configure|hostapd]] || Network || Synchronize Host Access Points || ||%0a---%0a> || [[hostapd/configure|hostapd]] || Network || Set up Host Access Point || ||%0a
+host:1718689001=104.167.242.140
+author:1718682571=jrmu
+diff:1718682571:1718610550:=325d324%0a%3c || [[pair/configure|pair]] || Network || Configure pair interface || ||%0a
+host:1718682571=104.167.242.140
+author:1718610550=jrmu
+diff:1718610550:1717863410:=107a108%0a> || [[ifconfig/switch|switch]] || Network || switch interface || ||%0a
+host:1718610550=104.167.242.140
+author:1717863410=jrmu
+diff:1717863410:1717691813:=177d176%0a%3c || [[cvsweb/restore|Restore from CVSweb]] || Code || Learn how to restore files with CVSweb || ||%0a
+host:1717863410=104.167.242.140
+author:1717691813=jrmu
+diff:1717691813:1717690991:=251d250%0a%3c || [[ksh/history|ksh history]] || BSD || Add history for shell commands || ||%0a
+host:1717691813=104.167.242.140
+author:1717690991=jrmu
+diff:1717690991:1717568364:=250d249%0a%3c || [[ksh/editor|Change editor]] || BSD || Change default editor || ||%0a
+host:1717690991=104.167.242.140
+author:1717568364=jrmu
+diff:1717568364:1717564715:=322,325d321%0a%3c || [[vlan/configure|Configure vlan]] || Network || Configure vlan || ||%0a%3c || [[veb/configure|Configure veb]] || Network || Configure veb || ||%0a%3c || [[bridge/configure|Configure bridge]] || Network || Configure bridge || ||%0a%3c || [[nat/configure|Configure nat]] || Network || Configure NAT || ||%0a
+host:1717568364=104.167.242.140
+author:1717564715=jrmu
+diff:1717564715:1717564476:=223c223%0a%3c || [[vmctl/usage|Vmctl User Guide]] || BSD || Control your VPS || ||%0a---%0a> || [[vmctl/usage|VMM User Guide]] || BSD || Control your VPS || ||%0a225,227c225,227%0a%3c || [[vmctl/newdisk|Add disk to VM]] || BSD || Add new storage disk to VPS || ||%0a%3c || [[vmctl/reinstall|Reinstall VM]] || BSD || Reinstall OpenBSD inside VMM || ||%0a%3c || [[vmm/install|Install OpenBSD inside VMM]] || BSD || Install OpenBSD inside VMM || ||%0a---%0a> || [[vmctl/newdisk|VMM User Guide]] || BSD || Add new storage disk to VPS || ||%0a> || [[vmctl/reinstall|VMM User Guide]] || BSD || Reinstall OpenBSD inside VMM || ||%0a> || [[vmm/install|VMM Install]] || BSD || Install OpenBSD inside VMM || ||%0a232a233%0a> || [[hosting/providers|Hosting Providers]] || Network || Choose a Hosting Provider || ||%0a236,240d236%0a%3c %0a%3c ||! VMM Hosting ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[vmm/configure|Configure VMM]] || Network || Offer Hosting with VMM || ||%0a%3c || [[hosting/providers|Hosting Providers]] || Network || Choose a Hosting Provider || ||%0a
+host:1717564715=104.167.242.140
+author:1717564476=jrmu
+diff:1717564476:1717485685:=110c110%0a%3c || [[ifconfig/vether|vether]] || Network || Virtual Ethernet interface || ||%0a---%0a> || [[ifconfig/vether|veb]] || Network || Virtual Ethernet interface || ||%0a
+host:1717564476=104.167.242.140
+author:1717485685=jrmu
+diff:1717485685:1717273637:=110d109%0a%3c || [[ifconfig/vether|veb]] || Network || Virtual Ethernet interface || ||%0a
+host:1717485685=104.167.242.140
+author:1717273637=jrmu
+diff:1717273637:1717259241:=73d72%0a%3c || [[Hostnameif/autoconf|Autoconf Networking]] || Network || ||%0a238d236%0a%3c || [[slaacd/configure|Configure slaacd daemon]] || Network || Configure slaacd daemon || ||%0a
+host:1717273637=104.167.242.140
+author:1717259241=jrmu
+diff:1717259241:1717136304:=235,236c235%0a%3c || [[dhcpd/configure|Configure DHCP server]] || Network || Configure DHCP server || ||%0a%3c || [[rad/configure|Configure rad server]] || Network || Set up Router Advertisements for IPv6 || ||%0a---%0a> || [[dhcpd/configure|Configure DHCP server]] || Network || || ||%0a
+host:1717259241=104.167.242.140
+author:1717136304=jrmu
+diff:1717136304:1716995552:=79d78%0a%3c || [[route/hostnameif|hostname.if route]] || Network || Add routes to hostname.if at bootup || ||%0a
+host:1717136304=104.167.242.140
+author:1716995552=jrmu
+diff:1716995552:1716944977:=108d107%0a%3c || [[ifconfig/carp|carp]] || Network || CARP interface || ||%0a
+host:1716995552=104.167.242.140
+author:1716944977=jrmu
+diff:1716944977:1716942354:=223a224%0a> || [[openbsd/vmmlinux|VMM Linux Guide]] || BSD || Install Linux inside VMM || ||%0a234c235,236%0a%3c || [[openbsd/diskless|diskless]] || BSD || Run OpenBSD on diskless systems || Acquire admin access ||%0a---%0a> || [[openbsd/diskless|diskless]] || BSD || Run OpenBSD on diskless systems || ||%0a> || [[vmm/linux|Linux on VMM]] || BSD || Install Linux on OpenBSD VMM || Acquire admin access ||%0a
+host:1716944977=104.167.242.140
+author:1716942354=jrmu
+diff:1716942354:1716942306:=68d67%0a%3c || [[traceroute/usage|traceroute]] || Network || Trace packet route || ||%0a
+host:1716942354=104.167.242.140
+author:1716942306=jrmu
+diff:1716942306:1716942175:=38,39c38%0a%3c || [[slowcgi/usage|slowcgi]] || Web || Configure slowcgi || ||%0a%3c %0a---%0a> %0a228d226%0a%3c || [[sysmerge/usage|sysmerge]] || BSD || Merge conf files after upgrade || ||%0a
+host:1716942306=104.167.242.140
+author:1716942175=jrmu
+diff:1716942175:1716942074:=249d248%0a%3c || [[renice/usage|renice]] || BSD || Renice processes || ||%0a
+host:1716942175=104.167.242.140
+author:1716942074=jrmu
+diff:1716942074:1716941967:=84c84%0a%3c ||! Packet Filter ||||||||%0a---%0a> ||! Network Defense ||||||||%0a98d97%0a%3c || [[pfctl/usage|pfctl]] || Network || PF Guide || Control packet filter ||%0a
+host:1716942074=104.167.242.140
+author:1716941967=jrmu
+diff:1716941967:1716941877:=71d70%0a%3c || [[ifstated/configure|Configure ifstated]] || Network || Configure ifstated || ||%0a156d154%0a%3c || [[opensmtpd/aliases|aliases]] || Mail || Configure aliases for mail || ||%0a
+host:1716941967=104.167.242.140
+author:1716941877=jrmu
+diff:1716941877:1716941707:=311,312d310%0a%3c || [[dvmrpd/configure|DVMRPd]] || Network || Configure DVMRPd || ||%0a%3c || [[mrouted/configure|mrouted]] || Network || Configure Multicast Routing || ||%0a
+host:1716941877=104.167.242.140
+author:1716941707=jrmu
+diff:1716941707:1716941302:=9d8%0a%3c || [[fw_update/usage|Update firmware]] || BSD || Update firmware || ||%0a76d74%0a%3c || [[netstat/usage|netstat]] || Network || Show network status || ||%0a79c77%0a%3c ||! Wireless ||||||||%0a---%0a> ||! Network Defense ||||||||%0a81,84d78%0a%3c || [[hostapd/configure|hostapd]] || Network || Set up Host Access Point || ||%0a%3c %0a%3c ||! Network Defense ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a238d231%0a%3c || [[group/usage|group]] || BSD || Manage groups || ||%0a246,247d238%0a%3c || [[fstat/usage|fstat]] || Network || Show file status || ||%0a%3c || [[fuser/usage|fuser]] || Network || Show process using a file || ||%0a
+host:1716941707=104.167.242.140
+author:1716941302=jrmu
+diff:1716941302:1716940309:=148,149c148%0a%3c || [[spamd/configure|spamd]] || Mail || Configure spam filter || ||%0a%3c %0a---%0a> %0a180d178%0a%3c || [[fsck/usage|fsck]] || BSD || Filesystem check consistency check || ||%0a244d241%0a%3c || [[atactl/usage|atactl]] || BSD || Get disk information || ||%0a
+host:1716941302=104.167.242.140
+author:1716940309=jrmu
+diff:1716940309:1716939959:=64d63%0a%3c || [[tcpbench/usage|tcpbench]] || Network || Benchmark TCP/IP throughput || ||%0a186c185%0a%3c ||! File servers ||||||||%0a---%0a> ||! NFS ||||||||%0a191,193c190%0a%3c || [[ftpd/configure|ftpd]] || BSD || Serve files over FTP || ||%0a%3c || [[tftpd/configure|tftpd]] || BSD || Serve files over TFTP || ||%0a%3c %0a---%0a> %0a298,299d294%0a%3c || [[dhcpd/configure|Configure DHCP server]] || Network || || ||%0a%3c || [[dhclient/configure|Configure DHCP client]] || Network || || ||%0a
+host:1716940309=104.167.242.140
+author:1716939959=jrmu
+diff:1716939959:1716939454:=146,148c146%0a%3c || [[smtp/usage|smtp]] || Mail || SMTP client || ||%0a%3c %0a%3c ||! Simple Network Management Protocol ||||||||%0a---%0a> %0a150,153d147%0a%3c || [[snmpd/configure|snmpd]] || SNMP || Configure SNMPd || ||%0a%3c || [[snmp/configure|snmp]] || SNMP || Configure SNMP || ||%0a%3c %0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a307d300%0a%3c || [[ssh/agent|ssh agent]] || Security || Configure ssh agent || ||%0a
+host:1716939959=104.167.242.140
+author:1716939454=jrmu
+diff:1716939454:1716939138:=185,193d184%0a%3c ||! Text Processing ||||||||%0a%3c || [[sed/usage|sed]] || BSD || sed scripting || ||%0a%3c || [[awk/usage|awk]] || BSD || awk scripting || ||%0a%3c || [[roff/usage|roff]] || BSD || roff || ||%0a%3c %0a%3c ||! Shell Scripting ||||||||%0a%3c || [[ksh/intro|ksh intro]] || BSD || shell scripting || ||%0a%3c || [[perl101/perl101|perl intro]] || BSD || perl scripting || ||%0a%3c %0a198d188%0a%3c || [[cu/usage|cu]] || BSD || Serial terminal emulator || ||%0a
+host:1716939454=104.167.242.140
+author:1716939138=jrmu
+diff:1716939138:1716938929:=97,100d96%0a%3c || [[ifconfig/gre|gre]] || Network || GRE interface || ||%0a%3c || [[ifconfig/wg|wg]] || Network || WireGuard interface || ||%0a%3c || [[ifconfig/tap|tap]] || Network || Ethernet tunnel pseudo-device interface || ||%0a%3c || [[ifconfig/tun|tun]] || Network || Network tunnel pseudo-device interface || ||%0a
+host:1716939138=104.167.242.140
+author:1716938929=jrmu
+diff:1716938929:1716938622:=175,180d174%0a%3c ||! NFS ||||||||%0a%3c || [[exports/configure|nfsd]] || BSD || Configure NFS || ||%0a%3c || [[nfsd/configure|nfsd]] || BSD || Serve files over NFS || ||%0a%3c || [[mount_nfs/usage|mount_nfs]] || BSD || Mount NFS filesystems || ||%0a%3c || [[mountd/configure|nfsd]] || BSD || Automatically mount NFS filesystems || ||%0a%3c %0a198c192%0a%3c || [[openbsd/diskless|diskless]] || BSD || Run OpenBSD on diskless systems || ||%0a---%0a> || [[openbsd/buyvm|Buyvm Guide]] || BSD || || ||%0a
+host:1716938929=104.167.242.140
+author:1716938622=jrmu
+diff:1716938622:1716938578:=198d197%0a%3c || [[tar/usage|tar]] || BSD || Tape archives || ||%0a
+host:1716938622=104.167.242.140
+author:1716938578=jrmu
+diff:1716938578:1716938472:=72d71%0a%3c || [[resolvd/usage|resolvd]] || Network || Using resolvd || ||%0a101d99%0a%3c || [[unwind/configure|unwind]] || Network || Validating DNS resolver || ||%0a260c258%0a%3c || [[security/usage|security]] || Security || Security checks || ||%0a---%0a> || [[security/usage]] || Security || Security checks || ||%0a
+host:1716938578=104.167.242.140
+author:1716938472=jrmu
+diff:1716938472:1716938403:=258c258%0a%3c || [[security/usage]] || Security || Security checks || ||%0a---%0a> || [[openbsd/security]] || Security || Security checks || ||%0a
+host:1716938472=104.167.242.140
+author:1716938403=jrmu
+diff:1716938403:1716938309:=258d257%0a%3c || [[openbsd/security]] || Security || Security checks || ||%0a
+host:1716938403=104.167.242.140
+author:1716938309=jrmu
+diff:1716938309:1716938054:=92,98d91%0a%3c || [[ifconfig/bridge|bridge]] || Network || Bridge interface || ||%0a%3c || [[ifconfig/vlan|vlan]] || Network || vlan interface || ||%0a%3c || [[ifconfig/switch|switch]] || Network || switch interface || ||%0a%3c || [[ifconfig/veb|veb]] || Network || veb interface || ||%0a%3c %0a%3c ||! Domain Name Lookup ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a216d208%0a%3c || [[newsyslog/configure|newsyslog]] || BSD || Log rotation || ||%0a
+host:1716938309=104.167.242.140
+author:1716938054=jrmu
+diff:1716938054:1716937901:=237c237,238%0a%3c || [[abuse/intro|Abuse Guide]] || Security || Investigation techniques to report criminals || ||%0a---%0a> || [[police/intro|Police Guide]] || Security || Investigation techniques to report criminals || ||%0a> || [[police/fingerprints|Abuse Fingerprinting]] || Security || Investigation techniques to detect abusers || ||%0a243a245,246%0a> || [[gnupg/create|Create PGP key]] || Security || Create PGP key || ||%0a> || [[gpg/verify|Verify signature]] || Security || Verify PGP signature for email and software || ||%0a283a287%0a> || [[openbsd/books|OpenBSD books]] || Civics || OpenBSD books || ||%0a
+host:1716938054=104.167.242.140
+author:1716937901=jrmu
+diff:1716937901:1716937556:=267c267,270%0a%3c %0a---%0a> || [[tor/torsocks|torsocks]] || Security || Connect with tor to cloak IP address || ||%0a> || [[tor/irc|IRC with Tor]] || Security || Connect to IRC with tor || ||%0a> || [[tor/hidden|Hidden Services]] || Security || Provide tor hidden services || Extend VPS 1 week ||%0a> %0a286a290,291%0a> || [[ircnow/networks|Claim Networks]] || Civics || Claim Team Networks || ||%0a> || [[Ircnow/Roadmap|IRCNow Roadmap]] || Civics || Plan for IRCNow || ||%0a
+host:1716937901=104.167.242.140
+author:1716937556=jrmu
+diff:1716937556:1716937139:=210,213d209%0a%3c ||! System Logging ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[sendbug/usage|send]] || BSD || sendbug || ||%0a%3c || [[openbsd/mail|OpenBSD mailing list]] || BSD || OpenBSD mailing list || ||%0a
+host:1716937556=104.167.242.140
+author:1716937139=jrmu
+diff:1716937139:1716936643:=32a33,34%0a> || [[Openbsd/Php|OpenHTTPd PHP]] || Web || Install PHP inside OpenHTTPd chroot || ||%0a> || [[pmwiki/install|PMWiki]] || Web || Setup your own private wiki || ||%0a43a46%0a> ||! IRC Network ||||||||%0a47c50,55%0a%3c %0a---%0a> || [[ngircd/ssl|ngircd ssl]] || IRC || Configure SSL for your IRCd || ||%0a> || [[ngircd/link|ngircd link]] || IRC || Link your ngIRCd to the network || ||%0a> || [[hopm/install|Install hopm]] || IRC || Detect and ban spammers using an open proxy monitor || ||%0a> || [[Hopm/Telnet|Test hopm]] || IRC || Test hopm with telnet || ||%0a> || [[anope/install|Install Anope]] || IRC || Install Anope IRC services || Apply for IRC channel op ||%0a> %0a50a59,61%0a> || [[znc/chroot|Chroot ZNC]] || IRC || Securely install ZNC || ||%0a> || [[znc/admin|Admin ZNC]] || IRC || Admin ZNC || ||%0a> || [[znc/support|Support ZNC]] || IRC || Support ZNC || ||%0a51a63%0a> || [[Znc/Relayd|Relayd ZNC Webpanel]] || IRC || Setup web panel for ZNC || ||%0a53c65,66%0a%3c %0a---%0a> || [[letsencrypt/expired|Let's Encrypt's Expired CA ]] || Security || Removed Expired CA from Let's Encrypt certificates || Extend VPS 1 week ||%0a> %0a115a129%0a> ||! IRC Hostmasks ||||||||%0a119,120c133,136%0a%3c || [[identd/configure|identd]] || Security || Provide ident to stop abuse || ||%0a%3c %0a---%0a> || [[oidentd/install|Oidentd]] || Security || Provide ident to stop abuse || ||%0a> || [[Oidentd/ZNC|Oidentd for ZNC]] || Security || Provide ident for ZNC || ||%0a> || [[ambassador/ilines|ilines]] || IRC || Request higher connection limits from IRC networks || Extend VPS 1 week ||%0a> %0a133c149,154%0a%3c %0a---%0a> || [[Dovecot/Install|Install Dovecot]] || Mail || Install POP and IMAP server to read mail || ||%0a> || [[openssl/imap|OpenSSL IMAP]] || Network || Troubleshoot IMAP with openssl || ||%0a> || [[squirrelmail/install|SquirrelMail]] || Web || Install webmail || ||%0a> || [[mlmmj/install|Install Mlmmj]] || Mail || Install mailing list || Apply team email account ||%0a> %0a> ||! Support for IRC Bouncers ||||||||%0a136a158,161%0a> || [[openbsd/botnow|botnow]] || IRC || Install botnow to provide bouncers and shells || ||%0a> || [[Bouncer/ZNC|ZNC User's Guide]] || IRC || ZNC User Guide || ||%0a> || [[ZNC/Admin|ZNC Admin's Guide]] || IRC || ZNC Admin Guide || ||%0a> || [[ZNC/Support|ZNC Support]] || IRC || ZNC Support Guide || Apply ZNC Admin ||%0a
+host:1716937139=104.167.242.140
+author:1716936643=jrmu
+diff:1716936643:1716923189:=13a14%0a> ||! IRC Server ||||||||%0a15a17%0a> || [[ngircd/install|Install ngIRCd]] || IRC || Install an IRC server || ||%0a16a19,20%0a> || [[ngircd/loginconf|ngIRCd login class]] || IRC || Increase ngIRCd limits || ||%0a> || [[ngircd/oper|Oper Guide]] || IRC || Oper an IRC Server || ||%0a
+host:1716936643=104.167.242.140
+author:1716923189=jrmu
+diff:1716923189:1716923189:=1,318d0%0a%3c (:title Admin Forces Training:)%0a%3c %0a%3c || border=1 width=100%25 class="sortable simpletable"%0a%3c ||! OpenBSD Jumpstart ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[openbsd/intro|OpenBSD Intro]] || BSD || Introduction to OpenBSD || ||%0a%3c || [[doas/configure|Configure doas]] || BSD || Execute commands as root || ||%0a%3c || [[syspatch/syspatch|Patch your system]] || BSD || Patch your system || ||%0a%3c || [[openbsd/pkg|Installing Packages]] || BSD || Install new software || ||%0a%3c || [[Minutemin/Questions|Good Questions]] || Civics || How to Ask Good Questions || ||%0a%3c || [[Lists/Ircnow|IRCNow Mailing Lists]] || Civics || Sign up to IRCNow Mailing lists || Extend VPS for 1 week ||%0a%3c %0a%3c || border=1 width=100%25 class="sortable simpletable"%0a%3c ||! IRC Server ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[freedom/selfadmin|Self-Admin]] || Civics || Admin your network || ||%0a%3c || [[ngircd/install|Install ngIRCd]] || IRC || Install an IRC server || ||%0a%3c || [[openbsd/loginconf|Login classes]] || BSD || Configure login classes || ||%0a%3c || [[ngircd/loginconf|ngIRCd login class]] || IRC || Increase ngIRCd limits || ||%0a%3c || [[ngircd/oper|Oper Guide]] || IRC || Oper an IRC Server || ||%0a%3c || [[netcat/irc|netcat IRC]] || Network || Troubleshoot IRC with netcat || ||%0a%3c || [[netcat/usage|netcat]] || Network || Troubleshoot applications with netcat || ||%0a%3c || [[openbsd/rcctl|rcctl]] || BSD || Start services automatically || Extend VPS 1 week ||%0a%3c %0a%3c ||! Web Server ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[freedom/fork|Freedom to Fork]] || Civics || Freedom to Fork || ||%0a%3c || [[chroot/intro|Intro to Chroot]] || BSD || Learn about Chroots || ||%0a%3c || [[Openhttpd/Configure|Simple OpenHTTPd]] || Web || Host your own web server || ||%0a%3c || [[Openhttpd/Website|OpenHTTPd Website]] || Web || Set up your website || Extend VPS 1 week ||%0a%3c || [[netcat/http|netcat HTTP]] || Network || Troubleshoot webserver with netcat || ||%0a%3c || [[telnet/http|Telnet HTTP]] || Network || Troubleshoot webserver with telnet || ||%0a%3c || [[acme-client/configure|acme-client]] || Security || Request an SSL cert || ||%0a%3c || [[Openhttpd/Tls|OpenHTTPd TLS]] || Web || Provide TLS for webpages || ||%0a%3c || [[openssl/http|OpenSSL HTTP]] || Network || Test TLS for webpages with OpenSSL || ||%0a%3c || [[openssl/cert|Save OpenSSL cert]] || Network || Save OpenSSL cert || ||%0a%3c || [[Openbsd/Php|OpenHTTPd PHP]] || Web || Install PHP inside OpenHTTPd chroot || ||%0a%3c || [[pmwiki/install|PMWiki]] || Web || Setup your own private wiki || ||%0a%3c || [[Openhttpd/Hosting|Multi-user OpenHTTPd]] || Web || Configure webserver for multiple domains || ||%0a%3c || [[Openbsd/Httpopenproxy|Open Proxies]] || Web || Avoid blacklists by closing open proxies || ||%0a%3c || [[Openbsd/Chroot|OpenHTTPd Chroot]] || Web || OpenHTTPd chroot environment || ||%0a%3c || [[Openhttpd/Perl|OpenHTTPd Perl]] || Web || Install Perl inside OpenHTTPd chroot || Extend VPS 1 week ||%0a%3c %0a%3c ||! TLS ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[tls/intro|TLS overview]] || Network || TLS introduction || ||%0a%3c || [[tls/overview|TLS overview]] || Network || TLS overview || ||%0a%3c || [[tls/CA|Certificate Authorities]] || Network || TLS Certificate Authorities || ||%0a%3c %0a%3c ||! IRC Network ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[freedom/firstamendment|Free Press]] || Civics || Freedom of Speech and of the Press || ||%0a%3c || [[Ircnow/Dogfood|Dogfooding]] || Civics || Eat your own dogfood || ||%0a%3c || [[ngircd/ssl|ngircd ssl]] || IRC || Configure SSL for your IRCd || ||%0a%3c || [[ngircd/link|ngircd link]] || IRC || Link your ngIRCd to the network || ||%0a%3c || [[hopm/install|Install hopm]] || IRC || Detect and ban spammers using an open proxy monitor || ||%0a%3c || [[Hopm/Telnet|Test hopm]] || IRC || Test hopm with telnet || ||%0a%3c || [[anope/install|Install Anope]] || IRC || Install Anope IRC services || Apply for IRC channel op ||%0a%3c %0a%3c ||! IRC Bouncer ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[freedom/software|Software Freedom]] || Civics || Software Freedom || ||%0a%3c || [[znc/chroot|Chroot ZNC]] || IRC || Securely install ZNC || ||%0a%3c || [[znc/admin|Admin ZNC]] || IRC || Admin ZNC || ||%0a%3c || [[znc/support|Support ZNC]] || IRC || Support ZNC || ||%0a%3c || [[relayd/acceleration|TLS Acceleration]] || Security || Provide TLS for multiple services || ||%0a%3c || [[Znc/Relayd|Relayd ZNC Webpanel]] || IRC || Setup web panel for ZNC || ||%0a%3c || [[relayd/TLSMulti|TLS Acceleration (multiple)]] || Security || Encrypt traffic with TLS for multiple services || ||%0a%3c || [[letsencrypt/expired|Let's Encrypt's Expired CA ]] || Security || Removed Expired CA from Let's Encrypt certificates || Extend VPS 1 week ||%0a%3c %0a%3c ||! TCP/IP Networking ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[freedom/religion|Religious Liberty]] || Civics || Freedom of Religion || ||%0a%3c || [[tcpip/overview|TCP/IP Networking]] || Network || Learn Basics of TCP/IP || ||%0a%3c || [[IPv4/overview|IPv4 Networking]] || Network || Learn IPv4 Networking || ||%0a%3c || [[IPv6/overview|IPv6 Networking]] || Network || Learn IPv6 Networking || ||%0a%3c || [[tcpip/sockets|TCP/IP sockets]] || Network || Learn Basics of TCP/IP sockets || ||%0a%3c || [[ip/netmask|IP netmasks]] || Network || Learn Basics of IP netmasks || ||%0a%3c || [[tcpip/ports|TCP/UDP ports]] || Network || Learn Basics of TCP/UDP ports || ||%0a%3c || [[IP/Myaddress|My IP Address]] || Network || What's my IP Address? || ||%0a%3c || [[openbsd/ping|ping]] || Network || Troubleshoot networking with ping || ||%0a%3c || [[openbsd/dig|dig]] || Network || Troubleshoot DNS servers and records || Extend VPS 1 week ||%0a%3c || [[ifconfig|ifconfig]] || Network || ifconfig guide || ||%0a%3c || [[ifconfig/change|Changing addresses]] || Network || Changing network addresses || ||%0a%3c || [[Hostnameif/Static|Static Networking]] || Network || ||%0a%3c || [[arp/usage|arp]] || Network || Address resolution protocol || ||%0a%3c || [[ndp/usage|ndp]] || Network || Neighbor discovery protocol || ||%0a%3c || [[resolv/conf-|resolv.conf]] || Network || Configuring resolv.conf || ||%0a%3c || [[route/usage|Route]] || Network || Configure route paths || ||%0a%3c || [[route/sourceaddr|Route source address]] || Network || Configure routing source address || Extend VPS 1 week ||%0a%3c %0a%3c ||! Network Defense ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[freedom/openforeveryone|Open For Everyone]] || Civics || || ||%0a%3c || [[pf/guide|Packet Filter]] || Network || Setup firewall with Packet Filter || ||%0a%3c || [[openbsd/ddos|DDoS Defense]] || Network || Defend against DDoS Attacks || ||%0a%3c || [[openbsd/tcpdump|tcpdump]] || Network || Read network packets || ||%0a%3c || [[openbsd/SSDP|SSDP attack]] || Network || || ||%0a%3c || [[openbsd/ACKFlood|TCP ack flood]] || Network || || ||%0a%3c || [[openbsd/RSTFlood|TCP reset flood]] || Network || || ||%0a%3c || [[openbsd/UDPFlood|UDP Flood]] || Network || || ||%0a%3c || [[openbsd/amplification|amplification attack]] || Network || || ||%0a%3c || [[openbsd/PFStable|PF Stable]] || Network || Sample PF Firewall for Stable || ||%0a%3c || [[openbsd/PFTesting|PF Testing]] || Network || Sample PF Firewall for Testing || ||%0a%3c || [[openbsd/pf|Packet Filter]] || Network || PF Guide || Extend VPS 1 week ||%0a%3c %0a%3c ||! Domain Name Lookup ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[dns/overview|DNS Overview]] || DNS || Learn the Domain Name System || ||%0a%3c || [[unbound/configure|unbound]] || DNS || Configure a local caching nameserver || ||%0a%3c || [[unbound/dnssec-|DNSSec for Unbound]] || DNS || Add DNSSec for unbound || ||%0a%3c || [[dig/usage|dig]] || DNS || Troubleshoot DNS records with dig || ||%0a%3c || [[host/usage|host]] || DNS || Troubleshoot DNS records with host || ||%0a%3c || [[hostname/usage|hostname]] || DNS || Set hostname || ||%0a%3c || [[hosts/configure|Configure /etc/hosts]] || BSD || Host and network name database || Apply for IRC operator ||%0a%3c %0a%3c ||! Name Server ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[netizen/become|Become a Netizen]] || Civics || || ||%0a%3c || [[netizen/rights|Netizen Rights]] || Civics || || ||%0a%3c || [[dns/records|DNS Records]] || DNS || Understand DNS record types || ||%0a%3c || [[dns/registrars|Name Registrars]] || DNS || Choose a name registrar || ||%0a%3c || [[dns/FQDN|FQDN]] || DNS || Understand FQDN and $ORIGIN || ||%0a%3c || [[nsd/configure|Configure NSD]] || DNS || Configure name server for custom domains || ||%0a%3c || [[dns/zonefile|Zone File]] || DNS || || ||%0a%3c || [[nsd/zone|NSD Zone]] || DNS || || Extend VPS 1 week ||%0a%3c || [[nsd/masterslave|nsd master slave]] || DNS || || ||%0a%3c || [[nsd/troubleshoot|Troubleshooting NSD]] || DNS || || ||%0a%3c || [[DNS/rDNS|rDNS]] || DNS || Configure reverse DNS for vhosts and email || ||%0a%3c || [[DNS/Ipv4rDNS|IPv4 rDNS]] || DNS || Configure IPv4 reverse DNS || ||%0a%3c || [[DNS/Ipv6rDNS|IPv6 rDNS]] || DNS || Configure IPv6 reverse DNS || Extend VPS 1 week ||%0a%3c %0a%3c ||! IRC Hostmasks ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[freedom/unix|Unix Work Ethic]] || Civics || || ||%0a%3c || [[dns/vhost|vhost]] || DNS || Create custom vhost || ||%0a%3c || [[oidentd/install|Oidentd]] || Security || Provide ident to stop abuse || ||%0a%3c || [[Oidentd/ZNC|Oidentd for ZNC]] || Security || Provide ident for ZNC || ||%0a%3c || [[ambassador/ilines|ilines]] || IRC || Request higher connection limits from IRC networks || Extend VPS 1 week ||%0a%3c %0a%3c ||! Mail Server ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[freedom/federation|Federation]] || Civics || || ||%0a%3c || [[opensmtpd/configure|OpenSMTPd]] || Mail || Configure your mail server || ||%0a%3c || [[DNS/Mail|DNS for Mail]] || Mail || Create DNS records for email || ||%0a%3c || [[DNS/SPF]] || Mail || Configure SPF records to avoid the spam folder || ||%0a%3c || [[DNS/DKIM]] || Mail || Configure DKIM records to avoid the SPAM folder || ||%0a%3c || [[DNS/DMARC]] || Mail || Configure DMARC records to block phishing and spam || ||%0a%3c || [[netcat/SMTP|netcat SMTP]] || Network || Troubleshoot SMTP with netcat || ||%0a%3c || [[Opensmtpd/Test|SMTP Testing]] || Mail || Send a test letter || ||%0a%3c || [[Opensmtpd/Inbox|Getting inboxed]] || Mail || Getting inboxed || ||%0a%3c || [[Opensmtpd/Openrelay|Open Mail Relay]] || Mail || Block open mail relay to avoid sending spam || ||%0a%3c || [[Dovecot/Install|Install Dovecot]] || Mail || Install POP and IMAP server to read mail || ||%0a%3c || [[openssl/imap|OpenSSL IMAP]] || Network || Troubleshoot IMAP with openssl || ||%0a%3c || [[squirrelmail/install|SquirrelMail]] || Web || Install webmail || ||%0a%3c || [[mlmmj/install|Install Mlmmj]] || Mail || Install mailing list || Apply team email account ||%0a%3c %0a%3c ||! Support for IRC Bouncers ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[Servers/Rights|Servers' Rights]] || Civics || Servers' Rights || ||%0a%3c || [[Minutemin/Code|Minutemin's Code]] || Civics || Recite the Code of Honor || ||%0a%3c || [[openbsd/botnow|botnow]] || IRC || Install botnow to provide bouncers and shells || ||%0a%3c || [[Bouncer/ZNC|ZNC User's Guide]] || IRC || ZNC User Guide || ||%0a%3c || [[ZNC/Admin|ZNC Admin's Guide]] || IRC || ZNC Admin Guide || ||%0a%3c || [[ZNC/Support|ZNC Support]] || IRC || ZNC Support Guide || Apply ZNC Admin ||%0a%3c %0a%3c ||! Version Control ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[Minutemin/Duty|Call of Duty]] || Civics || The Call of Duty || ||%0a%3c || [[got/usage|got]] || Code || Set up got version control (clone of git) || ||%0a%3c || [[got/repo|got repo]] || Code || Set up got repo || ||%0a%3c || [[got/server|got server]] || Code || Set up got server || ||%0a%3c || [[got/mirror|got mirror]] || Code || Set up got mirror || ||%0a%3c || [[gotweb/install|gotweb]] || Code || Set up got web access || Extend VPS 1 week ||%0a%3c %0a%3c ||! Disk Setup and Backups ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[Minutemin/Server|Minutemin's Server]] || Civics || The Minutemin's Server || ||%0a%3c || [[openbsd/dump|dump]] || BSD || Backup a partition || ||%0a%3c || [[openrsync/usage|openrsync]] || BSD || Backup and sync files || ||%0a%3c || [[openbsd/fdisk|fdisk]] || BSD || Partition Hard Disk || ||%0a%3c || [[openbsd/disklabel|disklabel]] || BSD || Edit Partitions || ||%0a%3c || [[disklabel/partitioning|disklabel partitioning]] || BSD || Partition New Hard Disk || ||%0a%3c || [[newfs/usage|newfs]] || BSD || Construct a new filesystem || ||%0a%3c || [[mount/usage|mount]] || BSD || Mount partitions || ||%0a%3c || [[openbsd/newdisk|newdisk]] || BSD || Add a New Hard Disk || ||%0a%3c || [[ffs/intro|FFS]] || BSD || Learn about the Fast Filesystem || ||%0a%3c || [[openbsd/quota]] || BSD || Edit disk quotas || ||%0a%3c || [[openbsd/growfs|growfs]] || BSD || Grow a Disk Partition || Get shell account on server ||%0a%3c %0a%3c ||! RAID ||||||||%0a%3c || [[softraid/install|softraid]] || BSD || Configuring software RAID || ||%0a%3c || [[softraid/rebuild|Rebuild softraid]] || BSD || Rebuilding software RAID || ||%0a%3c %0a%3c ||! Virtual Machine ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[vmm/intro|VMM Intro]] || BSD || Intro to the VMM Hypervisor || ||%0a%3c || [[vmctl/usage|VMM User Guide]] || BSD || Control your VPS || ||%0a%3c || [[vmctl/newdisk|VMM User Guide]] || BSD || Add new storage disk to VPS || ||%0a%3c || [[vmctl/reinstall|VMM User Guide]] || BSD || Reinstall OpenBSD inside VMM || ||%0a%3c || [[vmm/install|VMM Install]] || BSD || Install OpenBSD inside VMM || ||%0a%3c || [[openbsd/vmmlinux|VMM Linux Guide]] || BSD || Install Linux inside VMM || ||%0a%3c || [[openbsd/install|Install OpenBSD]] || BSD || Install OpenBSD || ||%0a%3c || [[openbsd/upgrade|Upgrade OpenBSD]] || BSD || Upgrade to OpenBSD || ||%0a%3c || [[openbsd/sysupgrade|OpenBSD Sysupgrade]] || BSD || Sysupgrade to OpenBSD || ||%0a%3c || [[vmm/sysupgrade|Vmm Sysupgrade]] || BSD || Sysupgrade OpenBSD VMM Host || ||%0a%3c || [[hosting/providers|Hosting Providers]] || Network || Choose a Hosting Provider || ||%0a%3c || [[openbsd/bsdrd|bsd.rd]] || BSD || Install/Upgrade/Repair with Ramdisk || ||%0a%3c || [[openbsd/singleuser|Single User Mode]] || BSD || Boot OpenBSD into single user mode || ||%0a%3c || [[OpenBSD.ResetPassword|Reset root password]] || BSD || Reset root password || ||%0a%3c || [[dhcpd/configure|Configure DHCP server]] || Network || || ||%0a%3c || [[openbsd/buyvm|Buyvm Guide]] || BSD || || ||%0a%3c || [[vmm/linux|Linux on VMM]] || BSD || Install Linux on OpenBSD VMM || Acquire admin access ||%0a%3c %0a%3c ||! System Administration ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[openbsd/ed|ed]] || BSD || ed text editor || ||%0a%3c || [[crontab/edit|Editing crontab]] || BSD || Editing crontab || ||%0a%3c || [[openbsd/adduser|adduser]] || BSD || Addusers || ||%0a%3c || [[openbsd/localtime|localtime]] || BSD || Set time zone || ||%0a%3c || [[dd/iso|Write image to usb]] || BSD || Write image to USB || ||%0a%3c || [[ln/intro|symbolic links]] || BSD || Create symbolic links || ||%0a%3c || [[openbsd/fstab|fstab]] || BSD || Edit filesystem table || ||%0a%3c || [[dmesg/usage|dmesg]] || BSD || Display system message buffer || ||%0a%3c || [[openbsd/hier|hier]] || BSD || OpenBSD filesystem hierarchy || ||%0a%3c || [[ps/usage|ps]] || BSD || Monitor Processes || ||%0a%3c || [[kill/usage|kill]] || BSD || Send signals to processes || ||%0a%3c || [[openbsd/panic|kernel panics]] || BSD || Dealing with kernel panics || ||%0a%3c || [[openbsd/sysctl|sysctl]] || BSD || Getting and setting kernel state || ||%0a%3c || [[swapctl/usage|swapctl]] || BSD || Manage system swap space || ||%0a%3c || [[openbsd/outofmemory|OOM error]] || BSD || Out of memory error || ||%0a%3c || [[openbsd/vipw|vipw]] || BSD || Edit the password file || Extend VPS 1 week ||%0a%3c %0a%3c ||! System Logging ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[syslogd/configure|syslogd]] || BSD || Configure system logging || ||%0a%3c || [[syslogd/remote|Remote syslogd]] || BSD || Configure remote system logging || ||%0a%3c %0a%3c %0a%3c ||! Civics ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[Freedom/Independence|Independence]] || Civics || Declaration of Network Independence || ||%0a%3c || [[ircnow/constitution|Constitution]] || Civics || Read the Constitution and Bill of Rights || ||%0a%3c || [[freedom/union|United We Serve]] || Civics || || ||%0a%3c || [[freedom/privacy|Privacy]] || Civics || Right to Privacy || ||%0a%3c || [[freedom/homestead|Homestead VPS]] || Civics || || ||%0a%3c || [[freedom/madeonirc|Made on IRC]] || Civics || || ||%0a%3c || [[freedom/startupdream|The Startup Dream]] || Civics || || ||%0a%3c || [[freedom/dueprocess|Due Process]] || Civics || || ||%0a%3c || [[freedom/checks|Checks and Balances]] || Civics || || ||%0a%3c || [[freedom/rulebylaw|Rule by Law]] || Civics || || Extend VPS 1 week ||%0a%3c %0a%3c ||! Miscellaneous ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[openbsd/sftp|chrooted sftp]] || Network || Chroot sftp server for secure file hosting || ||%0a%3c || [[openbsd/ports|ports]] || BSD || Install software from ports tree || ||%0a%3c || [[Pkgadd.CheckUpdates-|pkg_add updates]] || BSD || Keep software updated || ||%0a%3c || [[ntpd/configure|ntpd]] || Network || Update date and time from network automatically || Extend VPS 1 week ||%0a%3c %0a%3c ||! Stopping Abuse ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[police/intro|Police Guide]] || Security || Investigation techniques to report criminals || ||%0a%3c || [[police/fingerprints|Abuse Fingerprinting]] || Security || Investigation techniques to detect abusers || ||%0a%3c || [[team/security|Team Security]] || Security || Prevent security leaks || Extend VPS 1 week ||%0a%3c %0a%3c ||! Security ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[Password/Management|Manage Passwords]] || Shell || Create secure passwords || ||%0a%3c || [[Openssl/Encryptfile|Encrypt Files]] || Shell || Encrypt files with OpenSSL || ||%0a%3c || [[gnupg/create|Create PGP key]] || Security || Create PGP key || ||%0a%3c || [[gpg/verify|Verify signature]] || Security || Verify PGP signature for email and software || ||%0a%3c || [[signify/verify|signify]] || Security || Verify OpenBSD software || ||%0a%3c || [[shell/limits]] || Security || Setting resource limits || ||%0a%3c || [[openbsd/FilePermissions|File Permissions]] || Security || Fix insecure file permissions || Extend VPS 1 week ||%0a%3c || [[pledge/intro|pledge]] || Security || Restrict system operations || ||%0a%3c || [[unveil/intro|unveil]] || Security || Unveil parts of restricted filesystems || ||%0a%3c || [[openbsd/setuid]] || Security || Audit setuid root binaries || ||%0a%3c || [[team/security]] || Security || Team security || ||%0a%3c %0a%3c ||! Routing ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[ripd/configure|RIPd]] || Network || Configure RIPd || ||%0a%3c || [[ospfd/configure|OSPFd]] || Network || Configure OSPFd || ||%0a%3c || [[bgpd/configure|BGPd]] || Network || Configure BGPd || ||%0a%3c %0a%3c ||! VPNs and Proxies ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[iked/configure|iked]] || Network || Provide Roadwarrio IPSec VPNs || ||%0a%3c || [[vpn/vpn|VPN clients]] || Security || Configure IPSec VPN client || ||%0a%3c || [[vpn/myipaddress|Test VPN]] || Security || Test IP address behind VPN || ||%0a%3c || [[iked/sitetosite|site-to-site iked]] || Security || Provide site-to-site IPSec || ||%0a%3c || [[tor/torsocks|torsocks]] || Security || Connect with tor to cloak IP address || ||%0a%3c || [[tor/irc|IRC with Tor]] || Security || Connect to IRC with tor || ||%0a%3c || [[tor/hidden|Hidden Services]] || Security || Provide tor hidden services || Extend VPS 1 week ||%0a%3c %0a%3c ||! Secure Shell ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[sshd/configure|sshd]] || Security || Configure and start sshd || ||%0a%3c || [[ssh/fingerprints|ssh fingerprints]] || Security || Verify SSH fingerprints|| ||%0a%3c || [[OpenSSH/connect|OpenSSH]] || Security || Configure ssh and connect securely || ||%0a%3c || [[OpenSSH/Keygen|Generate SSH Keys]] || Security || Generate SSH keys || Extend VPS 1 week ||%0a%3c || [[openbsd/sshkeys|SSH keys]] || Security || Verify ssh keys || ||%0a%3c || [[openbsd/sshbackdoor|SSH backdoor]] || Security || Configure ssh side channel to avoid DDoS || ||%0a%3c || [[sftp/chroot|Chroot SFTP]] || Security || Configure sftp inside a chroot || Extend VPS 1 week ||%0a%3c %0a%3c ||! Further Reading ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[openbsd/books|OpenBSD Books]] || BSD || OpenBSD recommended reading || ||%0a%3c || [[unix/reading|Unix Books]] || BSD || Unix recommended reading || ||%0a%3c %0a%3c ||! Minutemin ||||||||%0a%3c ||! Lesson ||! Topic ||! Description ||! Reward ||%0a%3c || [[Team/Welcome|Welcome to the Team]] || Civics || Learn Team Responsibilities || ||%0a%3c || [[Team/Testing|Testing Servers]] || Civics || Learn Team Procedure for Testing || ||%0a%3c || [[ircnow/networks|Claim Networks]] || Civics || Claim Team Networks || ||%0a%3c || [[Ircnow/Roadmap|IRCNow Roadmap]] || Civics || Plan for IRCNow || ||%0a%3c || [[openbsd/books|OpenBSD books]] || Civics || OpenBSD books || ||%0a%3c || [[Team/Announce|Announcements]] || Civics || Announce downtime and updates for users || Extend VPS 1 week ||%0a
+host:1716923189=104.167.242.140
blob - /dev/null
blob + 2587c314852d38a5d5f1ae8f642faff307039292 (mode 644)
--- /dev/null
+++ wiki.d/Akkoma.Install
@@ -0,0 +1,136 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36
+author=Yonle
+charset=UTF-8
+csum=
+ctime=1669393923
+host=182.1.16.139
+name=Akkoma.Install
+rev=38
+targets=
+text=(:redirect openbsd/akkoma:)
+time=1675946959
+author:1675946959=Yonle
+diff:1675946959:1674823499:=1c1,334%0a%3c (:redirect openbsd/akkoma:)%0a\ No newline at end of file%0a---%0a> (:title Akkoma:)%0a> Akkoma is a fork of Pleroma project with additional features added.%0a> %0a> This guide describes the installation and configuration of akkoma (and the required software to run it) on a single OpenBSD 7.2 server.%0a> %0a> !! Installation%0a> First, We need to install the required dependencies%0a> [@%0a> # pkg_add elixir gmake git postgresql-server postgresql-contrib cmake ffmpeg ImageMagick p5-Image-ExifTool libmagic erlang-wx%0a> @]%0a> %0a> Pick the latest version of @@erlang-wx@@ when asked.%0a> %0a> Create @@akkoma@@ user to be run in dedicated user. Before creating it, Edit @@/etc/login.conf@@:%0a> [@%0a> akkoma:\%0a>         :openfiles-cur=8182:\%0a>         :openfiles-max=8182:\%0a>         :openfiles=8182:\%0a>         :stacksize-cur=128M:\%0a>         :stacksize-max=128M:\%0a>         :maxproc-max=infinity:\%0a>         :maxproc-cur=8182:\%0a>         :tc=daemon:%0a> @]%0a> %0a> This creates a "akkoma" login class and sets higher values than default for datasize and openfiles (see login.conf(5)), this is required to avoid having akkoma crash some time after starting.%0a> %0a> Create the @@_akkoma@@ user, assign it the akkoma login class and create its home directory (/home/_akkoma/):%0a> [@%0a> # useradd -m -L akkoma _akkoma%0a> @]%0a> %0a> Enter a shell as the _akkoma user. As root, run%0a> [@%0a> # su -l _akkoma%0a> @]%0a> %0a> Because we're running in a VM, Disable time correction to prevent interruption during compilation, And disable Busy-waiting feature to improve performance a bit. Edit @@~/.vm.args@@, insert:%0a> %0a> [@%0a> +c false%0a> +sbwt none%0a> +sbwtdcpu none%0a> +sbwtdio none%0a> @]%0a> %0a> Then save it.%0a> %0a> Edit @@~/.profile@@, Then add this to the bottom of file:%0a> %0a> [@%0a> export LC_ALL=en_US.UTF-8%0a> alias mix="elixir --erl \"-args_file $HOME/.vm.args\" -S $(command -v mix)"%0a> @]%0a> %0a> Then save it.%0a> %0a> Then clone the repository by doing:%0a> [@%0a> $ git clone https://akkoma.dev/AkkomaGang/akkoma.git%0a> @]%0a> %0a> Akkoma is now installed in @@/home/_akkoma/akkoma/@@, it will be configured and started at the end of this guide.%0a> %0a> !! Setting up the database: postgresql%0a> %0a> OpenBSD has low SEMMNS and SHMMAX by default, So increase the limit by editing the kernel state with @@sysctl@@%0a> %0a> To increase the limit:%0a> [@%0a> # sysctl kern.seminfo.semmns=2048%0a> # sysctl kern.shminfo.shmmax=50331648%0a> @]%0a> %0a> To apply this permanently, Edit @@/etc/sysctl.conf@@ and put:%0a> %0a> [@%0a> kern.seminfo.semmns=2048%0a> kern.shminfo.shmmax=50331648%0a> @]%0a> %0a> Now, start a shell as the _postgresql user. As root, run%0a> [@%0a> # su -l _postgresql%0a> @]%0a> %0a> Then run the initdb command to initialize postgresql. You will need to specify pgdata directory to the default (@@/var/postgresql/data@@) with the @@-D %3cpath>@@ and set the user to postgres with the @@-U %3cusername>@@ flag. This can be done as follows:%0a> %0a> [@%0a> # initdb -D /var/postgresql/data -U postgres%0a> @]%0a> %0a> If you are not using the default directory, you will have to update the @@datadir@@ variable in the @@/etc/rc.d/postgresql@@ script.%0a> %0a> %0a> When this is done, enable postgresql so that it starts on boot and start it. As root, run:%0a> [@%0a> # rcctl enable postgresql%0a> # rcctl start postgresql%0a> @]%0a> %0a> To check that it started properly and didn't fail right after starting, you can run @@ps aux | grep postgres@@, there should be multiple lines of output.%0a> %0a> !! Configuring httpd%0a> httpd will have three fuctions:%0a> %0a> # Redirect requests trying to reach the instance over http to the https URL%0a> # Serve a robots.txt file%0a> # Get Let's Encrypt certificates, with acme-client%0a> %0a> Insert the following config in httpd.conf:%0a> %0a> [@%0a> # $OpenBSD: httpd.conf,v 1.17 2017/04/16 08:50:49 ajacoutot Exp $%0a> %0a> ext_inet="%3cIPv4 address>"%0a> ext_inet6="%3cIPv6 address>"%0a> %0a> server "default" {%0a>     listen on $ext_inet port 80 # Comment to disable listening on IPv4%0a>     listen on $ext_inet6 port 80 # Comment to disable listening on IPv6%0a>     listen on 127.0.0.1 port 80 # Do NOT comment this line%0a> %0a>     log syslog%0a>     directory no index%0a> %0a>     location "/.well-known/acme-challenge/*" {%0a>         root "/acme"%0a>         request strip 2%0a>     }%0a> %0a>     location "/robots.txt" { root "/htdocs/" }%0a>     location "/*" { block return 302 "https://$HTTP_HOST$REQUEST_URI" }%0a> }%0a> @]%0a> %0a> Do not forget to change @@%3cIPv4/6 address>@@ to your server's address(es). If httpd should only listen on one protocol family, comment one of the two first listen options.%0a> %0a> Write the content of your @@robots.txt@@ in @@/var/www/htdocs/robots.txt@@:%0a> [@%0a> User-Agent: *%0a> Disallow:%0a> @]%0a> %0a> Check the httpd configuration%0a> [@%0a> # httpd -n%0a> @]%0a> %0a> If it's OK, enable and start httpd%0a> [@%0a> # rcctl enable httpd%0a> # rcctl start httpd%0a> @]%0a> %0a> !! acme-client%0a> See https://wiki.ircnow.org/index.php?n=Acme-client.Configure%0a> %0a> !! Configuring relayd%0a> relayd will be used as the reverse proxy sitting in front of akkoma. Insert the following configuration in @@/etc/relayd.conf@@:%0a> %0a> [@%0a> # $OpenBSD: relayd.conf,v 1.4 2018/03/23 09:55:06 claudio Exp $%0a> %0a> ext_inet="%3cIPv4 address>"%0a> ext_inet6="%3cIPv6 address>"%0a> %0a> table %3cakkoma_server> { 127.0.0.1 }%0a> table %3chttpd_server> { 127.0.0.1 }%0a> %0a> http protocol plerup { # Protocol for upstream akkoma server%0a>     #tcp { nodelay, sack, socket buffer 65536, backlog 128 } # Uncomment and adjust as you see fit%0a>     tls { keypair fedi.example.com }%0a> %0a>     # Forward some paths to the local server (as akkoma won't respond to them as you might want)%0a>     pass request quick path "/robots.txt" forward to %3chttpd_server>%0a> %0a>     # Append a bunch of headers%0a>     match request header append "X-Forwarded-For" value "$REMOTE_ADDR" # This two header and the next one are not strictly required by akkoma but adding them won't hurt%0a>     match request header append "X-Forwarded-By" value "$SERVER_ADDR:$SERVER_PORT"%0a> %0a>     match request header append "Connection" value "upgrade"%0a> }%0a> %0a> relay www {%0a>     listen on $ext_inet port https tls # Comment to disable listening on IPv4%0a> %0a>     protocol plerup%0a> %0a>     forward to %3cakkoma_server> port 4000%0a> }%0a> %0a> relay www6 {%0a>     listen on $ext_inet6 port https tls # Comment to disable listening on IPv6%0a> %0a>     protocol plerup%0a> %0a>     forward to %3cakkoma_server> port 4000%0a> }%0a> @]%0a> %0a> Change @@fedi.example.com@@ with your instance domain.%0a> %0a> Again, change @@%3cIPv4 address>@@ and @@%3cIPv6 address>@@ to your server's address(es) and comment one of the two listen options if needed.%0a> %0a> Check the configuration with @@relayd -n@@, if it is OK enable and start relayd (as root):%0a> [@%0a> # rcctl enable relayd%0a> # rcctl start relayd%0a> @]%0a> %0a> !! Configuring pf%0a> Enabling and configuring pf is highly recommended. In @@/etc/pf.conf@@, insert the following configuration:%0a> %0a> [@%0a> # Macros%0a> if="%3cnetwork interface>"%0a> authorized_ssh_clients="any"%0a> %0a> # Skip traffic on loopback interface%0a> set skip on lo%0a> %0a> # Default behavior%0a> set block-policy drop%0a> block in log all%0a> pass out quick%0a> %0a> # Security features%0a> match in all scrub (no-df random-id)%0a> block in log from urpf-failed%0a> %0a> # Rules%0a> pass in quick on $if inet proto icmp to ($if) icmp-type { echoreq unreach paramprob trace } # ICMP%0a> pass in quick on $if inet6 proto icmp6 to ($if) icmp6-type { echoreq unreach paramprob timex toobig } # ICMPv6%0a> pass in quick on $if proto tcp to ($if) port { http https } # relayd/httpd%0a> pass in quick on $if proto tcp from $authorized_ssh_clients to ($if) port ssh%0a> @]%0a> %0a> Replace @@%3cnetwork interface>@@ by your server's network interface name (which you can get with ifconfig). Consider replacing the content of the @@authorized_ssh_clients@@ macro by, for example, your home IP address, to avoid SSH connection attempts from bots.%0a> %0a> Check pf's configuration by running @@pfctl -nf /etc/pf.conf@@, load it with @@pfctl -f /etc/pf.conf@@ and enable pf at boot with @@rcctl enable pf@@.%0a> %0a> %0a> !! Configuring and starting akkoma%0a> Enter a shell as _akkoma (as root do @@su -l _akkoma@@) and enter akkoma's installation directory:%0a> [@%0a> $ cd ~/akkoma%0a> @]%0a> %0a> %0a> Now, Run the following command:%0a> [@%0a> $ mix deps.get%0a> @]%0a> %0a> When asked to install Hex dependencies, Press @@Y@@ then @@RETURN@@/Enter.%0a> %0a> Once dependencies succesfully retrieved, Run%0a> [@%0a> $ MIX_PROD=prod mix pleroma.instance gen%0a> @]%0a> %0a> When asked to install @@rebar3@@, Press @@Y@@ then @@RETURN@@/Enter, and enter your instance information when asked.%0a> %0a> %0a> Copy @@config/generated_config.exs@@ to @@config/prod.secret.exs@@. The default values should be sufficient but you should edit it and check that everything seems OK.%0a> [@%0a> $ cp config/generated_config.exs config/prod.secret.exs%0a> @]%0a> %0a> Exit your current shell back to root one and run the following command to set up database:%0a> [@%0a> # psql -U postgres -f /home/_akkoma/akkoma/config/setup_db.psql%0a> @]%0a> %0a> Return to _akkoma shell into akkoma's installation directory (@@su -l _akkoma;cd ~/akkoma@@) and run%0a> [@%0a> $ MIX_ENV=prod mix ecto.migrate%0a> @]%0a> %0a> %0a> As @@_akkoma@@ in @@/home/_akkoma/akkoma@@, You can now run the following command to start your instance:%0a> [@%0a> $ MIX_ENV=prod mix phx.server%0a> @]%0a> %0a> In another SSH session/tmux window, check that it is working properly by running @@ftp -MVo - http://127.0.0.1:4000/api/v1/instance@@, you should get json output. Double-check that uri's value is your instance's domain name.%0a> %0a> !! Starting akkoma at boot%0a> Under @@_akkoma@@ user, Edit @@~/start.sh@@:%0a> %0a> [@%0a> #!/bin/ksh%0a> %0a> export MIX_ENV=prod%0a> export LC_ALL=en_US.UTF-8%0a> %0a> alias mix="elixir --erl \"-args_file $HOME/.vm.args\" -S $(command -v mix)"%0a> %0a> cd ~/akkoma%0a> while true; do%0a>   mix phx.server%0a> done%0a> @]%0a> %0a> Edit crontab by executing:%0a> [@%0a> $ crontab -e%0a> @]%0a> %0a> Then insert:%0a> [@%0a> @reboot tmux new -d "ksh ~/start.sh"%0a> @]%0a> %0a> !! Create administrative user%0a> If your instance is up and running, you can create your first user with administrative rights with the following command as the @@_akkoma@@ user.%0a> %0a> [@%0a> $ MIX_ENV=prod mix pleroma.user new %3cusername> %3cyour@emailaddress> --admin%0a> @]%0a> %0a> !! Installing Frontends%0a> Once your backend server is functional, you'll also want to probably install frontends.%0a> %0a> These are no longer bundled with the distribution and need an extra command to install.%0a> %0a> For most installations, the following will suffice:%0a> [@%0a> $ export MIX_ENV=prod%0a> $ mix pleroma.frontend install pleroma-fe --ref stable%0a> $ mix pleroma.frontend install admin-fe --ref stable%0a> @]%0a\ No newline at end of file%0a
+host:1675946959=182.1.16.139
+author:1674823499=Yonle
+diff:1674823499:1674641774:=67,83c67%0a%3c %0a%3c OpenBSD has low SEMMNS and SHMMAX by default, So increase the limit by editing the kernel state with @@sysctl@@%0a%3c %0a%3c To increase the limit:%0a%3c [@%0a%3c # sysctl kern.seminfo.semmns=2048%0a%3c # sysctl kern.shminfo.shmmax=50331648%0a%3c @]%0a%3c %0a%3c To apply this permanently, Edit @@/etc/sysctl.conf@@ and put:%0a%3c %0a%3c [@%0a%3c kern.seminfo.semmns=2048%0a%3c kern.shminfo.shmmax=50331648%0a%3c @]%0a%3c %0a%3c Now, start a shell as the _postgresql user. As root, run%0a---%0a> Start a shell as the _postgresql user. As root, run%0a
+host:1674823499=114.125.37.113
+author:1674641774=Yonle
+diff:1674641774:1674641671:=24c24%0a%3c         :tc=daemon:%0a---%0a>         :tc=default:%0a
+host:1674641774=182.1.57.175
+author:1674641671=Yonle
+diff:1674641671:1674641230:=17,24c17,20%0a%3c         :openfiles-cur=8182:\%0a%3c         :openfiles-max=8182:\%0a%3c         :openfiles=8182:\%0a%3c         :stacksize-cur=128M:\%0a%3c         :stacksize-max=128M:\%0a%3c         :maxproc-max=infinity:\%0a%3c         :maxproc-cur=8182:\%0a%3c         :tc=default:%0a---%0a>     :datasize-max=1536M:\%0a>     :datasize-cur=1536M:\%0a>     :openfiles-max=4096:\%0a>     :tc=default:%0a
+host:1674641671=182.1.57.175
+author:1674641230=Yonle
+diff:1674641230:1674467232:=19,20c19%0a%3c     :openfiles-max=4096:\%0a%3c     :tc=default:%0a---%0a>     :openfiles-max=4096%0a
+host:1674641230=182.1.57.175
+author:1674467232=Yonle
+diff:1674467232:1670765044:=270,271c270%0a%3c Under @@_akkoma@@ user, Edit @@~/start.sh@@:%0a%3c %0a---%0a> As @@_akkoma@@, Edit crontab by doing this:%0a273,283c272%0a%3c #!/bin/ksh%0a%3c %0a%3c export MIX_ENV=prod%0a%3c export LC_ALL=en_US.UTF-8%0a%3c %0a%3c alias mix="elixir --erl \"-args_file $HOME/.vm.args\" -S $(command -v mix)"%0a%3c %0a%3c cd ~/akkoma%0a%3c while true; do%0a%3c   mix phx.server%0a%3c done%0a---%0a> $ crontab -e%0a286c275%0a%3c Edit crontab by executing:%0a---%0a> Then insert this:%0a288,293c277%0a%3c $ crontab -e%0a%3c @]%0a%3c %0a%3c Then insert:%0a%3c [@%0a%3c @reboot tmux new -d "ksh ~/start.sh"%0a---%0a> @reboot tmux new -d "source ~/.profile; cd ~/akkoma; while true; do LC_ALL=en_US.UTF-8 MIX_ENV=prod mix phx.server; done"%0a
+host:1674467232=182.1.34.194
+author:1670765044=Yonle
+diff:1670765044:1670764998:=14c14%0a%3c Create @@akkoma@@ user to be run in dedicated user. Before creating it, Edit @@/etc/login.conf@@:%0a---%0a> Then create @@akkoma@@ user to be run in dedicated user. Before creating it, Edit @@/etc/login.conf@@:%0a
+host:1670765044=182.1.43.26
+author:1670764998=Yonle
+csum:1670764998=Tell user to pick the latest erlang-wx version.
+diff:1670764998:1670000202:=9c9%0a%3c # pkg_add elixir gmake git postgresql-server postgresql-contrib cmake ffmpeg ImageMagick p5-Image-ExifTool libmagic erlang-wx%0a---%0a> # pkg_add elixir gmake git postgresql-server postgresql-contrib cmake ffmpeg ImageMagick p5-Image-ExifTool libmagic erlang-wx-25.0.4%0a12c12,15%0a%3c Pick the latest version of @@erlang-wx@@ when asked.%0a---%0a> Symlink @@/usr/local/bin/escript25@@ to @@/usr/local/bin/escript@@%0a> [@%0a> # ln -s /usr/local/bin/escript25 /usr/local/bin/escript%0a> @]%0a
+host:1670764998=182.1.43.26
+author:1670000202=Yonle
+diff:1670000202:1669951301:=59c59%0a%3c $ git clone https://akkoma.dev/AkkomaGang/akkoma.git%0a---%0a> $ git clone -b stable https://akkoma.dev/AkkomaGang/akkoma.git%0a
+host:1670000202=182.1.63.240
+author:1669951301=Yonle
+csum:1669951301=cronjob: Load .profile
+diff:1669951301:1669950528:=280c280%0a%3c @reboot tmux new -d "source ~/.profile; cd ~/akkoma; while true; do LC_ALL=en_US.UTF-8 MIX_ENV=prod mix phx.server; done"%0a---%0a> @reboot tmux new -d "cd ~/akkoma; while true; do LC_ALL=en_US.UTF-8 MIX_ENV=prod mix phx.server; done"%0a
+host:1669951301=114.125.20.101
+author:1669950528=Yonle
+diff:1669950528:1669950351:=280c280%0a%3c @reboot tmux new -d "cd ~/akkoma; while true; do LC_ALL=en_US.UTF-8 MIX_ENV=prod mix phx.server; done"%0a---%0a> @reboot tmux new -d "cd ~/akkoma; while true; do LC_ALL=en_US.UTF-8 MIX_ENV=prod elixir --erl \"-args_file $HOME/.vm.args\" -S $(command -v mix) phx.server; done"%0a
+host:1669950528=114.125.20.101
+author:1669950351=Yonle
+csum:1669950351=Cronjob doesn't affiliate aliases. So put the whole command in our own.
+diff:1669950351:1669827493:=280c280%0a%3c @reboot tmux new -d "cd ~/akkoma; while true; do LC_ALL=en_US.UTF-8 MIX_ENV=prod elixir --erl \"-args_file $HOME/.vm.args\" -S $(command -v mix) phx.server; done"%0a---%0a> @reboot tmux new -d "cd ~/akkoma; while true; do LC_ALL=en_US.UTF-8 MIX_ENV=prod mix phx.server; done"%0a
+host:1669950351=114.125.20.101
+author:1669827493=Yonle
+csum:1669827493=-
+diff:1669827493:1669826972:=37,38c37,38%0a%3c Because we're running in a VM, Disable time correction to prevent interruption during compilation, And disable Busy-waiting feature to improve performance a bit. Edit @@~/.vm.args@@, insert:%0a%3c %0a---%0a> Because we're running in a VM, Disable time correction to prevent interruption during compilation. Edit @@~/.vm.args@@, insert:%0a> %0a41,43d40%0a%3c +sbwt none%0a%3c +sbwtdcpu none%0a%3c +sbwtdio none%0a
+host:1669827493=51.159.99.217
+author:1669826972=Yonle
+csum:1669826972=Performance is way matter than speed.
+diff:1669826972:1669826265:=37,38c37,38%0a%3c Because we're running in a VM, Disable time correction to prevent interruption during compilation. Edit @@~/.vm.args@@, insert:%0a%3c %0a---%0a> Because we're running in a VM, Disable time correction to prevent interruption during compilation, And disable Busy-waiting feature to improve performance a bit. Edit @@~/.vm.args@@, insert:%0a> %0a40a41,43%0a> +sbwt none%0a> +sbwtdcpu none%0a> +sbwtdio none%0a
+host:1669826972=51.159.99.217
+author:1669826265=Yonle
+csum:1669826265=relayd.conf: Remove unnecessary headers that don't need to set.
+diff:1669826265:1669825703:=164a165,171%0a>     match response header append "X-XSS-Protection" value "1; mode=block"%0a>     match response header append "X-Permitted-Cross-Domain-Policies" value "none"%0a>     match response header append "X-Frame-Options" value "DENY"%0a>     match response header append "X-Content-Type-Options" value "nosniff"%0a>     match response header append "Referrer-Policy" value "same-origin"%0a>     match response header append "X-Download-Options" value "noopen"%0a>     match response header append "Content-Security-Policy" value "default-src 'none'; base-uri 'self'; form-action 'self'; img-src 'self' data: https:; media-src 'self' https:; style-src 'self' 'unsafe-inline'; font-src 'self'; script-src 'self'; connect-src 'self' wss://CHANGEME.tld; upgrade-insecure-requests;" # Modify "CHANGEME.tld" and set your instance's domain here%0a165a173,180%0a>     #match response header append "Strict-Transport-Security" value "max-age=31536000; includeSubDomains" # Uncomment this only after you get HTTPS working.%0a> %0a>     # If you do not want remote frontends to be able to access your Akkoma backend server, comment these lines%0a>     match response header append "Access-Control-Allow-Origin" value "*"%0a>     match response header append "Access-Control-Allow-Methods" value "POST, PUT, DELETE, GET, PATCH, OPTIONS"%0a>     match response header append "Access-Control-Allow-Headers" value "Authorization, Content-Type, Idempotency-Key"%0a>     match response header append "Access-Control-Expose-Headers" value "Link, X-RateLimit-Reset, X-RateLimit-Limit, X-RateLimit-Remaining, X-Request-Id"%0a>     # Stop commenting lines here%0a187c202%0a%3c Again, change @@%3cIPv4 address>@@ and @@%3cIPv6 address>@@ to your server's address(es) and comment one of the two listen options if needed.%0a---%0a> Again, change @@%3cIPv4 address>@@ and @@%3cIPv6 address>@@ to your server's address(es) and comment one of the two listen options if needed. Also change @@wss://CHANGEME.tld@@ to @@wss://%3cyour instance's domain name>@@.%0a
+host:1669826265=51.159.99.217
+author:1669825703=Yonle
+diff:1669825703:1669647755:=37,38c37,38%0a%3c Because we're running in a VM, Disable time correction to prevent interruption during compilation, And disable Busy-waiting feature to improve performance a bit. Edit @@~/.vm.args@@, insert:%0a%3c %0a---%0a> Because we're running in a VM, Disable time correction for BEAM. Edit @@~/.vm.args@@, insert:%0a> %0a41,43d40%0a%3c +sbwt none%0a%3c +sbwtdcpu none%0a%3c +sbwtdio none%0a
+host:1669825703=51.159.99.217
+author:1669647755=Yonle
+csum:1669647755=No need to check. Sometime it's also fail even though it actualy works.
+diff:1669647755:1669643608:=185c185,186%0a%3c     forward to %3cakkoma_server> port 4000%0a---%0a>     forward to %3cakkoma_server> port 4000 check http "/" code 200%0a>     forward to %3chttpd_server> port 80 check http "/robots.txt" code 200%0a193c194,195%0a%3c     forward to %3cakkoma_server> port 4000%0a---%0a>     forward to %3cakkoma_server> port 4000 check http "/" code 200%0a>     forward to %3chttpd_server> port 80 check http "/robots.txt" code 200%0a
+host:1669647755=182.1.52.184
+author:1669643608=Yonle
+csum:1669643608=Use stable branch
+diff:1669643608:1669573545:=56c56%0a%3c $ git clone -b stable https://akkoma.dev/AkkomaGang/akkoma.git%0a---%0a> $ git clone https://akkoma.dev/AkkomaGang/akkoma.git%0a
+host:1669643608=51.159.105.252
+author:1669573545=Yonle
+csum:1669573545=Just let the busy waiting alive.
+diff:1669573545:1669573172:=37,38c37,38%0a%3c Because we're running in a VM, Disable time correction for BEAM. Edit @@~/.vm.args@@, insert:%0a%3c %0a---%0a> Because we're running in a VM, Disable busy-waiting and time correction. Edit @@~/.vm.args@@, insert:%0a> %0a40a41,43%0a> +sbwt none%0a> +sbwtdcpu none%0a> +sbwtdio none%0a
+host:1669573545=182.1.1.33
+author:1669573172=Yonle
+diff:1669573172:1669573141:=38d37%0a%3c %0a45d43%0a%3c %0a49d46%0a%3c %0a54d50%0a%3c %0a
+host:1669573172=182.1.1.33
+author:1669573141=Yonle
+diff:1669573141:1669573099:=44,45c44%0a%3c Then save it.%0a%3c %0a---%0a> %0a51d49%0a%3c Then save it.%0a
+host:1669573141=182.1.1.33
+author:1669573099=Yonle
+diff:1669573099:1669572853:=37c37%0a%3c Because we're running in a VM, Disable busy-waiting and time correction. Edit @@~/.vm.args@@, insert:%0a---%0a> Then clone the repository by doing:%0a39,42c39%0a%3c +c false%0a%3c +sbwt none%0a%3c +sbwtdcpu none%0a%3c +sbwtdio none%0a---%0a> $ git clone https://akkoma.dev/AkkomaGang/akkoma.git%0a45c42,45%0a%3c Edit @@~/.profile@@, Then add this to the bottom of file:%0a---%0a> Akkoma is now installed in @@/home/_akkoma/akkoma/@@, it will be configured and started at the end of this guide.%0a> %0a> !! Setting up the database: postgresql%0a> Start a shell as the _postgresql user. As root, run%0a47,48c47%0a%3c export LC_ALL=en_US.UTF-8%0a%3c alias mix="elixir --erl \"-args_file $HOME/.vm.args\" -S $(command -v mix)"%0a---%0a> # su -l _postgresql%0a51c50,51%0a%3c Then clone the repository by doing:%0a---%0a> Then run the initdb command to initialize postgresql. You will need to specify pgdata directory to the default (@@/var/postgresql/data@@) with the @@-D %3cpath>@@ and set the user to postgres with the @@-U %3cusername>@@ flag. This can be done as follows:%0a> %0a53c53%0a%3c $ git clone https://akkoma.dev/AkkomaGang/akkoma.git%0a---%0a> # initdb -D /var/postgresql/data -U postgres%0a56,59c56,59%0a%3c Akkoma is now installed in @@/home/_akkoma/akkoma/@@, it will be configured and started at the end of this guide.%0a%3c %0a%3c !! Setting up the database: postgresql%0a%3c Start a shell as the _postgresql user. As root, run%0a---%0a> If you are not using the default directory, you will have to update the @@datadir@@ variable in the @@/etc/rc.d/postgresql@@ script.%0a> %0a> %0a> When this is done, enable postgresql so that it starts on boot and start it. As root, run:%0a61c61,62%0a%3c # su -l _postgresql%0a---%0a> # rcctl enable postgresql%0a> # rcctl start postgresql%0a64,65c65,75%0a%3c Then run the initdb command to initialize postgresql. You will need to specify pgdata directory to the default (@@/var/postgresql/data@@) with the @@-D %3cpath>@@ and set the user to postgres with the @@-U %3cusername>@@ flag. This can be done as follows:%0a%3c %0a---%0a> To check that it started properly and didn't fail right after starting, you can run @@ps aux | grep postgres@@, there should be multiple lines of output.%0a> %0a> !! Configuring httpd%0a> httpd will have three fuctions:%0a> %0a> # Redirect requests trying to reach the instance over http to the https URL%0a> # Serve a robots.txt file%0a> # Get Let's Encrypt certificates, with acme-client%0a> %0a> Insert the following config in httpd.conf:%0a> %0a67c77,97%0a%3c # initdb -D /var/postgresql/data -U postgres%0a---%0a> # $OpenBSD: httpd.conf,v 1.17 2017/04/16 08:50:49 ajacoutot Exp $%0a> %0a> ext_inet="%3cIPv4 address>"%0a> ext_inet6="%3cIPv6 address>"%0a> %0a> server "default" {%0a>     listen on $ext_inet port 80 # Comment to disable listening on IPv4%0a>     listen on $ext_inet6 port 80 # Comment to disable listening on IPv6%0a>     listen on 127.0.0.1 port 80 # Do NOT comment this line%0a> %0a>     log syslog%0a>     directory no index%0a> %0a>     location "/.well-known/acme-challenge/*" {%0a>         root "/acme"%0a>         request strip 2%0a>     }%0a> %0a>     location "/robots.txt" { root "/htdocs/" }%0a>     location "/*" { block return 302 "https://$HTTP_HOST$REQUEST_URI" }%0a> }%0a70,73c100,102%0a%3c If you are not using the default directory, you will have to update the @@datadir@@ variable in the @@/etc/rc.d/postgresql@@ script.%0a%3c %0a%3c %0a%3c When this is done, enable postgresql so that it starts on boot and start it. As root, run:%0a---%0a> Do not forget to change @@%3cIPv4/6 address>@@ to your server's address(es). If httpd should only listen on one protocol family, comment one of the two first listen options.%0a> %0a> Write the content of your @@robots.txt@@ in @@/var/www/htdocs/robots.txt@@:%0a75,76c104,105%0a%3c # rcctl enable postgresql%0a%3c # rcctl start postgresql%0a---%0a> User-Agent: *%0a> Disallow:%0a79,89c108%0a%3c To check that it started properly and didn't fail right after starting, you can run @@ps aux | grep postgres@@, there should be multiple lines of output.%0a%3c %0a%3c !! Configuring httpd%0a%3c httpd will have three fuctions:%0a%3c %0a%3c # Redirect requests trying to reach the instance over http to the https URL%0a%3c # Serve a robots.txt file%0a%3c # Get Let's Encrypt certificates, with acme-client%0a%3c %0a%3c Insert the following config in httpd.conf:%0a%3c %0a---%0a> Check the httpd configuration%0a91,92c110,127%0a%3c # $OpenBSD: httpd.conf,v 1.17 2017/04/16 08:50:49 ajacoutot Exp $%0a%3c %0a---%0a> # httpd -n%0a> @]%0a> %0a> If it's OK, enable and start httpd%0a> [@%0a> # rcctl enable httpd%0a> # rcctl start httpd%0a> @]%0a> %0a> !! acme-client%0a> See https://wiki.ircnow.org/index.php?n=Acme-client.Configure%0a> %0a> !! Configuring relayd%0a> relayd will be used as the reverse proxy sitting in front of akkoma. Insert the following configuration in @@/etc/relayd.conf@@:%0a> %0a> [@%0a> # $OpenBSD: relayd.conf,v 1.4 2018/03/23 09:55:06 claudio Exp $%0a> %0a96,110c131,160%0a%3c server "default" {%0a%3c     listen on $ext_inet port 80 # Comment to disable listening on IPv4%0a%3c     listen on $ext_inet6 port 80 # Comment to disable listening on IPv6%0a%3c     listen on 127.0.0.1 port 80 # Do NOT comment this line%0a%3c %0a%3c     log syslog%0a%3c     directory no index%0a%3c %0a%3c     location "/.well-known/acme-challenge/*" {%0a%3c         root "/acme"%0a%3c         request strip 2%0a%3c     }%0a%3c %0a%3c     location "/robots.txt" { root "/htdocs/" }%0a%3c     location "/*" { block return 302 "https://$HTTP_HOST$REQUEST_URI" }%0a---%0a> table %3cakkoma_server> { 127.0.0.1 }%0a> table %3chttpd_server> { 127.0.0.1 }%0a> %0a> http protocol plerup { # Protocol for upstream akkoma server%0a>     #tcp { nodelay, sack, socket buffer 65536, backlog 128 } # Uncomment and adjust as you see fit%0a>     tls { keypair fedi.example.com }%0a> %0a>     # Forward some paths to the local server (as akkoma won't respond to them as you might want)%0a>     pass request quick path "/robots.txt" forward to %3chttpd_server>%0a> %0a>     # Append a bunch of headers%0a>     match request header append "X-Forwarded-For" value "$REMOTE_ADDR" # This two header and the next one are not strictly required by akkoma but adding them won't hurt%0a>     match request header append "X-Forwarded-By" value "$SERVER_ADDR:$SERVER_PORT"%0a> %0a>     match response header append "X-XSS-Protection" value "1; mode=block"%0a>     match response header append "X-Permitted-Cross-Domain-Policies" value "none"%0a>     match response header append "X-Frame-Options" value "DENY"%0a>     match response header append "X-Content-Type-Options" value "nosniff"%0a>     match response header append "Referrer-Policy" value "same-origin"%0a>     match response header append "X-Download-Options" value "noopen"%0a>     match response header append "Content-Security-Policy" value "default-src 'none'; base-uri 'self'; form-action 'self'; img-src 'self' data: https:; media-src 'self' https:; style-src 'self' 'unsafe-inline'; font-src 'self'; script-src 'self'; connect-src 'self' wss://CHANGEME.tld; upgrade-insecure-requests;" # Modify "CHANGEME.tld" and set your instance's domain here%0a>     match request header append "Connection" value "upgrade"%0a>     #match response header append "Strict-Transport-Security" value "max-age=31536000; includeSubDomains" # Uncomment this only after you get HTTPS working.%0a> %0a>     # If you do not want remote frontends to be able to access your Akkoma backend server, comment these lines%0a>     match response header append "Access-Control-Allow-Origin" value "*"%0a>     match response header append "Access-Control-Allow-Methods" value "POST, PUT, DELETE, GET, PATCH, OPTIONS"%0a>     match response header append "Access-Control-Allow-Headers" value "Authorization, Content-Type, Idempotency-Key"%0a>     match response header append "Access-Control-Expose-Headers" value "Link, X-RateLimit-Reset, X-RateLimit-Limit, X-RateLimit-Remaining, X-Request-Id"%0a>     # Stop commenting lines here%0a111a162,179%0a> %0a> relay www {%0a>     listen on $ext_inet port https tls # Comment to disable listening on IPv4%0a> %0a>     protocol plerup%0a> %0a>     forward to %3cakkoma_server> port 4000 check http "/" code 200%0a>     forward to %3chttpd_server> port 80 check http "/robots.txt" code 200%0a> }%0a> %0a> relay www6 {%0a>     listen on $ext_inet6 port https tls # Comment to disable listening on IPv6%0a> %0a>     protocol plerup%0a> %0a>     forward to %3cakkoma_server> port 4000 check http "/" code 200%0a>     forward to %3chttpd_server> port 80 check http "/robots.txt" code 200%0a> }%0a114,116c182,186%0a%3c Do not forget to change @@%3cIPv4/6 address>@@ to your server's address(es). If httpd should only listen on one protocol family, comment one of the two first listen options.%0a%3c %0a%3c Write the content of your @@robots.txt@@ in @@/var/www/htdocs/robots.txt@@:%0a---%0a> Change @@fedi.example.com@@ with your instance domain.%0a> %0a> Again, change @@%3cIPv4 address>@@ and @@%3cIPv6 address>@@ to your server's address(es) and comment one of the two listen options if needed. Also change @@wss://CHANGEME.tld@@ to @@wss://%3cyour instance's domain name>@@.%0a> %0a> Check the configuration with @@relayd -n@@, if it is OK enable and start relayd (as root):%0a118,119c188,189%0a%3c User-Agent: *%0a%3c Disallow:%0a---%0a> # rcctl enable relayd%0a> # rcctl start relayd%0a122c192,194%0a%3c Check the httpd configuration%0a---%0a> !! Configuring pf%0a> Enabling and configuring pf is highly recommended. In @@/etc/pf.conf@@, insert the following configuration:%0a> %0a124c196,216%0a%3c # httpd -n%0a---%0a> # Macros%0a> if="%3cnetwork interface>"%0a> authorized_ssh_clients="any"%0a> %0a> # Skip traffic on loopback interface%0a> set skip on lo%0a> %0a> # Default behavior%0a> set block-policy drop%0a> block in log all%0a> pass out quick%0a> %0a> # Security features%0a> match in all scrub (no-df random-id)%0a> block in log from urpf-failed%0a> %0a> # Rules%0a> pass in quick on $if inet proto icmp to ($if) icmp-type { echoreq unreach paramprob trace } # ICMP%0a> pass in quick on $if inet6 proto icmp6 to ($if) icmp6-type { echoreq unreach paramprob timex toobig } # ICMPv6%0a> pass in quick on $if proto tcp to ($if) port { http https } # relayd/httpd%0a> pass in quick on $if proto tcp from $authorized_ssh_clients to ($if) port ssh%0a127c219,225%0a%3c If it's OK, enable and start httpd%0a---%0a> Replace @@%3cnetwork interface>@@ by your server's network interface name (which you can get with ifconfig). Consider replacing the content of the @@authorized_ssh_clients@@ macro by, for example, your home IP address, to avoid SSH connection attempts from bots.%0a> %0a> Check pf's configuration by running @@pfctl -nf /etc/pf.conf@@, load it with @@pfctl -f /etc/pf.conf@@ and enable pf at boot with @@rcctl enable pf@@.%0a> %0a> %0a> !! Configuring and starting akkoma%0a> Enter a shell as _akkoma (as root do @@su -l _akkoma@@) and enter akkoma's installation directory:%0a129,130c227%0a%3c # rcctl enable httpd%0a%3c # rcctl start httpd%0a---%0a> $ cd ~/akkoma%0a133,138c230%0a%3c !! acme-client%0a%3c See https://wiki.ircnow.org/index.php?n=Acme-client.Configure%0a%3c %0a%3c !! Configuring relayd%0a%3c relayd will be used as the reverse proxy sitting in front of akkoma. Insert the following configuration in @@/etc/relayd.conf@@:%0a%3c %0a---%0a> Because we're running in a VM, Disable busy-waiting and time correction. Edit @@config/vm.args@@, insert:%0a140,193c232,235%0a%3c # $OpenBSD: relayd.conf,v 1.4 2018/03/23 09:55:06 claudio Exp $%0a%3c %0a%3c ext_inet="%3cIPv4 address>"%0a%3c ext_inet6="%3cIPv6 address>"%0a%3c %0a%3c table %3cakkoma_server> { 127.0.0.1 }%0a%3c table %3chttpd_server> { 127.0.0.1 }%0a%3c %0a%3c http protocol plerup { # Protocol for upstream akkoma server%0a%3c     #tcp { nodelay, sack, socket buffer 65536, backlog 128 } # Uncomment and adjust as you see fit%0a%3c     tls { keypair fedi.example.com }%0a%3c %0a%3c     # Forward some paths to the local server (as akkoma won't respond to them as you might want)%0a%3c     pass request quick path "/robots.txt" forward to %3chttpd_server>%0a%3c %0a%3c     # Append a bunch of headers%0a%3c     match request header append "X-Forwarded-For" value "$REMOTE_ADDR" # This two header and the next one are not strictly required by akkoma but adding them won't hurt%0a%3c     match request header append "X-Forwarded-By" value "$SERVER_ADDR:$SERVER_PORT"%0a%3c %0a%3c     match response header append "X-XSS-Protection" value "1; mode=block"%0a%3c     match response header append "X-Permitted-Cross-Domain-Policies" value "none"%0a%3c     match response header append "X-Frame-Options" value "DENY"%0a%3c     match response header append "X-Content-Type-Options" value "nosniff"%0a%3c     match response header append "Referrer-Policy" value "same-origin"%0a%3c     match response header append "X-Download-Options" value "noopen"%0a%3c     match response header append "Content-Security-Policy" value "default-src 'none'; base-uri 'self'; form-action 'self'; img-src 'self' data: https:; media-src 'self' https:; style-src 'self' 'unsafe-inline'; font-src 'self'; script-src 'self'; connect-src 'self' wss://CHANGEME.tld; upgrade-insecure-requests;" # Modify "CHANGEME.tld" and set your instance's domain here%0a%3c     match request header append "Connection" value "upgrade"%0a%3c     #match response header append "Strict-Transport-Security" value "max-age=31536000; includeSubDomains" # Uncomment this only after you get HTTPS working.%0a%3c %0a%3c     # If you do not want remote frontends to be able to access your Akkoma backend server, comment these lines%0a%3c     match response header append "Access-Control-Allow-Origin" value "*"%0a%3c     match response header append "Access-Control-Allow-Methods" value "POST, PUT, DELETE, GET, PATCH, OPTIONS"%0a%3c     match response header append "Access-Control-Allow-Headers" value "Authorization, Content-Type, Idempotency-Key"%0a%3c     match response header append "Access-Control-Expose-Headers" value "Link, X-RateLimit-Reset, X-RateLimit-Limit, X-RateLimit-Remaining, X-Request-Id"%0a%3c     # Stop commenting lines here%0a%3c }%0a%3c %0a%3c relay www {%0a%3c     listen on $ext_inet port https tls # Comment to disable listening on IPv4%0a%3c %0a%3c     protocol plerup%0a%3c %0a%3c     forward to %3cakkoma_server> port 4000 check http "/" code 200%0a%3c     forward to %3chttpd_server> port 80 check http "/robots.txt" code 200%0a%3c }%0a%3c %0a%3c relay www6 {%0a%3c     listen on $ext_inet6 port https tls # Comment to disable listening on IPv6%0a%3c %0a%3c     protocol plerup%0a%3c %0a%3c     forward to %3cakkoma_server> port 4000 check http "/" code 200%0a%3c     forward to %3chttpd_server> port 80 check http "/robots.txt" code 200%0a%3c }%0a---%0a> +c false%0a> +sbwt none%0a> +sbwtdcpu none%0a> +sbwtdio none%0a196,200c238%0a%3c Change @@fedi.example.com@@ with your instance domain.%0a%3c %0a%3c Again, change @@%3cIPv4 address>@@ and @@%3cIPv6 address>@@ to your server's address(es) and comment one of the two listen options if needed. Also change @@wss://CHANGEME.tld@@ to @@wss://%3cyour instance's domain name>@@.%0a%3c %0a%3c Check the configuration with @@relayd -n@@, if it is OK enable and start relayd (as root):%0a---%0a> Then set alias:%0a202,203c240%0a%3c # rcctl enable relayd%0a%3c # rcctl start relayd%0a---%0a> $ alias mix="elixir --erl \"-args_file $HOME/akkoma/config/vm.args\" -S $(command -v mix)"%0a206,208c243%0a%3c !! Configuring pf%0a%3c Enabling and configuring pf is highly recommended. In @@/etc/pf.conf@@, insert the following configuration:%0a%3c %0a---%0a> You may need to set this alias everytime you login. Edit @@~/.profile@@, Then add this to the bottom of file:%0a210,230c245%0a%3c # Macros%0a%3c if="%3cnetwork interface>"%0a%3c authorized_ssh_clients="any"%0a%3c %0a%3c # Skip traffic on loopback interface%0a%3c set skip on lo%0a%3c %0a%3c # Default behavior%0a%3c set block-policy drop%0a%3c block in log all%0a%3c pass out quick%0a%3c %0a%3c # Security features%0a%3c match in all scrub (no-df random-id)%0a%3c block in log from urpf-failed%0a%3c %0a%3c # Rules%0a%3c pass in quick on $if inet proto icmp to ($if) icmp-type { echoreq unreach paramprob trace } # ICMP%0a%3c pass in quick on $if inet6 proto icmp6 to ($if) icmp6-type { echoreq unreach paramprob timex toobig } # ICMPv6%0a%3c pass in quick on $if proto tcp to ($if) port { http https } # relayd/httpd%0a%3c pass in quick on $if proto tcp from $authorized_ssh_clients to ($if) port ssh%0a---%0a> alias mix="elixir --erl \"-args_file $HOME/akkoma/config/vm.args\" -S $(command -v mix)"%0a233,239c248%0a%3c Replace @@%3cnetwork interface>@@ by your server's network interface name (which you can get with ifconfig). Consider replacing the content of the @@authorized_ssh_clients@@ macro by, for example, your home IP address, to avoid SSH connection attempts from bots.%0a%3c %0a%3c Check pf's configuration by running @@pfctl -nf /etc/pf.conf@@, load it with @@pfctl -f /etc/pf.conf@@ and enable pf at boot with @@rcctl enable pf@@.%0a%3c %0a%3c %0a%3c !! Configuring and starting akkoma%0a%3c Enter a shell as _akkoma (as root do @@su -l _akkoma@@) and enter akkoma's installation directory:%0a---%0a> Set localization as UTF by doing this:%0a241c250%0a%3c $ cd ~/akkoma%0a---%0a> $ export LC_ALL=en_US.UTF-8%0a243a253,256%0a> You may also need to set @@LC_ALL@@ everytime you login.%0a> [@%0a> $ echo "export LC_ALL=en_US.UTF-8" >> ~/.profile%0a> @]%0a
+host:1669573099=182.1.1.33
+author:1669572853=Yonle
+diff:1669572853:1669572811:=238,239c238,239%0a%3c Then set alias:%0a%3c [@%0a---%0a> Then set alias.%0a> ```%0a241c241%0a%3c @]%0a---%0a> ```%0a
+host:1669572853=182.1.1.33
+author:1669572811=Yonle
+csum:1669572811=Prevent time correction.
+diff:1669572811:1669572291:=238,243c238%0a%3c Then set alias.%0a%3c ```%0a%3c $ alias mix="elixir --erl \"-args_file $HOME/akkoma/config/vm.args\" -S $(command -v mix)"%0a%3c ```%0a%3c %0a%3c You may need to set this alias everytime you login. Edit @@~/.profile@@, Then add this to the bottom of file:%0a---%0a> Set localization as UTF by doing this:%0a245c240%0a%3c alias mix="elixir --erl \"-args_file $HOME/akkoma/config/vm.args\" -S $(command -v mix)"%0a---%0a> $ export LC_ALL=en_US.UTF-8%0a248c243%0a%3c Set localization as UTF by doing this:%0a---%0a> You may need to set @@LC_ALL@@ everytime you login.%0a250c245%0a%3c $ export LC_ALL=en_US.UTF-8%0a---%0a> $ echo "export LC_ALL=en_US.UTF-8" >> ~/.profile%0a253c248%0a%3c You may also need to set @@LC_ALL@@ everytime you login.%0a---%0a> Now, Run the following command:%0a255c250%0a%3c $ echo "export LC_ALL=en_US.UTF-8" >> ~/.profile%0a---%0a> $ mix deps.get%0a258c253,255%0a%3c Now, Run the following command:%0a---%0a> When asked to install Hex dependencies, Press @@Y@@ then @@RETURN@@/Enter.%0a> %0a> Once dependencies succesfully retrieved, Run%0a260c257%0a%3c $ mix deps.get%0a---%0a> $ MIX_PROD=prod mix pleroma.instance gen%0a263,265c260,262%0a%3c When asked to install Hex dependencies, Press @@Y@@ then @@RETURN@@/Enter.%0a%3c %0a%3c Once dependencies succesfully retrieved, Run%0a---%0a> When asked to install @@rebar3@@, Press @@Y@@ then @@RETURN@@/Enter.%0a> %0a> In the middle of compilation, You may get this:%0a267c264,267%0a%3c $ MIX_PROD=prod mix pleroma.instance gen%0a---%0a> Monotonic time stepped backwards!%0a> Previous time: 26452xxxxx%0a> Current time : 26472xxxxx%0a> Abort trap (core dumped)%0a270,273c270%0a%3c When asked to install @@rebar3@@, Press @@Y@@ then @@RETURN@@/Enter, and enter your instance information when asked.%0a%3c %0a%3c %0a%3c Copy @@config/generated_config.exs@@ to @@config/prod.secret.exs@@. The default values should be sufficient but you should edit it and check that everything seems OK.%0a---%0a> To fix this, Just reexecute the same command multiple times until some dependencies succesfully compiled by doing this:%0a275c272%0a%3c $ cp config/generated_config.exs config/prod.secret.exs%0a---%0a> $ while [ "$?" != "0" ]; do MIX_PROD=prod mix pleroma.instance gen; done%0a278c275,278%0a%3c Exit your current shell back to root one and run the following command to set up database:%0a---%0a> And enter your instance's information when asked.%0a> %0a> %0a> Copy @@config/generated_config.exs@@ to @@config/prod.secret.exs@@. The default values should be sufficient but you should edit it and check that everything seems OK.%0a280c280%0a%3c # psql -U postgres -f /home/_akkoma/akkoma/config/setup_db.psql%0a---%0a> $ cp config/generated_config.exs config/prod.secret.exs%0a283c283%0a%3c Return to _akkoma shell into akkoma's installation directory (@@su -l _akkoma;cd ~/akkoma@@) and run%0a---%0a> Exit your current shell back to root one and run the following command to set up database:%0a285c285%0a%3c $ MIX_ENV=prod mix ecto.migrate%0a---%0a> # psql -U postgres -f /home/_akkoma/akkoma/config/setup_db.psql%0a287a288,304%0a> Return to _akkoma shell into akkoma's installation directory (@@su -l _akkoma;cd ~/akkoma@@) and run%0a> [@%0a> $ MIX_ENV=prod mix ecto.migrate%0a> @]%0a> %0a> Again, In the middle of compilation, You may get this again:%0a> [@%0a> Monotonic time stepped backwards!%0a> Previous time: 26452xxxxx%0a> Current time : 26472xxxxx%0a> Abort trap (core dumped)%0a> @]%0a> %0a> To fix this, Just reexecute the same command multiple times until some dependencies succesfully compiled by doing this:%0a> [@%0a> $ while [ "$?" != "0" ]; do MIX_PROD=prod mix ecto.migrate; done%0a> @]%0a
+host:1669572811=182.1.1.33
+author:1669572291=Yonle
+diff:1669572291:1669570818:=230c230%0a%3c Because we're running in a VM, Disable busy-waiting and time correction. Edit @@config/vm.args@@, insert:%0a---%0a> Because we're running in a VM, Disable busy-waiting. Edit @@config/vm.args@@, insert:%0a232d231%0a%3c +c false%0a
+host:1669572291=182.1.1.33
+author:1669570818=Yonle
+diff:1669570818:1669449925:=223,224c223%0a%3c %0a%3c !! Configuring and starting akkoma%0a---%0a> !! Configuring and starting Akkoma%0a230c229%0a%3c Because we're running in a VM, Disable busy-waiting. Edit @@config/vm.args@@, insert:%0a---%0a> Set localization as UTF by doing this:%0a232,234c231%0a%3c +sbwt none%0a%3c +sbwtdcpu none%0a%3c +sbwtdio none%0a---%0a> $ export LC_ALL=en_US.UTF-8%0a237c234%0a%3c Set localization as UTF by doing this:%0a---%0a> You may need to set @@LC_ALL@@ everytime you login.%0a239c236%0a%3c $ export LC_ALL=en_US.UTF-8%0a---%0a> $ echo "export LC_ALL=en_US.UTF-8" >> ~/.profile%0a242,245d238%0a%3c You may need to set @@LC_ALL@@ everytime you login.%0a%3c [@%0a%3c $ echo "export LC_ALL=en_US.UTF-8" >> ~/.profile%0a%3c @]%0a
+host:1669570818=103.180.125.250
+author:1669449925=Yonle
+diff:1669449925:1669449867:=1c1%0a%3c (:title Akkoma:)%0a---%0a> (:title Akkoma)%0a
+host:1669449925=51.159.105.252
+author:1669449867=Yonle
+diff:1669449867:1669446282:=1d0%0a%3c (:title Akkoma)%0a
+host:1669449867=51.159.105.252
+author:1669446282=Yonle
+diff:1669446282:1669433252:=8c8%0a%3c # pkg_add elixir gmake git postgresql-server postgresql-contrib cmake ffmpeg ImageMagick p5-Image-ExifTool libmagic erlang-wx-25.0.4%0a---%0a> # pkg_add elixir gmake git postgresql-server postgresql-contrib cmake ffmpeg ImageMagick libmagic erlang-wx-25.0.4%0a
+host:1669446282=114.125.13.81
+author:1669433252=Yonle
+diff:1669433252:1669433144:=279c279%0a%3c Return to _akkoma shell into akkoma's installation directory (@@su -l _akkoma;cd ~/akkoma@@) and run%0a---%0a> Return to a _akkoma shell into akkoma's installation directory (@@su -l _akkoma;cd ~/akkoma@@) and run%0a
+host:1669433252=51.159.107.181
+author:1669433144=Yonle
+diff:1669433144:1669433068:=222c222%0a%3c !! Configuring and starting Akkoma%0a---%0a> !! Configuring Akkoma and start akkoma%0a
+host:1669433144=51.159.107.181
+author:1669433068=Yonle
+diff:1669433068:1669423429:=101c101%0a%3c Write the content of your @@robots.txt@@ in @@/var/www/htdocs/robots.txt@@:%0a---%0a> Write the content of your @@robots.txt@@ in @@/var/www/htdocs/local/robots.txt@@:%0a
+host:1669433068=51.159.107.181
+author:1669423429=Yonle
+diff:1669423429:1669422770:=9,13d8%0a%3c @]%0a%3c %0a%3c Symlink @@/usr/local/bin/escript25@@ to @@/usr/local/bin/escript@@%0a%3c [@%0a%3c # ln -s /usr/local/bin/escript25 /usr/local/bin/escript%0a
+host:1669423429=51.159.107.181
+author:1669422770=Yonle
+diff:1669422770:1669422530:=308,326d307%0a%3c @]%0a%3c %0a%3c !! Create administrative user%0a%3c If your instance is up and running, you can create your first user with administrative rights with the following command as the @@_akkoma@@ user.%0a%3c %0a%3c [@%0a%3c $ MIX_ENV=prod mix pleroma.user new %3cusername> %3cyour@emailaddress> --admin%0a%3c @]%0a%3c %0a%3c !! Installing Frontends%0a%3c Once your backend server is functional, you'll also want to probably install frontends.%0a%3c %0a%3c These are no longer bundled with the distribution and need an extra command to install.%0a%3c %0a%3c For most installations, the following will suffice:%0a%3c [@%0a%3c $ export MIX_ENV=prod%0a%3c $ mix pleroma.frontend install pleroma-fe --ref stable%0a%3c $ mix pleroma.frontend install admin-fe --ref stable%0a
+host:1669422770=182.1.45.201
+author:1669422530=Yonle
+diff:1669422530:1669420885:=176,177d175%0a%3c Change @@fedi.example.com@@ with your instance domain.%0a%3c %0a215,308c213%0a%3c Check pf's configuration by running @@pfctl -nf /etc/pf.conf@@, load it with @@pfctl -f /etc/pf.conf@@ and enable pf at boot with @@rcctl enable pf@@.%0a%3c %0a%3c !! Configuring Akkoma and start akkoma%0a%3c Enter a shell as _akkoma (as root do @@su -l _akkoma@@) and enter akkoma's installation directory:%0a%3c [@%0a%3c $ cd ~/akkoma%0a%3c @]%0a%3c %0a%3c Set localization as UTF by doing this:%0a%3c [@%0a%3c $ export LC_ALL=en_US.UTF-8%0a%3c @]%0a%3c %0a%3c You may need to set @@LC_ALL@@ everytime you login.%0a%3c [@%0a%3c $ echo "export LC_ALL=en_US.UTF-8" >> ~/.profile%0a%3c @]%0a%3c %0a%3c %0a%3c Now, Run the following command:%0a%3c [@%0a%3c $ mix deps.get%0a%3c @]%0a%3c %0a%3c When asked to install Hex dependencies, Press @@Y@@ then @@RETURN@@/Enter.%0a%3c %0a%3c Once dependencies succesfully retrieved, Run%0a%3c [@%0a%3c $ MIX_PROD=prod mix pleroma.instance gen%0a%3c @]%0a%3c %0a%3c When asked to install @@rebar3@@, Press @@Y@@ then @@RETURN@@/Enter.%0a%3c %0a%3c In the middle of compilation, You may get this:%0a%3c [@%0a%3c Monotonic time stepped backwards!%0a%3c Previous time: 26452xxxxx%0a%3c Current time : 26472xxxxx%0a%3c Abort trap (core dumped)%0a%3c @]%0a%3c %0a%3c To fix this, Just reexecute the same command multiple times until some dependencies succesfully compiled by doing this:%0a%3c [@%0a%3c $ while [ "$?" != "0" ]; do MIX_PROD=prod mix pleroma.instance gen; done%0a%3c @]%0a%3c %0a%3c And enter your instance's information when asked.%0a%3c %0a%3c %0a%3c Copy @@config/generated_config.exs@@ to @@config/prod.secret.exs@@. The default values should be sufficient but you should edit it and check that everything seems OK.%0a%3c [@%0a%3c $ cp config/generated_config.exs config/prod.secret.exs%0a%3c @]%0a%3c %0a%3c Exit your current shell back to root one and run the following command to set up database:%0a%3c [@%0a%3c # psql -U postgres -f /home/_akkoma/akkoma/config/setup_db.psql%0a%3c @]%0a%3c %0a%3c Return to a _akkoma shell into akkoma's installation directory (@@su -l _akkoma;cd ~/akkoma@@) and run%0a%3c [@%0a%3c $ MIX_ENV=prod mix ecto.migrate%0a%3c @]%0a%3c %0a%3c Again, In the middle of compilation, You may get this again:%0a%3c [@%0a%3c Monotonic time stepped backwards!%0a%3c Previous time: 26452xxxxx%0a%3c Current time : 26472xxxxx%0a%3c Abort trap (core dumped)%0a%3c @]%0a%3c %0a%3c To fix this, Just reexecute the same command multiple times until some dependencies succesfully compiled by doing this:%0a%3c [@%0a%3c $ while [ "$?" != "0" ]; do MIX_PROD=prod mix ecto.migrate; done%0a%3c @]%0a%3c %0a%3c As @@_akkoma@@ in @@/home/_akkoma/akkoma@@, You can now run the following command to start your instance:%0a%3c [@%0a%3c $ MIX_ENV=prod mix phx.server%0a%3c @]%0a%3c %0a%3c In another SSH session/tmux window, check that it is working properly by running @@ftp -MVo - http://127.0.0.1:4000/api/v1/instance@@, you should get json output. Double-check that uri's value is your instance's domain name.%0a%3c %0a%3c !! Starting akkoma at boot%0a%3c As @@_akkoma@@, Edit crontab by doing this:%0a%3c [@%0a%3c $ crontab -e%0a%3c @]%0a%3c %0a%3c Then insert this:%0a%3c [@%0a%3c @reboot tmux new -d "cd ~/akkoma; while true; do LC_ALL=en_US.UTF-8 MIX_ENV=prod mix phx.server; done"%0a%3c @]%0a\ No newline at end of file%0a---%0a> Check pf's configuration by running @@pfctl -nf /etc/pf.conf@@, load it with @@pfctl -f /etc/pf.conf@@ and enable pf at boot with @@rcctl enable pf@@.%0a\ No newline at end of file%0a
+host:1669422530=182.1.45.201
+author:1669420885=Yonle
+diff:1669420885:1669419596:=157c157%0a%3c relay www {%0a---%0a> relay wwwtls {%0a159c159,160%0a%3c %0a---%0a>     listen on $ext_inet6 port https tls # Comment to disable listening on IPv6%0a> %0a165,173d165%0a%3c %0a%3c relay www6 {%0a%3c     listen on $ext_inet6 port https tls # Comment to disable listening on IPv6%0a%3c %0a%3c     protocol plerup%0a%3c %0a%3c     forward to %3cakkoma_server> port 4000 check http "/" code 200%0a%3c     forward to %3chttpd_server> port 80 check http "/robots.txt" code 200%0a%3c }%0a176,213c168%0a%3c Again, change @@%3cIPv4 address>@@ and @@%3cIPv6 address>@@ to your server's address(es) and comment one of the two listen options if needed. Also change @@wss://CHANGEME.tld@@ to @@wss://%3cyour instance's domain name>@@.%0a%3c %0a%3c Check the configuration with @@relayd -n@@, if it is OK enable and start relayd (as root):%0a%3c [@%0a%3c # rcctl enable relayd%0a%3c # rcctl start relayd%0a%3c @]%0a%3c %0a%3c !! Configuring pf%0a%3c Enabling and configuring pf is highly recommended. In @@/etc/pf.conf@@, insert the following configuration:%0a%3c %0a%3c [@%0a%3c # Macros%0a%3c if="%3cnetwork interface>"%0a%3c authorized_ssh_clients="any"%0a%3c %0a%3c # Skip traffic on loopback interface%0a%3c set skip on lo%0a%3c %0a%3c # Default behavior%0a%3c set block-policy drop%0a%3c block in log all%0a%3c pass out quick%0a%3c %0a%3c # Security features%0a%3c match in all scrub (no-df random-id)%0a%3c block in log from urpf-failed%0a%3c %0a%3c # Rules%0a%3c pass in quick on $if inet proto icmp to ($if) icmp-type { echoreq unreach paramprob trace } # ICMP%0a%3c pass in quick on $if inet6 proto icmp6 to ($if) icmp6-type { echoreq unreach paramprob timex toobig } # ICMPv6%0a%3c pass in quick on $if proto tcp to ($if) port { http https } # relayd/httpd%0a%3c pass in quick on $if proto tcp from $authorized_ssh_clients to ($if) port ssh%0a%3c @]%0a%3c %0a%3c Replace @@%3cnetwork interface>@@ by your server's network interface name (which you can get with ifconfig). Consider replacing the content of the @@authorized_ssh_clients@@ macro by, for example, your home IP address, to avoid SSH connection attempts from bots.%0a%3c %0a%3c Check pf's configuration by running @@pfctl -nf /etc/pf.conf@@, load it with @@pfctl -f /etc/pf.conf@@ and enable pf at boot with @@rcctl enable pf@@.%0a\ No newline at end of file%0a---%0a> Again, change @@%3cIPv4 address>@@ and @@%3cIPv6 address>@@ to your server's address(es) and comment one of the two listen options if needed. Also change wss://CHANGEME.tld to wss://%3cyour instance's domain name>. Check the configuration with relayd -n, if it is OK enable and start relayd (as root):%0a\ No newline at end of file%0a
+host:1669420885=182.1.45.201
+author:1669419596=Yonle
+diff:1669419596:1669393923:=25a26%0a> !! Setting up%0a61,168d61%0a%3c !! Configuring httpd%0a%3c httpd will have three fuctions:%0a%3c %0a%3c # Redirect requests trying to reach the instance over http to the https URL%0a%3c # Serve a robots.txt file%0a%3c # Get Let's Encrypt certificates, with acme-client%0a%3c %0a%3c Insert the following config in httpd.conf:%0a%3c %0a%3c [@%0a%3c # $OpenBSD: httpd.conf,v 1.17 2017/04/16 08:50:49 ajacoutot Exp $%0a%3c %0a%3c ext_inet="%3cIPv4 address>"%0a%3c ext_inet6="%3cIPv6 address>"%0a%3c %0a%3c server "default" {%0a%3c     listen on $ext_inet port 80 # Comment to disable listening on IPv4%0a%3c     listen on $ext_inet6 port 80 # Comment to disable listening on IPv6%0a%3c     listen on 127.0.0.1 port 80 # Do NOT comment this line%0a%3c %0a%3c     log syslog%0a%3c     directory no index%0a%3c %0a%3c     location "/.well-known/acme-challenge/*" {%0a%3c         root "/acme"%0a%3c         request strip 2%0a%3c     }%0a%3c %0a%3c     location "/robots.txt" { root "/htdocs/" }%0a%3c     location "/*" { block return 302 "https://$HTTP_HOST$REQUEST_URI" }%0a%3c }%0a%3c @]%0a%3c %0a%3c Do not forget to change @@%3cIPv4/6 address>@@ to your server's address(es). If httpd should only listen on one protocol family, comment one of the two first listen options.%0a%3c %0a%3c Write the content of your @@robots.txt@@ in @@/var/www/htdocs/local/robots.txt@@:%0a%3c [@%0a%3c User-Agent: *%0a%3c Disallow:%0a%3c @]%0a%3c %0a%3c Check the httpd configuration%0a%3c [@%0a%3c # httpd -n%0a%3c @]%0a%3c %0a%3c If it's OK, enable and start httpd%0a%3c [@%0a%3c # rcctl enable httpd%0a%3c # rcctl start httpd%0a%3c @]%0a%3c %0a%3c !! acme-client%0a%3c See https://wiki.ircnow.org/index.php?n=Acme-client.Configure%0a%3c %0a%3c !! Configuring relayd%0a%3c relayd will be used as the reverse proxy sitting in front of akkoma. Insert the following configuration in @@/etc/relayd.conf@@:%0a%3c %0a%3c [@%0a%3c # $OpenBSD: relayd.conf,v 1.4 2018/03/23 09:55:06 claudio Exp $%0a%3c %0a%3c ext_inet="%3cIPv4 address>"%0a%3c ext_inet6="%3cIPv6 address>"%0a%3c %0a%3c table %3cakkoma_server> { 127.0.0.1 }%0a%3c table %3chttpd_server> { 127.0.0.1 }%0a%3c %0a%3c http protocol plerup { # Protocol for upstream akkoma server%0a%3c     #tcp { nodelay, sack, socket buffer 65536, backlog 128 } # Uncomment and adjust as you see fit%0a%3c     tls { keypair fedi.example.com }%0a%3c %0a%3c     # Forward some paths to the local server (as akkoma won't respond to them as you might want)%0a%3c     pass request quick path "/robots.txt" forward to %3chttpd_server>%0a%3c %0a%3c     # Append a bunch of headers%0a%3c     match request header append "X-Forwarded-For" value "$REMOTE_ADDR" # This two header and the next one are not strictly required by akkoma but adding them won't hurt%0a%3c     match request header append "X-Forwarded-By" value "$SERVER_ADDR:$SERVER_PORT"%0a%3c %0a%3c     match response header append "X-XSS-Protection" value "1; mode=block"%0a%3c     match response header append "X-Permitted-Cross-Domain-Policies" value "none"%0a%3c     match response header append "X-Frame-Options" value "DENY"%0a%3c     match response header append "X-Content-Type-Options" value "nosniff"%0a%3c     match response header append "Referrer-Policy" value "same-origin"%0a%3c     match response header append "X-Download-Options" value "noopen"%0a%3c     match response header append "Content-Security-Policy" value "default-src 'none'; base-uri 'self'; form-action 'self'; img-src 'self' data: https:; media-src 'self' https:; style-src 'self' 'unsafe-inline'; font-src 'self'; script-src 'self'; connect-src 'self' wss://CHANGEME.tld; upgrade-insecure-requests;" # Modify "CHANGEME.tld" and set your instance's domain here%0a%3c     match request header append "Connection" value "upgrade"%0a%3c     #match response header append "Strict-Transport-Security" value "max-age=31536000; includeSubDomains" # Uncomment this only after you get HTTPS working.%0a%3c %0a%3c     # If you do not want remote frontends to be able to access your Akkoma backend server, comment these lines%0a%3c     match response header append "Access-Control-Allow-Origin" value "*"%0a%3c     match response header append "Access-Control-Allow-Methods" value "POST, PUT, DELETE, GET, PATCH, OPTIONS"%0a%3c     match response header append "Access-Control-Allow-Headers" value "Authorization, Content-Type, Idempotency-Key"%0a%3c     match response header append "Access-Control-Expose-Headers" value "Link, X-RateLimit-Reset, X-RateLimit-Limit, X-RateLimit-Remaining, X-Request-Id"%0a%3c     # Stop commenting lines here%0a%3c }%0a%3c %0a%3c relay wwwtls {%0a%3c     listen on $ext_inet port https tls # Comment to disable listening on IPv4%0a%3c     listen on $ext_inet6 port https tls # Comment to disable listening on IPv6%0a%3c %0a%3c     protocol plerup%0a%3c %0a%3c     forward to %3cakkoma_server> port 4000 check http "/" code 200%0a%3c     forward to %3chttpd_server> port 80 check http "/robots.txt" code 200%0a%3c }%0a%3c @]%0a%3c %0a%3c Again, change @@%3cIPv4 address>@@ and @@%3cIPv6 address>@@ to your server's address(es) and comment one of the two listen options if needed. Also change wss://CHANGEME.tld to wss://%3cyour instance's domain name>. Check the configuration with relayd -n, if it is OK enable and start relayd (as root):%0a\ No newline at end of file%0a
+host:1669419596=182.1.45.201
+author:1669393923=Yonle
+diff:1669393923:1669393923:=1,61d0%0a%3c Akkoma is a fork of Pleroma project with additional features added.%0a%3c %0a%3c This guide describes the installation and configuration of akkoma (and the required software to run it) on a single OpenBSD 7.2 server.%0a%3c %0a%3c !! Installation%0a%3c First, We need to install the required dependencies%0a%3c [@%0a%3c # pkg_add elixir gmake git postgresql-server postgresql-contrib cmake ffmpeg ImageMagick libmagic erlang-wx-25.0.4%0a%3c @]%0a%3c %0a%3c Then create @@akkoma@@ user to be run in dedicated user. Before creating it, Edit @@/etc/login.conf@@:%0a%3c [@%0a%3c akkoma:\%0a%3c     :datasize-max=1536M:\%0a%3c     :datasize-cur=1536M:\%0a%3c     :openfiles-max=4096%0a%3c @]%0a%3c %0a%3c This creates a "akkoma" login class and sets higher values than default for datasize and openfiles (see login.conf(5)), this is required to avoid having akkoma crash some time after starting.%0a%3c %0a%3c Create the @@_akkoma@@ user, assign it the akkoma login class and create its home directory (/home/_akkoma/):%0a%3c [@%0a%3c # useradd -m -L akkoma _akkoma%0a%3c @]%0a%3c %0a%3c !! Setting up%0a%3c Enter a shell as the _akkoma user. As root, run%0a%3c [@%0a%3c # su -l _akkoma%0a%3c @]%0a%3c %0a%3c Then clone the repository by doing:%0a%3c [@%0a%3c $ git clone https://akkoma.dev/AkkomaGang/akkoma.git%0a%3c @]%0a%3c %0a%3c Akkoma is now installed in @@/home/_akkoma/akkoma/@@, it will be configured and started at the end of this guide.%0a%3c %0a%3c !! Setting up the database: postgresql%0a%3c Start a shell as the _postgresql user. As root, run%0a%3c [@%0a%3c # su -l _postgresql%0a%3c @]%0a%3c %0a%3c Then run the initdb command to initialize postgresql. You will need to specify pgdata directory to the default (@@/var/postgresql/data@@) with the @@-D %3cpath>@@ and set the user to postgres with the @@-U %3cusername>@@ flag. This can be done as follows:%0a%3c %0a%3c [@%0a%3c # initdb -D /var/postgresql/data -U postgres%0a%3c @]%0a%3c %0a%3c If you are not using the default directory, you will have to update the @@datadir@@ variable in the @@/etc/rc.d/postgresql@@ script.%0a%3c %0a%3c %0a%3c When this is done, enable postgresql so that it starts on boot and start it. As root, run:%0a%3c [@%0a%3c # rcctl enable postgresql%0a%3c # rcctl start postgresql%0a%3c @]%0a%3c %0a%3c To check that it started properly and didn't fail right after starting, you can run @@ps aux | grep postgres@@, there should be multiple lines of output.%0a%3c %0a
+host:1669393923=51.159.107.181
blob - /dev/null
blob + d14ae2073fdca5cdc76bfde584351ccc588d877d (mode 644)
--- /dev/null
+++ wiki.d/Akkoma.RecentChanges
@@ -0,0 +1,9 @@
+version=pmwiki-2.2.130 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36
+charset=UTF-8
+ctime=1669393923
+host=182.1.16.139
+name=Akkoma.RecentChanges
+rev=38
+text=* [[Akkoma/Install]]  . . . February 09, 2023, at 12:49 PM by [[~Yonle]]: [==]%0a
+time=1675946959
blob - /dev/null
blob + bf33166d42fda87f7bde6cd9d806b29052999e08 (mode 644)
--- /dev/null
+++ wiki.d/Almanack.AdvancedMailServerSetup
@@ -0,0 +1,30 @@
+version=pmwiki-2.3.20 ordered=1 urlencoded=1
+agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
+author=SplinTer
+charset=UTF-8
+csum=
+ctime=1731470982
+host=138.43.182.133
+name=Almanack.AdvancedMailServerSetup
+rev=6
+targets=Openbsd.Loginconf,Openbsd.Rcctl,Dns.Overview,Nsd.Configure,DNS.Mail,Opensmtpd.Openrelay,Opensmtpd.Troubleshoot
+text=Let's set up dovecot & smtpd to allow users to read mail with IMAP & lmtp with rspamd spam filter!%0ayou only have two configeration files one for dovecot.conf and one for smtpd.cond!%0a%0a%0a!! Installation%0a%0a[@%0a$ doas pkg_add dovecot opensmtpd-extras opensmtpd-filter-dkimsign-- opensmtpd-filter-dkimsign-0.5p2 opensmtpd-filter-rspamd-0.1.8p0 opensmtpd-filter-senderscore-0.1.2%0a@]%0a%0a!! Configuration%0a%0aA single user vmail will receive mail for all virtual users:%0a%0a[@%0a$ doas useradd -m -g =uid -c "Virtual Mail" -d /var/vmail -s /sbin/nologin vmail%0a@]%0a%0a/var/vmail will be used to store virtual users' maildir folders. It will be managed by%0adovecot, which receives mail via LMTP. other files for smtpd files for /etc/mail/aliases, %0adomains file:/etc/mail/domains, passwd file:/etc/mail/passwd, users file:/etc/mail/users,%0avusers file:/etc/mail/vusers, or hosts file:/etc/mail/hosts! all these's files are located %0ain /etc/mail folder is part of smtpd.conf setup!%0a%0aIn order to secure our passwords, we need to rearrange file permissions and owners:%0a%0a[@%0a$ doas chown -R _dkimsign:_dkimsign /etc/mail/dkim/%0a$ doas chown _smtpd:_dovecot /etc/mail/passwd%0a$ doas chmod 770 /etc/mail/dkim/%0a$ doas chmod 440 /etc/mail/passwd%0a$ doas find /etc/mail ! -path /etc/mail -exec chmod o-rwx '{}' +%0a@]%0a%0aHere is Example /etc/dovecot/dovecot.conf to go by! change your hostname from example to your correct host and ip address's if specified!%0a%0a[@%0aprotocols = imap lmtp%0alisten = 198.251.81.119, 2605:6400:10:5bf::, 127.0.0.1%0a%0aservice lmtp {%0a  user = vmail%0a}%0a%0aservice imap-login {%0a  inet_listener imap {%0a    address = *%0a    port = 143%0a  }%0a  inet_listener imaps {%0a    address = *%0a    port = 993%0a     ssl = yes%0a  }%0a  user = _dovecot%0a  group = _dovecot%0a  executable = /usr/local/libexec/dovecot/imap-login%0a}%0a%0aservice auth {%0a  user = _dovecot%0a  group = _dovecot%0a  executable = /usr/local/libexec/dovecot/auth%0a}%0a%0aservice quota-warning {%0a  executable = script /usr/local/libexec/dovecot/quota-warning.sh%0a  unix_listener quota-warning {%0a  mode = 0600%0a    user = vmail%0a    group = vmail%0a  }%0a}%0a%0aquota_full_tempfail = yes%0assl = yes%0assl_cert = %3c/etc/ssl/mail.examplee.com.crt%0assl_key = %3c/etc/ssl/private/mail.example.com.key%0assl_dh=%3c/etc/dovecot/dhparam.pem%0assl_cipher_list = ALL:!LOW:!SSLv2%0a%0amail_location = maildir:/var/vmail/%25d/%25n/Maildir%0amail_uid = 1024%0amail_gid = 1024%0a%0avalid_chroot_dirs = /var/vmail%0alog_path = /var/log/dovecot.err%0ainfo_log_path = /var/log/dovecot.info%0alog_timestamp = "%25Y-%25m-%25d %25H:%25M:%25S "%0alogin_greeting = Dovecot ready.%0adisable_plaintext_auth = no%0aauth_verbose = yes%0aauth_debug = yes%0aauth_debug_passwords = yes%0amail_debug = yes%0aauth_verbose_passwords=sha1%0averbose_ssl=yes%0a%0a%0apassdb {%0a  driver = passwd-file%0a  args = scheme=blf-crypt /etc/dovecot/users.txt%0a}%0a%0auserdb {%0a   args = uid=vmail gid=vmail home=/var/vmail/%25d/%25n%0a   driver = static%0a}%0a@]%0a%0aThis tells dovecot to listen to the protocols IMAP, and LMTP.%0a'''Note''': We don't want to support pop3 or submission with dovecot.%0a%0aIt also tells dovecot the public IPs you want it to listen on. Finally, the last%0ablock tells dovecot to change to the username vmail to listen for LMTP.%0a%0aWe defines our password database to use blowfish (see [[https://man.openbsd.org/blowfish|blowfish(3)]] and [[https://man.openbsd.org/encrypt|encrypt(1)]]).%0a%0aThe second block says that the mail must be read by user ID and group ID vmail, and%0athat all mail will be in the folders /var/vmail/%3cdomain>/%3cusername>.%0a%0aThis again indicates all mail will be in the folders /var/vmail/%3cdomain>/%3cusername>.%0a%0aYou will need to replace example.com with your real domain name.%0a%0aPlease read the instructions in the dovecot README in @@/usr/local/share/doc/pkg-readmes/dovecot@@. That file explains that you must add this [[openbsd/loginconf|login class]] to /etc/login.conf:%0a%0a[@%0adovecot:\%0a         :openfiles-cur=4096:\%0a         :openfiles-max=8192:\%0a         :tc=daemon:%0a@]%0a%0a'''WARNING''': You must use tabs and not spaces. If you use spaces in /etc/login.conf, the settings will '''not''' work.%0a%0a'''NOTE''': Allowing more open files than suggested in the README can help if you have many IP addresses.%0a%0a'''WARNING''': If login.conf.db exists, you will need to rebuild it:%0a%0a[@%0a# [ -f /etc/login.conf.db ] && cap_mkdb /etc/login.conf%0a@]%0a%0aBut it is best to just remove /etc/login.conf.db since it is not required:%0a%0a[@%0a$ doas rm /etc/login.conf.db%0a@]%0a%0a!! Starting dovecot%0a%0aTo start dovecot via [[openbsd/rcctl|rcctl]]:%0a%0a[@%0a$ doas rcctl enable dovecot%0a$ doas rcctl start dovecot%0a@]%0a%0a!! Troubleshooting%0a%0aMake sure to check /var/log/maillog: for errors too%0aMake sure to check Errors in /var/log/dovecot.err for errors too%0aMake sure to check Info in /var/log/dovecot.info for errors too%0aMake sure to check rspamd in /var/log/rspamd/rspamd.log for errors too%0a%0a[@%0a$ openssl s_client -starttls imap -connect username.example.com:143%0a@]%0a%0aWhen starting dovecot, you may find it fails:%0a%0a[@%0a$ doas rcctl start dovecot%0a@]%0a%0aWhen this happens, run the rc.d script with debugging turned on:%0a%0a[@%0a$ doas /etc/rc.d/dovecot -d start%0adoing _rc_parse_conf%0adoing _rc_quirks%0adovecot_flags empty, using default >%3c%0adoing rc_check%0adovecot%0adoing rc_start%0adoing _rc_wait start%0adoing rc_check%0a@]%0a%0adoveconf: Fatal: Error in configuration file /etc/dovecot/conf: ssl_cert: Can't open file /etc/ssl/dovecotcert.pem: No such file or directory%0adoing _rc_rm_runfile%0a(failed)%0a%0aIn this case, you can see the error in the logs forgot to write the real path of the cert: @@/etc/ssl/example.com.crt@@ (where example.com is replaced with my real domain).%0a%0a[@%0aJun  9 01:37:35 jrmu dovecot: auth: Error: passwd-file(jrmu@jrmu.host.oddprotocol.org,125.231.25.80,%3caiyNgk/EuHB95xlQ>): stat(/etc/mail/passwd) failed: Permission denied (euid=518(_dovecot) egid=518(_dovecot) missing +x perm: /etc/mail, we're not in group 1003(_mail), dir owned by 95:1003 mode=0750)%0aJun  9 01:37:41 jrmu dovecot: auth: Error: passwd-file(jrmu@jrmu.host.oddprotocol.org,125.231.25.80,%3caiyNgk/EuHB95xlQ>): stat(/etc/mail/passwd) failed: Permission denied (euid=518(_dovecot) egid=518(_dovecot) missing +x perm: /etc/mail, we're not in group 1003(_mail), dir owned by 95:1003 mode=0750)%0a@]%0a%0aLet's set up a mail server with dkim signing and basic rspamd checks:%0a%0a!! Before we begin%0a%0aRead the the man pages for [[https://man.openbsd.org/smtpd|opensmtpd]], [[https://man.openbsd.org/smtpd.conf|smtpd.conf]], and [[https://man.openbsd.org/smtpctl|smtpctl]]. %0a%0aRead the [[https://github.com/poolpOrg/OpenSMTPD-book|free OpenSMTPd book]] by the%0aauthor of OpenSMTPd%0a%0a!! DNS%0a%0aRunning a mail server requires proper DNS records. If you have not already, you will%0awant to read up on [[dns/overview|DNS]] and [[nsd/configure|set up your name server]].%0a%0aYou will need to [[DNS/Mail|add proper DNS records]] to your domain and make sure they work.%0a%0a!! Install%0a%0aOpensmtpd is part of OpenBSD base, but we will also want to install some%0aopensmtpd-related packages and dovecot:%0a%0a[@%0a$ doas pkg_add opensmtpd-extras opensmtpd-filter-dkimsign-- dovecot-2.3.21.1v0 rspamd-3.9.1%0a@]%0a%0aIf prompted to choose a version for dovecot, choose the one without gssapi [[https://doc.dovecot.org/3.0/configuration_manual/authentication/gssapi/|gssapi]]. %0a%0aMake sure to read the dkimsign filter README at @@/usr/local/share/doc/pkg-readmes/opensmtpd-filter-dkimsign@@.%0a%0a!! Configuration%0a%0a!!! TLS%0a%0aYou will want to use acme-client to request a TLS public cert and private key%0ain @@/etc/acme-client.conf@@.%0a%0a[@%0a#%0a# $OpenBSD: acme-client.conf,v 1.5 2023/05/10 07:34:57 tb Exp $%0a#%0aauthority letsencrypt {%0a	api url "https://acme-v02.api.letsencrypt.org/directory"%0a	account key "/etc/acme/letsencrypt-privkey.pem"%0a}%0a%0aauthority letsencrypt-staging {%0a	api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a	account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a}%0a%0aauthority buypass {%0a	api url "https://api.buypass.com/acme/directory"%0a	account key "/etc/acme/buypass-privkey.pem"%0a	contact "mailto:me@example.com"%0a}%0a%0aauthority buypass-test {%0a	api url "https://api.test4.buypass.no/acme/directory"%0a	account key "/etc/acme/buypass-test-privkey.pem"%0a	contact "mailto:me@example.com"%0a}%0a%0adomain example.com {%0a#	alternative names { }%0a	domain key "/etc/ssl/private/example.com.key"%0a	domain full chain certificate "/etc/ssl/example.com.crt"%0a	sign with letsencrypt%0a}%0adomain bnc.example.com {%0a#	alternative names { }%0a	domain key "/etc/ssl/private/bnc.example.com.key"%0a	domain full chain certificate "/etc/ssl/bnc.example.com.crt"%0a	sign with letsencrypt%0a}%0a%0adomain webirc.example.com {%0a#	alternative names { }%0a	domain key "/etc/ssl/private/webirc.example.com.key"%0a	domain full chain certificate "/etc/ssl/webirc.example.com.crt"%0a	sign with letsencrypt%0a}%0a%0adomain webmail.example.com {%0a#	alternative names { }%0a	domain key "/etc/ssl/private/webmail.example.com.key"%0a	domain full chain certificate "/etc/ssl/webmail.example.com.crt"%0a	sign with letsencrypt%0a}%0a%0adomain mail.example.com {%0a#	alternative names { }%0a	domain key "/etc/ssl/private/mail.example.com.key"%0a	domain full chain certificate "/etc/ssl/mail.example.com.crt"%0a	sign with letsencrypt%0a}%0adomain wiki.example.com {%0a#	alternative names { }%0a	domain key "/etc/ssl/private/wiki.example.com.key"%0a	domain full chain certificate "/etc/ssl/wiki.example.com.crt"%0a	sign with letsencrypt%0a}%0a%0a@]%0a%0aNext, we'll create our smtpd configuration file in @@/etc/mail/smtpd.conf@@:%0aBelow is a example smtpd.conf file below! make sure to change the host and ip%0aaddress's to your vm's ipv4 and ipv6 address!%0a%0a[@%0a# PKI for TLS%0apki mail.example.com cert "/etc/ssl/mail.example.com.crt" # path to SSL certificate%0apki mail.example.com key "/etc/ssl/private/mail.example.com.key" # path to private key%0a%0a# tables setup%0atable aliases file:/etc/mail/aliases%0atable domains file:/etc/mail/domains%0atable passwd file:/etc/mail/passwd%0atable users file:/etc/mail/users%0atable vusers file:/etc/mail/vusers%0atable hosts file:/etc/mail/hosts%0a%0a# Blocks junk mail%0afilter rspamd proc-exec "filter-rspamd"%0afilter check_rdns phase connect match !rdns junk%0afilter check_fcrdns phase connect match !fcrdns junk%0afilter "dkimsign" proc-exec "filter-dkimsign -d example.com -s mail -k /etc/mail/dkim/private.key" user _dkimsign group _dkimsign%0a%0a# macros%0aipv4 = "publicipv4"%0aipv6 = "publicipv6"%0acheck = "pki mail.example.com filter { check_rdns check_fcrdns rspamd } hostname example.com"%0aauthcheck = "pki mail.example.com auth %3cpasswd> mask-src senders %3cusers> filter { check_rdns check_fcrdns dkimsign rspamd } hostname example.com"%0a%0a# listeners%0alisten on socket filter { dkimsign rspamd }%0alisten on lo0 filter { dkimsign rspamd }%0a# listen on socket filter "dkimsign"%0a# listen on lo0 filter "dkimsign"%0alisten on $ipv4 port 25 tls $check%0alisten on $ipv6 port 25 tls $check %0alisten on $ipv4 port 465 tls-require $authcheck %0alisten on $ipv6 port 465 tls-require $authcheck %0alisten on $ipv4 port 587 tls-require $authcheck %0alisten on $ipv6 port 587 tls-require $authcheck%0a%0a# rules%0aaction "lmtp" lmtp "/var/dovecot/lmtp" rcpt-to virtual %3cvusers>%0aaction "outbound" relay src $ipv4%0a%0amatch from any for domain %3cdomains> action "lmtp"%0amatch from src %3chosts> for any action "outbound"%0amatch from local for any action "outbound"%0amatch auth from any for any action "outbound" %0a@]%0a%0aThe domains table contains a list of domains that our mail server should%0areceive mail on. domains file:/etc/mail/domains%0a%0a'''Note''': Do not add domains that your mail server does not directly serve%0a(for example, do not add domains you intend to forward mail to).  If you add%0athem by mistake, the mail server will not forward the mail properly.%0a%0aThe passwd table contains a colon-separated list of username/password/disk quota%0aentries. passwd file for smptpd /etc/mail/passwd%0a%0aThe vusers file shows which virtual user should handle whose mail. They are written as @@key: value@@ pairs.%0aSee [[https://man.openbsd.org/aliases|aliases(5)]] for more information. vusers file:/etc/mail/vusers%0a%0aThe hosts file contains a list of trusted sending hosts. hosts file:/etc/mail/hosts%0a%0aThe users file contains a list of valid sending users. users file:/etc/mail/users%0a%0aAll of these tables will be explained further in the following sections.%0a%0a!!! Dealing with Spam%0a%0a%0aThe first filter will check if the sender has an rdns entry. If not, the mail%0awill be labeled as junk.%0a%0aThe second filter will check if the sender's forward and reverse dns entry match. If%0anot, the mail will be labeled as junk.%0a%0aThe first filter will check if the sender has an rspam entry. If not, the mail%0awill be labeled as junk.%0a%0aThe fourth filter will sign any email with the DKIM private key.%0a%0a# -d specifies the domain name to sign for; you must replace example.com with your real domain.%0a# -s specifies the selector (in this case mail).%0a# -k specifies the path of the private key.%0a# user and group both specify _dkimsign, the user and group that does the signing%0a%0a!!! Macros%0a%0aA macro defines a variable that will be replaced with a block of text:%0a%0adefine the IPv4 and IPv6 addresses used for sending and receiving mail.%0a%0aopensmtpd to use the public/private keys we defined earlier for @@example.com@@. We mask the sender's source (the '''from''' part of the @@Received@@ header). We also apply two filters to check for proper forward and reverse confirmed DNS entries. Finally, we indicate that the sending hostname must be example.com instead of the default server name.%0a%0ait requires authentication with the password file and it checks if the sender is allowed.%0a%0a!!! Listeners%0a%0aThe listeners tell us what network interfaces, IP addresses, and ports to listen on.%0a%0asmtpd to listen to the UNIX domain socket and to DKIM sign all %0aemails. tells us to listen to the loopback interface and also%0asign all emails.%0a%0asmtpd to listen on the IPv4 and IPv6 address on port 25, to provide%0aTLS if supported but to offer plaintext as a fallback. Only basic checking is done.%0a%0asmtpd to listen on the IPv4 and IPv6 address on port 465, for SMTPS.%0aTLS encryption is required and authentication checking is forced because this socket%0acan be used for sending mail to other servers. We want to avoid an open mail relay.%0a%0a!!! Rules%0a%0awe define the actions that opensmtpd can take and how to decide which%0aaction to follow:%0a%0awe define the action "lmtp": we pass the mail to dovecot to handle using the Local Mail Transfer Protocol (LMTP). The actual recipient will be translated using the virtuals table.%0a%0awe define the action "outbound": we relay (send) the email out.%0a%0awe defines matching rule: any email headed for one of our domains should be handed over to lmtp (handed over to dovecot).%0a%0awe defines matching rule: any email from a local IP address or queue can relay (send) without authentication.%0a%0awe defines matching rule: any email from our trusted @@/etc/mail/hosts@@ file will automatically be relayed (sent) without authentication.%0a%0awe defines our last matching rule: any email that has been properly authenticated will be relayed (sent).%0a%0a!!! Complete configuration file%0a%0aHere is the entire configuration file in @@/etc/mail/smtpd.conf@@:%0a%0a[@%0a# PKI for TLS%0apki mail.example.com cert "/etc/ssl/mail.example.com.crt" # path to SSL certificate%0apki mail.example.com key "/etc/ssl/private/mail.example.com.key" # path to private key%0a%0a# tables setup%0atable aliases file:/etc/mail/aliases%0atable domains file:/etc/mail/domains%0atable passwd file:/etc/mail/passwd%0atable users file:/etc/mail/users%0atable vusers file:/etc/mail/vusers%0atable hosts file:/etc/mail/hosts%0a%0a# Blocks junk mail%0afilter rspamd proc-exec "filter-rspamd"%0afilter check_rdns phase connect match !rdns junk%0afilter check_fcrdns phase connect match !fcrdns junk%0afilter "dkimsign" proc-exec "filter-dkimsign -d example.com -s mail -k /etc/mail/dkim/private.key" user _dkimsign group _dkimsign%0a%0a# macros%0aipv4 = "publicipv4"%0aipv6 = "publicipv6"%0acheck = "pki mail.example.com filter { check_rdns check_fcrdns rspamd } hostname example.com"%0aauthcheck = "pki mail.example.com auth %3cpasswd> mask-src senders %3cusers> filter { check_rdns check_fcrdns dkimsign rspamd } hostname example.com"%0a%0a# listeners%0alisten on socket filter { dkimsign rspamd }%0alisten on lo0 filter { dkimsign rspamd }%0a# listen on socket filter "dkimsign"%0a# listen on lo0 filter "dkimsign"%0alisten on $ipv4 port 25 tls $check%0alisten on $ipv6 port 25 tls $check %0alisten on $ipv4 port 465 tls-require $authcheck %0alisten on $ipv6 port 465 tls-require $authcheck %0alisten on $ipv4 port 587 tls-require $authcheck %0alisten on $ipv6 port 587 tls-require $authcheck%0a%0a# rules%0aaction "lmtp" lmtp "/var/dovecot/lmtp" rcpt-to virtual %3cvusers>%0aaction "outbound" relay src $ipv4%0a%0amatch from any for domain %3cdomains> action "lmtp"%0amatch from src %3chosts> for any action "outbound"%0amatch from local for any action "outbound"%0amatch auth from any for any action "outbound"%0a@]%0a%0a!! Configuring Virtual Users%0a%0aA single user vmail will receive mail for all virtual users:%0a%0a[@%0a$ doas useradd -m -g =uid -c "Virtual Mail" -d /var/vmail -s /sbin/nologin vmail%0a@]%0a%0a/var/vmail will be used to store virtual users' maildir folders. It will be managed by dovecot, which receives mail via LMTP.%0a%0a!! Adding users%0a%0aCreate a new file @@/etc/mail/vusers@@ and add these lines:%0a%0a[@%0aroot   admin@example.com%0aadmin@example.com        vmail%0ausername@example.com      vmail%0a@]%0a%0aNow, any mail sent to root will get forwarded to admin@example.com.%0a%0a'''NOTE''': Make sure to check the mail account linked to root often! other programs will send mails to root.%0a%0aYou can optionally add one line for each user to provide aliases.%0a%0aFor each new user account, you will want to create a new line.%0a%0aYou'll also need to create one line for each user in @@/etc/mail/users@@:%0a%0a[@%0aadmin@example.com:	admin@example.com%0ausername@example.com:	username@example.com%0a@]%0a%0aA whitelist of known good senders goes into @@/etc/mail/hosts@@:%0a%0a[@%0a192.168.1.1%0a2001:db8::%0a@]%0a%0aReplace IP addresses 192.168.1.1 and 2001:db8:: with your server's real IP addresses.%0a%0aIn @@/etc/mail/mailname@@, put in the name you want to use for your mail server. This%0ais very important for passing anti-spam checks:%0a%0a[@%0aexample.com%0a@]%0a%0aThe list of domains this mail server can receive emails for will go inside @@/etc/mail/domains@@:%0a%0a[@%0aexample.com%0amail.example.com%0a@]%0a%0aIn @@/etc/mail/passwd@@, we have a list of colon-separated user credentials:%0a%0a[@%0aadmin@example.com:$2b$10$h5itbhzs73T4jsHAj9YX6Tf63yRatAquGBxoCX67wyekhCH4ZqioD6lKh::::::userdb_quota_rule=*:storage=1G%0ausername@example.com:$2b$10$h5itbhzs73T4jsHAj9YX6Tf63yRatAquGBxoCX67wyekhCH4ZqioD6lKh::::::userdb_quota_rule=*:storage=1G%0a@]%0a%0aEach field is separated with a colon.%0a%0aThe first field tells you the username. Note that usernames include a domain -- this is because you might host mail for multiple domains. So, when logging in to the mail server, your mail client must be of the format username@example.com.%0a%0aThe second field is the password hash. To generate a hash, you can run encrypt:%0a%0a[@%0a$ encrypt specificpassword%0a@]%0a%0aType your password, then press @@enter@@. Type @@ctrl+d@@ to quit.%0a%0a@@smtpctl encrypt@@ also does the same thing:%0a%0a[@%0a$ smtpctl encrypt%0a@]%0a%0a'''WARNING''': Special characters like $, when used in passwords, may cause issues with your mail client or with opensmtpd. To be safe, you might want to use only alphanumeric characters for your password. You can increase the length of the password for more security.%0a%0aThe last field sets how much data storage each user is allowed. The default here is 1 gigabyte.%0a%0a!!! File Permissions%0a%0aMake sure to set the proper permissions:%0a%0a[@%0a$ doas chown -R _dkimsign:_dkimsign /etc/mail/dkim/%0a$ doas chown _smtpd:_dovecot /etc/mail/passwd%0a$ doas chmod 770 /etc/mail/dkim/%0a$ doas chmod 440 /etc/mail/passwd%0a$ doas find /etc/mail ! -path /etc/mail -exec chmod o-rwx '{}' +%0a@]%0a%0aNote that you want to keep the ownership of any files that are listed in @@/etc/mtree/special@@ the same, and the file permissions must be at least as strict as those. Otherwise the [[security(8) -> https://man.openbsd.org/security]] script run by [[daily(8) -> https://man.openbsd.org/daily]] will flag those files and mail you about them.%0a%0a!! IMAP via dovecot%0a%0aTo finish the setup, we need to install and configure dovecot.%0a%0a!! DKIM signing%0a%0aWe will need to set up DKIM]to have the mail properly signed.%0a%0a!! Troubleshooting%0a%0aOpenSMTPD may end up in an inconsistent state. This can happen due to a misconfiguration. One symptom is you see this error:%0a%0asmtpd[]: pony express: smtpd: socket: Too many open files%0a%0aTo fix this, you can delete all the temporary files inside OpenSMTPD.%0a%0a'''WARNING''': this will delete any messages in the queue:%0a%0a[@%0a$ doas rcctl stop smtpd%0a$ doas rm -r /var/spool/smtpd/queue/*%0a$ doas rm -r /var/spool/smtpd/offline/*%0a@]%0a%0aopensmtpd may be unable to connect because outgoing packets are being filtered. For example, suppose you are trying to send a letter to yahoo, but you get errors similar to following, showing a connection timeout:%0a%0a[@%0asmtpd[]: smtp-out: Enabling route [] %3c-> 67.195.204.77 (mtaproxy1.free.mail.vip.bf1.yahoo.com)%0asmtpd[]: smtp-out: Enabling route [] %3c-> 67.195.228.106 (mtaproxy2.free.mail.vip.gq1.yahoo.com)%0asmtpd[]: mta error reason=Connection timeout%0asmtpd[]: smtp-out: Disabling route [] %3c-> 104.47.55.33 (104.47.55.33) for 15s%0a@]%0a%0aAn easy way to test if your packets are being filtered is:%0a%0a[@%0a$ dig -t mx yahoo.com%0a;; ANSWER SECTION:%0ayahoo.com.              395     IN      MX      1 mta6.am0.yahoodns.net.%0ayahoo.com.              395     IN      MX      1 mta5.am0.yahoodns.net.%0ayahoo.com.              395     IN      MX      1 mta7.am0.yahoodns.net.%0a$ nc mta5.am0.yahoodns.net 25%0a@]%0a%0aIf you get no response, then outgoing packets to port 25 are being blocked (often due to firewalls by your VPS provider to block spam). If mail is working, you should see a 220 reply:%0a%0a[@%0a$ nc mta5.am0.yahoodns.net 25%0a220 mtaproxy511.free.mail.ne1.yahoo.com ESMTP ready%0a@]%0a%0aIt is also possible that TLS is being dropped by the firewall. You can test using openssl:%0a%0a[@%0a$ openssl s_client -starttls smtp -connect mta5.am0.yahoodns.net:25%0aCONNECTED(00000003)%0adepth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA%0averify return:1%0adepth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA%0averify return:1%0adepth=0 C = US, ST = California, L = Sunnyvale, O = Oath Inc, CN = *.am0.yahoodns.net%0a...%0a250 STARTTLS%0a@]%0a%0aYou should see the entire SSL cert plus 250 STARTTLS reply. If you see the response hang at any point (eg, it returns CONNECTED(00000003) and nothing else), then TLS on port 25 is being filtered.%0a%0aIf you see this warning message in /var/log/maillog:%0a%0a[@%0aDec  6 03:44:17 smtpd[]: info: OpenSMTPD 6.7.0 starting                                 %0aDec  6 03:44:17 smtpd[]: pony express: smtpd: socket: Too many open files               %0aDec  6 03:44:17 smtpd[]: warn: lost child: pony express exited abnormally               %0a@]%0a%0aThis is due to having too many IP addresses that opensmtpd tries to bind to. This happens when you have a rule that says @@listen on egress@@:%0a%0a[@%0alisten on egress port 25 tls pki fruit.ircnow.org mask-src filter { check_rdns check_fcrdns }%0alisten on egress port 587 tls-require pki fruit.ircnow.org auth %3cpasswd> mask-src filter { dkimsign }%0a@]%0a%0aThese two lines mean that opensmtpd will listen to '''all''' available ip addresses, including the hundreds of IPv6 addresses you may have in @@/etc/hostname.vio0@@ and @@ifconfig vio0@@. To fix this, you must specify the IP addresses you want to listen to:%0a%0a!!! Open Mail Relay%0a%0aIf all your email is being marked as spam, check @@/var/log/maillog, /var/log/dovecot.err, var/log/dovecot.info or /var/log/rspamd/rspamd.log@@ . If you see a message like the following:%0a[@%0aJan  8 11:00:29 smtpd[39035]: 83bd6b3b1669649f mta delivery evpid=a8d16cd2144222fa from=%3cspammer@example.com> to=%3cvictim@example.com> rcpt=%3c-> source="192.168.0.1" relay="10.0.0.1 (10.0.0.1)" delay=16h2s result="TempFail" stat="451 4.7.650 The mail server [192.168.0.1] has been temporarily rate limited due to IP reputation. For e-mail delivery information, see https://postmaster.example.com (S843)"%0a@]%0aThen your server is being exploited as an [[opensmtpd/openrelay|open mail relay]]! Please follow the guide to fix it.%0a%0a!! [[opensmtpd/troubleshoot|Troubleshooting OpenSMTPd]]
+time=1731551299
+author:1731551299=SplinTer
+diff:1731551299:1731551245:=2c2%0a%3c you only have two configeration files one for dovecot.conf and one for smtpd.cond!%0a---%0a> you only have two configeratuib fules one for dovecot.conf and one for smtpd.cond!%0a
+host:1731551299=138.43.182.133
+author:1731551245=SplinTer
+diff:1731551245:1731550605:=1,4c1,2%0a%3c Let's set up dovecot & smtpd to allow users to read mail with IMAP & lmtp with rspamd spam filter!%0a%3c you only have two configeratuib fules one for dovecot.conf and one for smtpd.cond!%0a%3c %0a%3c %0a---%0a> Let's set up dovecot & smtpd to allow users to read mail with IMAP and POP with rspamd spam filter!%0a> %0a20,24c18,19%0a%3c dovecot, which receives mail via LMTP. other files for smtpd files for /etc/mail/aliases, %0a%3c domains file:/etc/mail/domains, passwd file:/etc/mail/passwd, users file:/etc/mail/users,%0a%3c vusers file:/etc/mail/vusers, or hosts file:/etc/mail/hosts! all these's files are located %0a%3c in /etc/mail folder is part of smtpd.conf setup!%0a%3c %0a---%0a> dovecot, which receives mail via LMTP.%0a> %0a162,165c157,159%0a%3c Make sure to check /var/log/maillog: for errors too%0a%3c Make sure to check Errors in /var/log/dovecot.err for errors too%0a%3c Make sure to check Info in /var/log/dovecot.info for errors too%0a%3c Make sure to check rspamd in /var/log/rspamd/rspamd.log for errors too%0a---%0a> Make sure to check /var/log/maillog:%0a> Make sure to check Errors in /var/log/dovecot.err%0a> Make sure to check Info in /var/log/dovecot.info%0a
+host:1731551245=138.43.182.133
+author:1731550605=SplinTer
+diff:1731550605:1731510706:=33c33%0a%3c protocols = imap lmtp%0a---%0a> protocols = imap pop3 lmtp%0a70a71,73%0a> pop3_fast_size_lookups = yes%0a> pop3_no_flag_updates = yes%0a> pop3_uidl_format = %25g%0a106,108c109,111%0a%3c This tells dovecot to listen to the protocols IMAP, and LMTP.%0a%3c '''Note''': We don't want to support pop3 or submission with dovecot.%0a%3c %0a---%0a> This tells dovecot to listen to the protocols IMAP, POP3, and LMTP.%0a> '''Note''': We don't want to support submission with dovecot.%0a> %0a112,113c115,116%0a%3c We defines our password database to use blowfish (see [[https://man.openbsd.org/blowfish|blowfish(3)]] and [[https://man.openbsd.org/encrypt|encrypt(1)]]).%0a%3c %0a---%0a> The first block defines our password database to use blowfish (see [[https://man.openbsd.org/blowfish|blowfish(3)]] and [[https://man.openbsd.org/encrypt|encrypt(1)]]).%0a> %0a189,190c192,193%0a%3c In this case, you can see the error in the logs forgot to write the real path of the cert: @@/etc/ssl/example.com.crt@@ (where example.com is replaced with my real domain).%0a%3c %0a---%0a> In this case, you can see the error is in line 12 I forgot to write the real path of the cert: @@/etc/ssl/example.com.crt@@ (where example.com is replaced with my real domain).%0a> %0a229,231c232,236%0a%3c You will want to use acme-client to request a TLS public cert and private key%0a%3c in @@/etc/acme-client.conf@@.%0a%3c %0a---%0a> You will want to use [[acme-client/configure|acme-client]] to request a TLS public cert and private key%0a> in @@/etc/ssl/@@.%0a> %0a> Next, we'll create our smtpd configuration file in @@/etc/mail/smtpd.conf@@:%0a> %0a233,304d237%0a%3c #%0a%3c # $OpenBSD: acme-client.conf,v 1.5 2023/05/10 07:34:57 tb Exp $%0a%3c #%0a%3c authority letsencrypt {%0a%3c 	api url "https://acme-v02.api.letsencrypt.org/directory"%0a%3c 	account key "/etc/acme/letsencrypt-privkey.pem"%0a%3c }%0a%3c %0a%3c authority letsencrypt-staging {%0a%3c 	api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a%3c 	account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a%3c }%0a%3c %0a%3c authority buypass {%0a%3c 	api url "https://api.buypass.com/acme/directory"%0a%3c 	account key "/etc/acme/buypass-privkey.pem"%0a%3c 	contact "mailto:me@example.com"%0a%3c }%0a%3c %0a%3c authority buypass-test {%0a%3c 	api url "https://api.test4.buypass.no/acme/directory"%0a%3c 	account key "/etc/acme/buypass-test-privkey.pem"%0a%3c 	contact "mailto:me@example.com"%0a%3c }%0a%3c %0a%3c domain example.com {%0a%3c #	alternative names { }%0a%3c 	domain key "/etc/ssl/private/example.com.key"%0a%3c 	domain full chain certificate "/etc/ssl/example.com.crt"%0a%3c 	sign with letsencrypt%0a%3c }%0a%3c domain bnc.example.com {%0a%3c #	alternative names { }%0a%3c 	domain key "/etc/ssl/private/bnc.example.com.key"%0a%3c 	domain full chain certificate "/etc/ssl/bnc.example.com.crt"%0a%3c 	sign with letsencrypt%0a%3c }%0a%3c %0a%3c domain webirc.example.com {%0a%3c #	alternative names { }%0a%3c 	domain key "/etc/ssl/private/webirc.example.com.key"%0a%3c 	domain full chain certificate "/etc/ssl/webirc.example.com.crt"%0a%3c 	sign with letsencrypt%0a%3c }%0a%3c %0a%3c domain webmail.example.com {%0a%3c #	alternative names { }%0a%3c 	domain key "/etc/ssl/private/webmail.example.com.key"%0a%3c 	domain full chain certificate "/etc/ssl/webmail.example.com.crt"%0a%3c 	sign with letsencrypt%0a%3c }%0a%3c %0a%3c domain mail.example.com {%0a%3c #	alternative names { }%0a%3c 	domain key "/etc/ssl/private/mail.example.com.key"%0a%3c 	domain full chain certificate "/etc/ssl/mail.example.com.crt"%0a%3c 	sign with letsencrypt%0a%3c }%0a%3c domain wiki.example.com {%0a%3c #	alternative names { }%0a%3c 	domain key "/etc/ssl/private/wiki.example.com.key"%0a%3c 	domain full chain certificate "/etc/ssl/wiki.example.com.crt"%0a%3c 	sign with letsencrypt%0a%3c }%0a%3c %0a%3c @]%0a%3c %0a%3c Next, we'll create our smtpd configuration file in @@/etc/mail/smtpd.conf@@:%0a%3c Below is a example smtpd.conf file below! make sure to change the host and ip%0a%3c address's to your vm's ipv4 and ipv6 address!%0a%3c %0a%3c [@%0a393,398c326,331%0a%3c define the IPv4 and IPv6 addresses used for sending and receiving mail.%0a%3c %0a%3c opensmtpd to use the public/private keys we defined earlier for @@example.com@@. We mask the sender's source (the '''from''' part of the @@Received@@ header). We also apply two filters to check for proper forward and reverse confirmed DNS entries. Finally, we indicate that the sending hostname must be example.com instead of the default server name.%0a%3c %0a%3c it requires authentication with the password file and it checks if the sender is allowed.%0a%3c %0a---%0a> Lines 2 and 3 define the IPv4 and IPv6 addresses used for sending and receiving mail.%0a> %0a> Line 4 tells opensmtpd to use the public/private keys we defined earlier for @@example.com@@. We mask the sender's source (the '''from''' part of the @@Received@@ header). We also apply two filters to check for proper forward and reverse confirmed DNS entries. Finally, we indicate that the sending hostname must be example.com instead of the default server name.%0a> %0a> Line 5 is identical to line 4 except it requires authentication with the password file and it checks if the sender is allowed.%0a> %0a403,404c336,337%0a%3c smtpd to listen to the UNIX domain socket and to DKIM sign all %0a%3c emails. tells us to listen to the loopback interface and also%0a---%0a> Line 2 tells smtpd to listen to the UNIX domain socket and to DKIM sign all %0a> emails. Line 3 tells us to listen to the loopback interface and also%0a407c340%0a%3c smtpd to listen on the IPv4 and IPv6 address on port 25, to provide%0a---%0a> Lines 4-5 tells smtpd to listen on the IPv4 and IPv6 address on port 25, to provide%0a410c343%0a%3c smtpd to listen on the IPv4 and IPv6 address on port 465, for SMTPS.%0a---%0a> Lines 6-7 tells smtpd to listen on the IPv4 and IPv6 address on port 465, for SMTPS.%0a412,413c345,347%0a%3c can be used for sending mail to other servers. We want to avoid an open mail relay.%0a%3c %0a---%0a> can be used for sending mail to other servers. We want to avoid an%0a> [[opensmtpd/openrelay|open mail relay]].%0a> %0a416c350%0a%3c we define the actions that opensmtpd can take and how to decide which%0a---%0a> Next we define the actions that opensmtpd can take and how to decide which%0a423,428c357,362%0a%3c we defines matching rule: any email headed for one of our domains should be handed over to lmtp (handed over to dovecot).%0a%3c %0a%3c we defines matching rule: any email from a local IP address or queue can relay (send) without authentication.%0a%3c %0a%3c we defines matching rule: any email from our trusted @@/etc/mail/hosts@@ file will automatically be relayed (sent) without authentication.%0a%3c %0a---%0a> we defines our first matching rule: any email headed for one of our domains should be handed over to lmtp (handed over to dovecot).%0a> %0a> we defines our second matching rule: any email from a local IP address or queue can relay (send) without authentication.%0a> %0a> we defines our third matching rule: any email from our trusted @@/etc/mail/hosts@@ file will automatically be relayed (sent) without authentication.%0a> %0a504,505c438,439%0a%3c '''NOTE''': Make sure to check the mail account linked to root often! other programs will send mails to root.%0a%3c %0a---%0a> '''NOTE''': Make sure to check the mail account linked to root often! [[https://man.openbsd.org/daily|daily(8)]] and other programs will send mails to root.%0a> %0a583,586c517,520%0a%3c !! IMAP via dovecot%0a%3c %0a%3c To finish the setup, we need to install and configure dovecot.%0a%3c %0a---%0a> !! IMAP and POP3 via dovecot%0a> %0a> To finish the setup, we need to [[dovecot/install|install and configure dovecot]].%0a> %0a589,590c523,524%0a%3c We will need to set up DKIM]to have the mail properly signed.%0a%3c %0a---%0a> We will need to set up [[DNS/DKIM|dkim]] to have the mail properly signed.%0a> %0a607,608c541,542%0a%3c opensmtpd may be unable to connect because outgoing packets are being filtered. For example, suppose you are trying to send a letter to yahoo, but you get errors similar to following, showing a connection timeout:%0a%3c %0a---%0a> At times, opensmtpd may be unable to connect because outgoing packets are being filtered. For example, suppose you are trying to send a letter to yahoo, but you get errors similar to following, showing a connection timeout:%0a> %0a669c603%0a%3c If all your email is being marked as spam, check @@/var/log/maillog, /var/log/dovecot.err, var/log/dovecot.info or /var/log/rspamd/rspamd.log@@ . If you see a message like the following:%0a---%0a> If all your email is being marked as spam, check @@/var/log/maillog, /var/log/dovecot.err or /var/log/dovecot.info@@ . If you see a message like the following:%0a
+host:1731550605=138.43.182.133
+author:1731510706=SplinTer
+diff:1731510706:1731476845:=1,2c1,2%0a%3c Let's set up dovecot & smtpd to allow users to read mail with IMAP and POP with rspamd spam filter!%0a%3c %0a---%0a> Let's set up dovecot & smtpd to allow users to read mail with IMAP and POP.%0a> %0a6c6%0a%3c $ doas pkg_add dovecot opensmtpd-extras opensmtpd-filter-dkimsign-- opensmtpd-filter-dkimsign-0.5p2 opensmtpd-filter-rspamd-0.1.8p0 opensmtpd-filter-senderscore-0.1.2%0a---%0a> $ doas pkg_add dovecot opensmtpd-extras opensmtpd-filter-dkimsign-- dovecot%0a12d11%0a%3c %0a30,31c29,30%0a%3c Here is Example /etc/dovecot/dovecot.conf to go by! change your hostname from example to your correct host and ip address's if specified!%0a%3c %0a---%0a> Here is Example /etc/dovecot/dovecot.conf to go by! change your name from example to your correct host and ip address's if specified!%0a> %0a96,97c95,102%0a%3c %0a%3c %0a---%0a> auth_mechanisms = plain%0a> auth_verbose=yes%0a> auth_debug=yes%0a> auth_debug_passwords=yes%0a> mail_debug=yes%0a> auth_verbose_passwords=sha1%0a> verbose_ssl=yes%0a> %0a115,125d119%0a%3c The first block defines our password database to use blowfish (see [[https://man.openbsd.org/blowfish|blowfish(3)]] and [[https://man.openbsd.org/encrypt|encrypt(1)]]).%0a%3c %0a%3c The second block says that the mail must be read by user ID and group ID vmail, and%0a%3c that all mail will be in the folders /var/vmail/%3cdomain>/%3cusername>.%0a%3c %0a%3c This again indicates all mail will be in the folders /var/vmail/%3cdomain>/%3cusername>.%0a%3c %0a%3c You will need to replace example.com with your real domain name.%0a%3c %0a%3c Please read the instructions in the dovecot README in @@/usr/local/share/doc/pkg-readmes/dovecot@@. That file explains that you must add this [[openbsd/loginconf|login class]] to /etc/login.conf:%0a%3c %0a127,130c121,129%0a%3c dovecot:\%0a%3c          :openfiles-cur=4096:\%0a%3c          :openfiles-max=8192:\%0a%3c          :tc=daemon:%0a---%0a> passdb {%0a>    args = scheme=blf-crypt /etc/mail/passwd%0a>    driver = passwd-file%0a> }%0a> %0a> userdb {%0a>    args = uid=vmail gid=vmail home=/var/vmail/%25d/%25n%0a>    driver = static%0a> }%0a133,138c132,142%0a%3c '''WARNING''': You must use tabs and not spaces. If you use spaces in /etc/login.conf, the settings will '''not''' work.%0a%3c %0a%3c '''NOTE''': Allowing more open files than suggested in the README can help if you have many IP addresses.%0a%3c %0a%3c '''WARNING''': If login.conf.db exists, you will need to rebuild it:%0a%3c %0a---%0a> The first block defines our password database to use blowfish (see [[https://man.openbsd.org/blowfish|blowfish(3)]] and [[https://man.openbsd.org/encrypt|encrypt(1)]]).%0a> %0a> The second block says that the mail must be read by user ID and group ID vmail, and%0a> that all mail will be in the folders /var/vmail/%3cdomain>/%3cusername>.%0a> %0a> This again indicates all mail will be in the folders /var/vmail/%3cdomain>/%3cusername>.%0a> %0a> You will need to replace example.com with your real domain.%0a> %0a> Please read the instructions in the dovecot README in @@/usr/local/share/doc/pkg-readmes/dovecot@@. That file explains that you must add this [[openbsd/loginconf|login class]] to /etc/login.conf:%0a> %0a140c144,147%0a%3c # [ -f /etc/login.conf.db ] && cap_mkdb /etc/login.conf%0a---%0a> dovecot:\%0a>          :openfiles-cur=4096:\%0a>          :openfiles-max=8192:\%0a>          :tc=daemon:%0a143,144c150,155%0a%3c But it is best to just remove /etc/login.conf.db since it is not required:%0a%3c %0a---%0a> '''WARNING''': You must use tabs and not spaces. If you use spaces in /etc/login.conf, the settings will '''not''' work.%0a> %0a> '''NOTE''': Allowing more open files than suggested in the README can help if you have many IP addresses.%0a> %0a> '''WARNING''': If login.conf.db exists, you will need to rebuild it:%0a> %0a146c157%0a%3c $ doas rm /etc/login.conf.db%0a---%0a> # [ -f /etc/login.conf.db ] && cap_mkdb /etc/login.conf%0a148a160,165%0a> But it is best to just remove /etc/login.conf.db since it is not required:%0a> %0a> [@%0a> $ doas rm /etc/login.conf.db%0a> @]%0a> %0a188c205%0a%3c doveconf: Fatal: Error in configuration file /etc/dovecot/conf: ssl_cert: Can't open file /etc/ssl/dovecotcert.pem: No such file or directory%0a---%0a> doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-ssl.conf line 12: ssl_cert: Can't open file /etc/ssl/dovecotcert.pem: No such file or directory%0a199,200c216,217%0a%3c Let's set up a mail server with dkim signing and basic rspamd checks:%0a%3c %0a---%0a> Let's set up a mail server with dkim signing and basic spam checks:%0a> %0a312,316c329,330%0a%3c The first filter will check if the sender has an rspam entry. If not, the mail%0a%3c will be labeled as junk.%0a%3c %0a%3c The fourth filter will sign any email with the DKIM private key.%0a%3c %0a---%0a> The third filter will sign any email with the DKIM private key.%0a> %0a347a362,363%0a> Lines 8-9 is similar except it's for port 587, which is the SMTP submission port.%0a> %0a353,363c369,379%0a%3c we define the action "lmtp": we pass the mail to dovecot to handle using the Local Mail Transfer Protocol (LMTP). The actual recipient will be translated using the virtuals table.%0a%3c %0a%3c we define the action "outbound": we relay (send) the email out.%0a%3c %0a%3c we defines our first matching rule: any email headed for one of our domains should be handed over to lmtp (handed over to dovecot).%0a%3c %0a%3c we defines our second matching rule: any email from a local IP address or queue can relay (send) without authentication.%0a%3c %0a%3c we defines our third matching rule: any email from our trusted @@/etc/mail/hosts@@ file will automatically be relayed (sent) without authentication.%0a%3c %0a%3c we defines our last matching rule: any email that has been properly authenticated will be relayed (sent).%0a---%0a> In line 2, we define the action "lmtp": we pass the mail to dovecot to handle using the Local Mail Transfer Protocol (LMTP). The actual recipient will be translated using the virtuals table.%0a> %0a> In line 3, we define the action "outbound": we relay (send) the email out.%0a> %0a> Line 4 defines our first matching rule: any email headed for one of our domains should be handed over to lmtp (handed over to dovecot).%0a> %0a> Line 5 defines our second matching rule: any email from a local IP address or queue can relay (send) without authentication.%0a> %0a> Line 6 defines our third matching rule: any email from our trusted @@/etc/mail/hosts@@ file will automatically be relayed (sent) without authentication.%0a> %0a> Line 7 defines our last matching rule: any email that has been properly authenticated will be relayed (sent).%0a
+host:1731510706=138.43.182.133
+author:1731476845=SplinTer
+diff:1731476845:1731470982:=1,4c1,31%0a%3c Let's set up dovecot & smtpd to allow users to read mail with IMAP and POP.%0a%3c %0a%3c !! Installation%0a%3c %0a---%0a> How to configure a small mail server%0a> %0a> Introduction%0a> Yes, another post about setting up a mail server. I know, there are plenty similar posts already out there… This one is about setting up a mail server on an Internet facing host. It will accept and send mails for a domain, store the accepted mails locally and deliver them using POP3. This is a rather lengthy post because there are quite some pieces to put together.%0a> %0a> Building blocks%0a> I use the following software to build my mail server out in the wild Internet:%0a> %0a> OpenSMTPD%0a> rspamd%0a> ClamAV%0a> Dovecot%0a> Let’s Encrypt%0a> OpenSMTPD will handle incoming and outgoing mail using SMTP. rspamd will support it in fighting incoming spam and malware (using ClamAV), and signing outgoing mail using DKIM. Dovecot stores received mail for users and delivers it using POP3. Finally acme-client(8) is used to manage the certificate from Let’s Encrypt.%0a> %0a> Basic assumptions%0a> The configuration I describe in this post is based on some assumptions about the server and its environment:%0a> %0a> Both IPv4 and IPv6 are used%0a> The server is the primary MX for the domain%0a> Both OpenSMTPD and Dovecot run on the same server%0a> Mail users must authenticate for both, POP3 and SMTP%0a> There are only a handful of mail users on this server%0a> Mail is just stored on the server until users fetch it%0a> This setup is suited for a small domain providing mail services to few users. User management is done manually and mail is stored locally. If this doesn’t fit your needs you might consider using one of the many other mail server guides out there.%0a> %0a> Before you start installing and configuring any software on your OpenBSD system I suggest that you consider using full disk encryption on it. Especially if your mail server is hosted at some provider.%0a> %0a> Preparations%0a> First you should install the required software packages:%0a> %0a6c33%0a%3c $ doas pkg_add dovecot opensmtpd-extras opensmtpd-filter-dkimsign-- dovecot%0a---%0a> $ doas pkg_add -i dovecot opensmtpd-extras rspamd opensmtpd-filter-rspamd%0a9,11c36,37%0a%3c !! Configuration%0a%3c %0a%3c A single user vmail will receive mail for all virtual users:%0a---%0a> Next you create the system user which will be used for handling mails:%0a> %0a13c39,47%0a%3c $ doas useradd -m -g =uid -c "Virtual Mail" -d /var/vmail -s /sbin/nologin vmail%0a---%0a> doas useradd -m -g =uid -c "Virtual Mail" -d /var/vmail -s /sbin/nologin vmail%0a> $ doas mkdir /var/vmail%0a> $ doas chown vmail:vmail /var/vmail%0a> $ doas chmod 0750 /var/vmail%0a> $ doas chown -R _dkimsign:_dkimsign /etc/mail/dkim/%0a> $ doas chown _smtpd:_dovecot /etc/mail/passwd%0a> $ doas chmod 770 /etc/mail/dkim/%0a> $ doas chmod 440 /etc/mail/passwd%0a> $ doas find /etc/mail ! -path /etc/mail -exec chmod o-rwx '{}' +%0a16,20c50,51%0a%3c /var/vmail will be used to store virtual users' maildir folders. It will be managed by%0a%3c dovecot, which receives mail via LMTP.%0a%3c %0a%3c In order to secure our passwords, we need to rearrange file permissions and owners:%0a%3c %0a---%0a> And you create the passwd(5) which will hold the information about the mail users on your system:%0a> %0a22,26c53,56%0a%3c $ doas chown -R _dkimsign:_dkimsign /etc/mail/dkim/%0a%3c $ doas chown _smtpd:_dovecot /etc/mail/passwd%0a%3c $ doas chmod 770 /etc/mail/dkim/%0a%3c $ doas chmod 440 /etc/mail/passwd%0a%3c $ doas find /etc/mail ! -path /etc/mail -exec chmod o-rwx '{}' +%0a---%0a> $ smtpctl encrypt 1amApASSw0rd | sed "s/^/muser:/;s/$/::::::/" > passwd%0a> $ doas mv passwd /etc/mail/passwd%0a> $ doas chown _dovecot:_smtpd /etc/mail/passwd%0a> $ doas chmod 0440 /etc/mail/passwd%0a29,30c59,60%0a%3c Here is Example /etc/dovecot/dovecot.conf to go by! change your name from example to your correct host and ip address's if specified!%0a%3c %0a---%0a> If you want to use DKIM to sign your outgoing mail it is time to create the key for it:%0a> %0a32,36c62,96%0a%3c protocols = imap pop3 lmtp%0a%3c listen = 198.251.81.119, 2605:6400:10:5bf::, 127.0.0.1%0a%3c %0a%3c service lmtp {%0a%3c   user = vmail%0a---%0a> $ doas mkdir /etc/mail/dkim%0a> $ doas openssl genrsa -out /etc/mail/dkim/example.net.key 1024%0a> $ doas openssl rsa -in /etc/mail/dkim/example.net.key -pubout \%0a> > -out /etc/mail/dkim/example.net.pub%0a> $ doas chgrp _rspamd /etc/mail/dkim/example.net.key%0a> $ doas chmod 0640 /etc/mail/dkim/example.net.key%0a> @]%0a> %0a> There are some entries required in the DNS zone of your domain. The following command will generate a text file ready to import into the zone file:%0a> %0a> [@%0a> $ echo '        MX  10 mail.example.net.' > rrs.txt%0a> $ echo '        TXT "v=spf1 mx -all"' >> rrs.txt%0a> $ echo 'mail    A   192.0.2.10' >> rrs.txt%0a> $ echo '        AAAA    2001:db8::c000:020a' >> rrs.txt%0a> $ echo 'pop3    CNAME   mail' >> rrs.txt%0a> $ echo '$ORIGIN _domainkey.example.net.' >> rrs.txt%0a> $ pubkey=$(sed /^-/d /etc/mail/dkim/example.net.pub | tr -d '\n')%0a> $ echo "default TXT \"v=DKIM1;k=rsa;p=${pubkey}\"" >> rrs.txt%0a> @]%0a> %0a> Certificates from Let’s Encrypt%0a> Of course you can use any certificate provider who supports the ACME protocol. I use Let’s Encrypt because they provide certificates for free, which is a huge win if you run a small site like this one.%0a> %0a> You will use httpd(8) to answer the challenges. Create a /etc/httpd.conf similar to this one:%0a> %0a> [@%0a> server "mail.example.net" {%0a>     listen on egress port http%0a>     alias "pop3.example.net"%0a>     root "/"%0a>     location "/.well-known/acme-challenge/*" {%0a>         request strip 2%0a>         root "/acme"%0a>     }%0a39,51c99,100%0a%3c service imap-login {%0a%3c   inet_listener imap {%0a%3c     address = *%0a%3c     port = 143%0a%3c   }%0a%3c   inet_listener imaps {%0a%3c     address = *%0a%3c     port = 993%0a%3c      ssl = yes%0a%3c   }%0a%3c   user = _dovecot%0a%3c   group = _dovecot%0a%3c   executable = /usr/local/libexec/dovecot/imap-login%0a---%0a> types {%0a>     include "/usr/share/misc/mime.types"%0a53,57c102,117%0a%3c %0a%3c service auth {%0a%3c   user = _dovecot%0a%3c   group = _dovecot%0a%3c   executable = /usr/local/libexec/dovecot/auth%0a---%0a> @]%0a> %0a> Test your configuration, enable and start httpd(8):%0a> %0a> [@%0a> $ doas httpd -n%0a> $ doas rcctl enable httpd%0a> $ doas rcctl start httpd%0a> @]%0a> %0a> Now acme-client(8) needs to know what to do and with whom. Take /etc/examples/acme-client.conf, adapt it to your needs and save the result as /etc/acme-client.conf:%0a> %0a> [@%0a> authority letsencrypt {%0a>     api url "https://acme-v02.api.letsencrypt.org/directory"%0a>     account key "/etc/acme/letsencrypt-privkey.pem"%0a60,66c120,122%0a%3c service quota-warning {%0a%3c   executable = script /usr/local/libexec/dovecot/quota-warning.sh%0a%3c   unix_listener quota-warning {%0a%3c   mode = 0600%0a%3c     user = vmail%0a%3c     group = vmail%0a%3c   }%0a---%0a> authority letsencrypt-staging {%0a>     api url "https://acme-staging-v02.api.letsencrypt.org/directory"%0a>     account key "/etc/acme/letsencrypt-staging-privkey.pem"%0a69,105c125,131%0a%3c quota_full_tempfail = yes%0a%3c pop3_fast_size_lookups = yes%0a%3c pop3_no_flag_updates = yes%0a%3c pop3_uidl_format = %25g%0a%3c ssl = yes%0a%3c ssl_cert = %3c/etc/ssl/mail.examplee.com.crt%0a%3c ssl_key = %3c/etc/ssl/private/mail.example.com.key%0a%3c ssl_dh=%3c/etc/dovecot/dhparam.pem%0a%3c ssl_cipher_list = ALL:!LOW:!SSLv2%0a%3c %0a%3c mail_location = maildir:/var/vmail/%25d/%25n/Maildir%0a%3c mail_uid = 1024%0a%3c mail_gid = 1024%0a%3c %0a%3c valid_chroot_dirs = /var/vmail%0a%3c log_path = /var/log/dovecot.err%0a%3c info_log_path = /var/log/dovecot.info%0a%3c log_timestamp = "%25Y-%25m-%25d %25H:%25M:%25S "%0a%3c login_greeting = Dovecot ready.%0a%3c disable_plaintext_auth = no%0a%3c auth_verbose = yes%0a%3c auth_debug = yes%0a%3c auth_debug_passwords = yes%0a%3c mail_debug = yes%0a%3c auth_verbose_passwords=sha1%0a%3c verbose_ssl=yes%0a%3c auth_mechanisms = plain%0a%3c auth_verbose=yes%0a%3c auth_debug=yes%0a%3c auth_debug_passwords=yes%0a%3c mail_debug=yes%0a%3c auth_verbose_passwords=sha1%0a%3c verbose_ssl=yes%0a%3c %0a%3c passdb {%0a%3c   driver = passwd-file%0a%3c   args = scheme=blf-crypt /etc/dovecot/users.txt%0a---%0a> domain mail.example.net {%0a>     alternative names {%0a>         pop3.example.net%0a>     }%0a>     domain key "/etc/ssl/private/mail.example.net.key"%0a>     domain full chain certificate "/etc/ssl/mail.example.net.crt"%0a>     sign with letsencrypt%0a107,111d132%0a%3c %0a%3c userdb {%0a%3c    args = uid=vmail gid=vmail home=/var/vmail/%25d/%25n%0a%3c    driver = static%0a%3c }%0a114,119c135,141%0a%3c This tells dovecot to listen to the protocols IMAP, POP3, and LMTP.%0a%3c '''Note''': We don't want to support submission with dovecot.%0a%3c %0a%3c It also tells dovecot the public IPs you want it to listen on. Finally, the last%0a%3c block tells dovecot to change to the username vmail to listen for LMTP.%0a%3c %0a---%0a> This config will issue a valid certificate right away. If you feel like testing in the first place, you should change the line sign with to letsencrypt-staging until you feel comfortable with the process.%0a> %0a> Before you can get your certificate you must make sure pf(4) lets the requests actually pass through to httpd(8). Add a rule similar to the following one to your pf.conf(5):%0a> %0a> pass in log on egress proto tcp from any to egress port http%0a> After adding this rule to /etc/pf.conf check the file and load it into pf(4) with the following commands:%0a> %0a121,129c143,144%0a%3c passdb {%0a%3c    args = scheme=blf-crypt /etc/mail/passwd%0a%3c    driver = passwd-file%0a%3c }%0a%3c %0a%3c userdb {%0a%3c    args = uid=vmail gid=vmail home=/var/vmail/%25d/%25n%0a%3c    driver = static%0a%3c }%0a---%0a> $ doas pfctl -nf /etc/pf.conf%0a> $ doas pfctl -f /etc/pf.conf%0a132,142c147,148%0a%3c The first block defines our password database to use blowfish (see [[https://man.openbsd.org/blowfish|blowfish(3)]] and [[https://man.openbsd.org/encrypt|encrypt(1)]]).%0a%3c %0a%3c The second block says that the mail must be read by user ID and group ID vmail, and%0a%3c that all mail will be in the folders /var/vmail/%3cdomain>/%3cusername>.%0a%3c %0a%3c This again indicates all mail will be in the folders /var/vmail/%3cdomain>/%3cusername>.%0a%3c %0a%3c You will need to replace example.com with your real domain.%0a%3c %0a%3c Please read the instructions in the dovecot README in @@/usr/local/share/doc/pkg-readmes/dovecot@@. That file explains that you must add this [[openbsd/loginconf|login class]] to /etc/login.conf:%0a%3c %0a---%0a> Now you can get your certificate using the following command:%0a> %0a144,147c150%0a%3c dovecot:\%0a%3c          :openfiles-cur=4096:\%0a%3c          :openfiles-max=8192:\%0a%3c          :tc=daemon:%0a---%0a> $ doas acme-client mail.example.net%0a150,155c153,154%0a%3c '''WARNING''': You must use tabs and not spaces. If you use spaces in /etc/login.conf, the settings will '''not''' work.%0a%3c %0a%3c '''NOTE''': Allowing more open files than suggested in the README can help if you have many IP addresses.%0a%3c %0a%3c '''WARNING''': If login.conf.db exists, you will need to rebuild it:%0a%3c %0a---%0a> Certificates have an expiry date, like groceries. You may want to make sure your certificate gets renewed automatically before it expires. The file /etc/daily.local can take care of this for you:%0a> %0a157c156,159%0a%3c # [ -f /etc/login.conf.db ] && cap_mkdb /etc/login.conf%0a---%0a> #!/bin/sh%0a> %0a> /usr/sbin/acme-client mail.example.net%0a> [[ $? -eq 0 ]] && rcctl restart smtpd dovecot%0a160,161c162,166%0a%3c But it is best to just remove /etc/login.conf.db since it is not required:%0a%3c %0a---%0a> Anti-malware shield ClamAV%0a> ClamAV will be used by rspamd to scan attachments for malware. To do so you need some configuration for ClamAV first in order to run it as a daemon and to keep the malware database up to date. Or if you run a malware scan server in your environment you can connect rspamd to it.