summaryrefslogtreecommitdiff
path: root/http2/data
diff options
context:
space:
mode:
authorDiego Roversi <diegor@tiscali.it>2019-09-08 18:12:27 +0200
committerDiego Roversi <diegor@tiscali.it>2019-09-08 18:12:27 +0200
commit1d9925c287b318ec21343e2682b51ab6a36ae8db (patch)
tree17d1c0ac21eea6f291146520afa8381db4586fb4 /http2/data
initial commit from cvs 1.6.2
Diffstat (limited to 'http2/data')
-rw-r--r--http2/data/bab.pngbin0 -> 1902 bytes
-rw-r--r--http2/data/baub.pngbin0 -> 1736 bytes
-rw-r--r--http2/data/beab.pngbin0 -> 1677 bytes
-rw-r--r--http2/data/beb.pngbin0 -> 1587 bytes
-rw-r--r--http2/data/biab.pngbin0 -> 1679 bytes
-rw-r--r--http2/data/bib.pngbin0 -> 1655 bytes
-rw-r--r--http2/data/biob.pngbin0 -> 1531 bytes
-rw-r--r--http2/data/bob.pngbin0 -> 1682 bytes
-rw-r--r--http2/data/boob.pngbin0 -> 1617 bytes
-rw-r--r--http2/data/bub.pngbin0 -> 1490 bytes
-rw-r--r--http2/data/byb.pngbin0 -> 2592 bytes
-rw-r--r--http2/data/checked.pngbin0 -> 1032 bytes
-rw-r--r--http2/data/close.pngbin0 -> 478 bytes
-rw-r--r--http2/data/confirm.html34
-rw-r--r--http2/data/disabled.pngbin0 -> 814 bytes
-rw-r--r--http2/data/hat1.pngbin0 -> 202 bytes
-rw-r--r--http2/data/hat2.pngbin0 -> 310 bytes
-rw-r--r--http2/data/header.pngbin0 -> 11619 bytes
-rw-r--r--http2/data/index.html292
-rw-r--r--http2/data/lbab.pngbin0 -> 2592 bytes
-rw-r--r--http2/data/lbeb.pngbin0 -> 1583 bytes
-rw-r--r--http2/data/lbib.pngbin0 -> 1663 bytes
-rw-r--r--http2/data/lbiob.pngbin0 -> 1520 bytes
-rw-r--r--http2/data/name.html189
-rw-r--r--http2/data/new.html271
-rw-r--r--http2/data/options.html285
-rw-r--r--http2/data/sfbob.pngbin0 -> 1785 bytes
-rw-r--r--http2/data/sfbub.pngbin0 -> 1664 bytes
-rw-r--r--http2/data/stop.html101
-rw-r--r--http2/data/unchecked.pngbin0 -> 327 bytes
-rw-r--r--http2/data/wave1.pngbin0 -> 307 bytes
-rw-r--r--http2/data/wave2.pngbin0 -> 327 bytes
-rw-r--r--http2/data/wave3.pngbin0 -> 313 bytes
33 files changed, 1172 insertions, 0 deletions
diff --git a/http2/data/bab.png b/http2/data/bab.png
new file mode 100644
index 0000000..b97b8fc
--- /dev/null
+++ b/http2/data/bab.png
Binary files differ
diff --git a/http2/data/baub.png b/http2/data/baub.png
new file mode 100644
index 0000000..8d85660
--- /dev/null
+++ b/http2/data/baub.png
Binary files differ
diff --git a/http2/data/beab.png b/http2/data/beab.png
new file mode 100644
index 0000000..443d20a
--- /dev/null
+++ b/http2/data/beab.png
Binary files differ
diff --git a/http2/data/beb.png b/http2/data/beb.png
new file mode 100644
index 0000000..8aa3368
--- /dev/null
+++ b/http2/data/beb.png
Binary files differ
diff --git a/http2/data/biab.png b/http2/data/biab.png
new file mode 100644
index 0000000..9de577d
--- /dev/null
+++ b/http2/data/biab.png
Binary files differ
diff --git a/http2/data/bib.png b/http2/data/bib.png
new file mode 100644
index 0000000..c2ec110
--- /dev/null
+++ b/http2/data/bib.png
Binary files differ
diff --git a/http2/data/biob.png b/http2/data/biob.png
new file mode 100644
index 0000000..211e023
--- /dev/null
+++ b/http2/data/biob.png
Binary files differ
diff --git a/http2/data/bob.png b/http2/data/bob.png
new file mode 100644
index 0000000..f01ca02
--- /dev/null
+++ b/http2/data/bob.png
Binary files differ
diff --git a/http2/data/boob.png b/http2/data/boob.png
new file mode 100644
index 0000000..eef411a
--- /dev/null
+++ b/http2/data/boob.png
Binary files differ
diff --git a/http2/data/bub.png b/http2/data/bub.png
new file mode 100644
index 0000000..22742de
--- /dev/null
+++ b/http2/data/bub.png
Binary files differ
diff --git a/http2/data/byb.png b/http2/data/byb.png
new file mode 100644
index 0000000..716988b
--- /dev/null
+++ b/http2/data/byb.png
Binary files differ
diff --git a/http2/data/checked.png b/http2/data/checked.png
new file mode 100644
index 0000000..df0201c
--- /dev/null
+++ b/http2/data/checked.png
Binary files differ
diff --git a/http2/data/close.png b/http2/data/close.png
new file mode 100644
index 0000000..6d9534b
--- /dev/null
+++ b/http2/data/close.png
Binary files differ
diff --git a/http2/data/confirm.html b/http2/data/confirm.html
new file mode 100644
index 0000000..928764d
--- /dev/null
+++ b/http2/data/confirm.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Cache-Control" content="no-cache">
+<meta http-equiv="Expires" content="0">
+<title>See you</title>
+</head>
+<body text="#000000" bgcolor="#C04040" link="#800000" vlink="#800000" alink="#800000">
+
+<h1>Confirmation</h1>
+
+<p>%(count > 1 and ('There are %d clients'%count) or 'There is a client')s
+still connected to your server.</p>
+
+<p>Are you sure you want to stop the server now?
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<img src="lbab.png">
+</p>
+
+<br>
+
+<table width="100%%" border=0>
+<tr><td bgcolor="#FF8080">
+<table border=0>
+<tr><td>
+<a href="index.html"><strong>&lt;&lt;&lt; Cancel</strong></a>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="stop.html?really=y"><strong>Yes, Really Quit &gt;&gt;&gt;</strong></a>
+</td></tr>
+</table>
+</td></tr>
+</table>
+
+</body></html>
diff --git a/http2/data/disabled.png b/http2/data/disabled.png
new file mode 100644
index 0000000..922c394
--- /dev/null
+++ b/http2/data/disabled.png
Binary files differ
diff --git a/http2/data/hat1.png b/http2/data/hat1.png
new file mode 100644
index 0000000..b3684d1
--- /dev/null
+++ b/http2/data/hat1.png
Binary files differ
diff --git a/http2/data/hat2.png b/http2/data/hat2.png
new file mode 100644
index 0000000..6494580
--- /dev/null
+++ b/http2/data/hat2.png
Binary files differ
diff --git a/http2/data/header.png b/http2/data/header.png
new file mode 100644
index 0000000..c9a8566
--- /dev/null
+++ b/http2/data/header.png
Binary files differ
diff --git a/http2/data/index.html b/http2/data/index.html
new file mode 100644
index 0000000..08dcc2f
--- /dev/null
+++ b/http2/data/index.html
@@ -0,0 +1,292 @@
+<html>
+<head>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Cache-Control" content="no-cache">
+<meta http-equiv="Expires" content="0">
+<title>The Bub's Brothers</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#000099" alink="#FF0000">
+&nbsp;
+<center><table cellspacing=0 cellpadding=0 border=0 width="95%%">
+
+%(
+externaltarget = running and ' target="new"' or ''
+)s
+
+
+<tr>
+<td width="6%%" bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+<td width="6%%" bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF"><a href="stop.html?time=%(tim)s"><img src="close.png" width=17 height=17>&nbsp;<font color="#FF0000" size=+1>Stop this program</font></a></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0C0C0" align="center"><font size=+3><strong>The Bub's Brothers</strong></font></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" align="right">
+ <a href="http://bub-n-bros.sourceforge.net"%(externaltarget)s>Web Home page</a> -
+ <a href="name.html">Player Names &amp; Teams</a> -
+ <a href="options.html?time=%(tim)s">Configuration</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" background="wave1.png"><font size=+3>&nbsp;</font></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td>
+ <table width="100%%" cellpadding=7>
+ <tr>
+ <td width="20%%" bgcolor="#000080" align="center"><font size=+1 color="#FFFF00"><strong>New game</strong></font></td>
+ <td bgcolor="#C0C0FF">
+ <table border=0>
+ <tr>
+ <td width=48><img src="%(juststarted and 'sfbob.png' or 'bob.png')s"></td>
+ <td>%(
+if running:
+ print '<form name="S" action="index.html" method="get">'
+ print '<input type=hidden name="time" value="%s">' % tim
+ print '<table width="100%" border=0><tr><td><p><strong>'
+ if juststarted:
+ print 'Server started!'
+ elif justconnected:
+ print 'Playing'
+ elif count == 0:
+ print 'No client is connected to your server at the moment.'
+ elif count == 1:
+ print 'One connected client.'
+ else:
+ print '%d connected clients.' % count
+ print '</strong></p></td>'
+ print '<td align="center"><input type=submit value="Update on connected clients"></td>'
+ print '</tr></table></form>'
+ print '<p><strong><a href="join.html?host=%s&port=%s&httpport=%s&time=%s">' % (running[0][0], running[0][1], self.httpport, tim),
+ print 'Join your own game now</a></strong> at <strong>%s:%s</strong></p>' % (
+ running[0])
+##if metapublish:
+## import time
+## print '<p><a href="register.html?a=%s">' % time.time()
+## if self.globaloptions.metapublish == 'y':
+## self.has_been_published = 1
+## metaquery = metaquery or []
+## metaquery.insert(0, 'desc='+fndesc)
+## s = 'a=' + metapublish
+## if s not in metaquery:
+## metaquery.insert(0, s)
+## print 'Register again',
+## else:
+## print 'Register (after all)',
+## print 'your server to the SourceForge meta-server</a><br>'
+## print '<a href="register.html?d=%s">' % time.time()
+## print 'Unregister your server</a>',
+## print '<font size=-1>(it is unregistered automatically after some time',
+## print 'when other people cannot find it, or',
+## print 'if you stop it with the link <font color="#FF2000">Stop this program</font> at the top of the page)</font></p>'
+)s
+<form name="n" action="new.html" method="get">
+<input type=hidden name="time" value="%(tim)s">
+%(
+if self.Game:
+ print '<input type=submit',
+ if running:
+ print 'value="Start another game">'
+ else:
+ print 'value="Start a new game">'
+else:
+ print 'You need the <a href="http://bub-n-bros.sourceforge.net/download.html">complete version</a> to start a new game.<br><font size=-1>With this version you can only connect to existing servers and <font color="#FF0000">only over fast links!</font></font>'
+)s
+</form>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" background="wave3.png"><font size=+3>&nbsp;</font></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td>%(
+servers = self.getlocalservers()[:]
+
+found = []
+def show((addr, (info, ping)), found=found):
+ import socket
+ infolst = info.split(':') or ['?']
+ if len(infolst) >= 3:
+ httpport = infolst.pop(2)
+ else:
+ httpport = 'off'
+ print '<a href="join.html?host=%s&port=%d&httpport=%s&time=%s">' % (
+ addr[0], addr[1], httpport, tim)
+ host, port = addr
+ #host = socket.gethostbyaddr(host)[0]
+ if ping is not None:
+ infolst.append('ping: %dms' % int(ping*1000))
+ if (addr, infolst[0]) == running:
+ infolst.append('this is your own server')
+ found.append(1)
+ infolst = map(htmlquote, infolst)
+ print '<strong>%s:%s</strong></a> playing <strong>%s</strong>' % (
+ host, port, infolst[0])
+ if len(infolst) > 1:
+ print '&nbsp;(%s)' % ' &middot; &middot; '.join(infolst[1:])
+
+if servers is None:
+ rowspan = 1
+else:
+ rowspan = (len(servers) or 1)+1
+)s
+<table width="100%%" cellpadding=7><tr>
+ <td width="20%%" bgcolor="#FF0080" align="center" rowspan="%(rowspan)s">
+ <font size=+1 color="#FFFF00">
+ <strong>Local games</strong>
+ </font>
+ </td>
+ <td bgcolor="#FFC0C0">
+%(
+if servers is not None:
+ if servers:
+ show(servers[0])
+ else:
+ print "(no server found)"
+ print '</td></tr>'
+ for s in servers[1:]:
+ print '<tr><td bgcolor="#FFC0C0">'
+ show(s)
+ print '</td></tr>'
+ print '<tr><td bgcolor="#FFC0C0">'
+)s
+ <table border=0><tr>
+ <td width=48><img src="boob.png"></td>
+ <td>
+%(
+if running and not found:
+ import hostchooser, gamesrv
+ if gamesrv.displaysockport(gamesrv.openpingsocket()) != hostchooser.UDP_PORT:
+ print '<p><font size=-1>Note: your server does not appear in this list'
+ print 'because the UDP port %d is already in use (is another Bub &amp; Bob server running on this machine?).' % hostchooser.UDP_PORT
+ print 'Use the full server address <strong>%s:%s</strong></font></p>' % running[0]
+)s
+ <form name="L" action="index.html" method="get">
+ <input type=hidden name="time" value="%(tim)s">
+ <input type=submit value="Search again for local servers">
+ </form>
+ </td>
+ </tr></table>
+ <p><form name="J" action="join.html" method="get">
+ <input type=hidden name="time" value="%(tim)s">
+ Or connect to server:
+ <input type=text name="host" size=25>
+ (<code>host</code> or <code>host:port</code>)
+ <input type=submit value="Go">
+ </form></p>
+ </td>
+</tr></table>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" background="wave2.png"><font size=+3>&nbsp;</font></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td>
+ <table width="100%%" cellpadding=7>
+ <tr>
+ <td width="20%%" bgcolor="#008000" align="center"><font size=+1 color="#FFFF00"><strong>Internet games</strong></font></td>
+ <td bgcolor="#C0FFCC">
+ <table border=0>
+ <tr>
+ <td width=48><img src="bub.png"></td>
+ <td><p><a href="%(self.metaserverpage(headers))s">Go to the Internet servers page</a></p>
+ <p><font size=-1>Don't forget to <a href="name.html">give a name</a>
+ to your dragons before you join a server!
+ </font></p></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000" align="center"><img src="header.png"></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+
+</table></center>
+
+
+</body>
+</html>
diff --git a/http2/data/lbab.png b/http2/data/lbab.png
new file mode 100644
index 0000000..24fd915
--- /dev/null
+++ b/http2/data/lbab.png
Binary files differ
diff --git a/http2/data/lbeb.png b/http2/data/lbeb.png
new file mode 100644
index 0000000..a04a9e0
--- /dev/null
+++ b/http2/data/lbeb.png
Binary files differ
diff --git a/http2/data/lbib.png b/http2/data/lbib.png
new file mode 100644
index 0000000..191142a
--- /dev/null
+++ b/http2/data/lbib.png
Binary files differ
diff --git a/http2/data/lbiob.png b/http2/data/lbiob.png
new file mode 100644
index 0000000..afc809f
--- /dev/null
+++ b/http2/data/lbiob.png
Binary files differ
diff --git a/http2/data/name.html b/http2/data/name.html
new file mode 100644
index 0000000..dab24f9
--- /dev/null
+++ b/http2/data/name.html
@@ -0,0 +1,189 @@
+<html>
+<head>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Cache-Control" content="no-cache">
+<meta http-equiv="Expires" content="0">
+<title>Name Bub's Brothers</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#000099" alink="#FF0000">
+&nbsp;
+
+<form name="n" action="name.html" method="get">
+<center>
+
+<table CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH="95%%">
+
+<tr>
+<td width="6%%" bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000" colspan="3">&nbsp;</td>
+<td width="6%%" bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0C0C0" align="center" colspan="3"><font size=+3><strong>Player Names</strong></font></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" colspan="3" align="right">
+ <a href="index.html?time=%(time.time())s">Back to the main page</a>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" colspan="3" background="wave1.png"><font size=+3>&nbsp;</font></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+
+%(
+buttons = {
+0: """
+""",
+1: """
+"""}
+for id, img, bgcolor in [
+ (0, 'bub.png', '#c0ffc0'),
+ (1, 'bob.png', '#c0c0ff'),
+ (2,'boob.png', '#ffc0c0'),
+ (3, 'beb.png', '#ffc000'),
+ (4,'biob.png', '#ffff00'),
+ (5, 'bab.png', '#c04040'),
+ (6, 'bib.png', '#c0c0c0'),
+ (7,'baub.png', '#fc60ff'),
+ (8,'beab.png', '#4fa4ff'),
+ (9,'biab.png', '#0ab237'),
+ ]:
+ keyid = "player%d" % id
+ playername = options.get(keyid) or ''
+ playername = playername.strip()
+ for team in [1,2]:
+ if playername.endswith('(%d)' % team):
+ playername = playername[:-3].strip()
+ break
+ else:
+ team = 'off'
+ def nameval(value, team=team, teamid="team%d" % id):
+ s = 'value="%s"' % (value,)
+ if team == value:
+ s += ' selected'
+ return s
+ print """
+<tr>
+ <td bgcolor="#000000">&nbsp;</td>
+ <td bgcolor="%s" align="right" width="35%%"><img src="%s"></td>
+ <td bgcolor="%s" align="center" width="10%%"><input type=text size=16 name="%s" value="%s"></td>
+ <td bgcolor="%s" align="left">&nbsp;&nbsp;
+ <select name="team%d">
+ <option %s>no team<option %s>Team 1<option %s>Team 2</select>
+ </td>
+ <td bgcolor="#000000">&nbsp;</td>
+</tr>
+""" % (bgcolor, img, bgcolor, keyid, playername,
+ bgcolor, id, nameval('off'), nameval(1), nameval(2))
+)s
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td colspan=3 align="center" valign="top" bgcolor="#FFFFFF">
+<input type=submit name="s" value=" Save ">&nbsp;&nbsp;&nbsp;
+<input type=submit name="f" value=" Fill in missing names ">&nbsp;&nbsp;&nbsp;
+<input type=submit name="c" value=" Clear ">
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0C0C0" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000" colspan="3" align="center"><img src="header.png"></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000" colspan="3">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+
+</table>
+
+
+</center>
+</form>
+
+</body>
+</html>
diff --git a/http2/data/new.html b/http2/data/new.html
new file mode 100644
index 0000000..1709c8d
--- /dev/null
+++ b/http2/data/new.html
@@ -0,0 +1,271 @@
+<html>
+<head>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Cache-Control" content="no-cache">
+<meta http-equiv="Expires" content="0">
+<title>New Bub's Brothers Server</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#000099" alink="#FF0000">
+&nbsp;
+
+<form name="n" action="run.html" method="get">
+<input type=hidden name="time" value="%(time.time())s">
+
+%(
+def nameval(name, value, default=0, options=options):
+ s = getattr(options, name)
+ if s == value or (default and not s):
+ s = 'checked '
+ else:
+ s = ''
+ return s + 'name="%s" value="%s"' % (name, value)
+)s
+
+<center>
+<table CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH="95%%">
+
+<tr>
+<td width="6%%" bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+<td width="6%%" bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0C0C0" align="center"><font size=+3><strong>New Server</strong></font></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" align="right">
+ <a href="index.html?time=%(time.time())s">Back to the main page</a>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" background="wave1.png"><font size=+3>&nbsp;</font></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td>
+ <table width="100%%" cellpadding=7>
+ <tr>
+ <td width="20%%" bgcolor="#000080" align="center"><font size=+1 color="#FFFF00"><strong>Level file</strong></font></td>
+ <td bgcolor="#C0C0FF">
+ <table border=0>
+ <tr>
+ <td width=48><img src="bob.png"></td>
+ <td><select name="file">%(
+for displayname, filename in Game.FnListBoards():
+ print '<option',
+ if filename == str(options.file):
+ print 'selected',
+ print 'value="%s">' % htmlquote(filename), htmlquote(displayname)
+)s</select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td>
+ <table width="100%%" cellpadding=7>
+ <tr>
+ <td width="20%%" bgcolor="#000080" align="center"><font size=+1 color="#FFFF00"><strong>Levels to play</strong></font></td>
+ <td bgcolor="#C0C0FF">
+ Start at level <input type=text name="beginboard" size=3 value="%(options.beginboard or 1)s">
+and go on ...
+ </td>
+ <td bgcolor="#C0C0FF">
+
+ <input type=radio %(nameval("lvlend", "y", 1))s>&nbsp;to the end of the level file</input><br>
+ <input type=radio %(nameval("lvlend", "n"))s>&nbsp;to</input> level <input type=text name="finalboard" size=3 value="%(options.finalboard or 100)s"><br>
+ skipping levels:
+ <select name="stepboard"> %(
+steps = [
+ (1, 'none'),
+ (2, 'by steps of 2 (skip every other level)')]
+for i in range(3, 10) + range(10, 30, 5):
+ steps.append((i, 'by steps of %d levels' % i))
+for i, text in steps:
+ print '<option',
+ if str(i) == str(options.stepboard):
+ print 'selected',
+ print 'value="%d">' % i, text
+)s</select>
+ </td>
+ </tr>
+ </table>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td>
+ <table width="100%%" cellpadding=7>
+ <tr>
+ <td width="20%%" bgcolor="#000080" align="center"><font size=+1 color="#FFFF00"><strong>Limited lives</strong></font></td>
+ <td bgcolor="#C0C0FF">
+ <input type=radio %(nameval("limit", "n", 1))s>&nbsp;no limited lives --- just run for points!</input><br>
+ <input type=radio %(nameval("limit", "y"))s>&nbsp;limit</input> to <input type=text name="lives" size=3 value="%(options.lives or 3)s"> lives (with an extra life for each <input type=text name="extralife" size=7 value="%(options.extralife or 50000)s"> points)<br>
+ <input type=checkbox %(nameval("limitlifegain", "y"))s>&nbsp;limit lifegain to max. <input type=text name="lifegainlimit" size=3 value="%(options.lifegainlimit or 1)s"> life per level
+ </td>
+ </tr>
+ </table>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td>
+ <table width="100%%" cellpadding=7>
+ <tr>
+ <td width="20%%" bgcolor="#000080" align="center"><font size=+1 color="#FFFF00"><strong>Permanent server</strong></font></td>
+ <td bgcolor="#C0C0FF">
+ <input type=checkbox %(nameval("autoreset", "y"))s>&nbsp;Automatically restart the server after the end is reached, forever</input><br>
+ <font size=-1>Non-permanent servers time out after 2 hours of inactivity</font>
+ </td>
+ </tr>
+ </table>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td>
+ <table width="100%%" cellpadding=7>
+ <tr>
+ <td width="20%%" bgcolor="#008000" align="center"><font size=+1 color="#FFFF00"><strong>Internet game</strong></font></td>
+ <td bgcolor="#C0FFC0">
+ <table border=0>
+ <tr>
+ <td width=48><img src="sfbub.png"></td>
+ <td><p><input type=checkbox %(nameval("metapublish", "y", 1))s>&nbsp;register the server on the Bub-'n-Bros meta-server, allowing it to appear on everybody's Internet Games list</input></p></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" align="center">
+<input type=submit value=" Start Server ">
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+%(
+if running: print '''
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" align="center">
+<strong><font color="#FF0000">Note:</font> this will replace the server already running on this machine.</strong>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+''')s
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0C0C0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#F0E0E0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000" align="center"><img src="header.png"></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+
+</table></center>
+</form>
+
+</body>
+</html>
diff --git a/http2/data/options.html b/http2/data/options.html
new file mode 100644
index 0000000..8ded787
--- /dev/null
+++ b/http2/data/options.html
@@ -0,0 +1,285 @@
+<html>
+<head>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Cache-Control" content="no-cache">
+<meta http-equiv="Expires" content="0">
+<title>Settings - The Bub's Brothers</title></head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#000099" alink="#FF0000">
+&nbsp;
+
+%(
+def nameval(type, name, value=None, default=None, mangling=1, options=options):
+ if mangling:
+ name = mode.unique_id() + '_' + name
+ s = getattr(options, name) or default
+ checked = s == value
+ if type == 'option':
+ return 'option %svalue="%s"' % (checked and 'selected ' or '', value)
+ elif type == 'select':
+ return 'select name="%s"' % name
+ elif type == 'text':
+ return 'input type=text name="%s" value="%s"' % (
+ name, htmlquote(s))
+ else:
+ return 'input type=%s %sname="%s" value="%s"' % (
+ type, checked and 'checked ' or '', name, value)
+
+def begingroup(text, fgcolor, bgcolor, lightbgcolor, img, nbitems):
+ global groupinfo
+ print '<tr>'
+ print '<td width="20%"',
+ print 'rowspan="%d" bgcolor="%s" align="center">' % (nbitems or 1, bgcolor)
+ print '<font size=+1 color="%s"><strong>%s</strong></font>' % (fgcolor, text)
+ print '</td>'
+ groupinfo = [lightbgcolor, bgcolor, fgcolor, 0, 0, img]
+ if not nbitems:
+ begingroupitem()
+ endgroupitem()
+def begingroupitem(highlight=0):
+ if groupinfo[4]:
+ print '<tr>'
+ groupinfo[4] += 1
+ groupinfo[3] = highlight
+ print '<td width="80%%" bgcolor="%s">' % groupinfo[highlight]
+ print '<table width="100%" border=0><tr>'
+def endgroupitem():
+ print '<td width=40 align="right" valign="top">'
+ if groupinfo[3]:
+ print '<img src="%s">' % groupinfo[-1]
+ print '</td></tr></table>'
+ print '</td></tr>'
+def endgroup():
+ pass
+
+def beginmode():
+ highlight = mode in currentmodes
+ begingroupitem(highlight)
+
+ print '<td width=36 align="right" valign="center">'
+ err = mode.imperror()
+ if highlight:
+ url = None
+ err = err or "selected"
+ print '<img alt="selected" src="checked.png">'
+ elif err:
+ url = None
+ print '<img alt="%s" src="disabled.png">' % err
+ else:
+ url = "options.html?%s=%s&savetime=%s" % (mode.prefix, mode.name,
+ time.time())
+ err = "select"
+ print '<a href="%s"><img alt="select" src="unchecked.png"></a>' % url
+ print '</td>'
+
+ print '<td width="20%" valign="center">'
+ if url: print '<a href="%s">' % url,
+ print htmlquote(err),
+ if url: print '</a>',
+ print '</td>'
+
+ print '<td width="80%"><font size=+1><strong>',
+ print htmlquote(mode.name),
+ print '</strong></font>'
+ if mode.url:
+ print '&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;<a href="%s"><i>web site</i></a>' % mode.url
+ print '<br>'
+ print htmlquote(mode.descr)
+ return highlight
+
+def beginmodeoptions():
+ print '<br>'
+ print '<table border=0><tr><td>'
+
+def endmodeoptions():
+ print '</td><td align="center" valign="bottom">'
+ print '<input type=submit value=" Save ">'
+ print '</td></tr></table>'
+
+def endmode():
+ print '</td>'
+ endgroupitem()
+
+def modeitems(modelist):
+ global mode
+ for mode in modelist:
+ if beginmode():
+ txt = mode.htmloptionstext(nameval)
+ if txt:
+ beginmodeoptions()
+ print txt
+ endmodeoptions()
+ endmode()
+)s
+
+
+<center><table CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH="95%%">
+
+<tr>
+<td width="6%%" bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+<td width="6%%" bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0E0D0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#D0D0D0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#C0C0C0" align="center"><font size=+3><strong>Settings</strong></font></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#D0D0D0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0E0D0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0E0D0" align="right">
+ <a href="http://bub-n-bros.sourceforge.net/help.html">Technical documentation</a> -
+ <a href="index.html?time=%(time.time())s">Back to the main page</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0E0D0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0E0D0">
+
+<form name="options" action="options.html" method="get">
+<input type=hidden name="savetime" value="%(time.time())s">
+<table border=0 cellspacing=4>
+
+
+
+%(
+graphicmodes = self.graphicmodeslist()
+currentmodes = self.localmodes()
+begingroup('Display driver', '#800000', '#FFC000', '#C0C0C0',
+ 'lbeb.png', len(graphicmodes))
+modeitems(graphicmodes)
+endgroup()
+)s
+
+<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+
+
+%(
+soundmodes = self.soundmodeslist()
+java = graphicmodes[0] in currentmodes
+begingroup('Sound driver', '#800000', '#FFFF00', '#C0C0C0',
+ 'lbiob.png', java and 1 or len(soundmodes))
+if java:
+ begingroupitem(1)
+ print '<td><font size=-1>Java Applet always does sounds, but',
+ print 'background music is not implemented</font></td>'
+ endgroupitem()
+else:
+ modeitems(soundmodes)
+endgroup()
+)s
+
+<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+%(
+begingroup('Network options', '#004000', '#80FF00', None, 'lbib.png', 1)
+begingroupitem(1)
+)s
+<td>
+ <table border=0><tr>
+ <td>
+ <p>Network ports are automatically assigned, but you can optionally choose fixed
+ ones and let them in through your firewall. <font size=-1>Clients using the
+ "Internet games" meta-server can usually connect even through firewalls.
+ Moreover servers can re-route UDP traffic to clients behind firewalls over TCP.
+%(
+if java:
+ print "These settings don't apply to the Java applet."
+)s </font></p>
+
+ <p>TCP game server port: <%(nameval("text", "port_LISTEN", default="", mangling=0))s><br>
+ HTTP server port: <%(nameval("text", "port_HTTP", default="", mangling=0))s></p>
+
+ <p>Client incoming UDP port (or <code>host:port</code> if redirected): <%(nameval("text", "port_CLIENT", default="", mangling=0))s><br>
+ <%(nameval("radio", "datachannel", "ucp", mangling=0))s>always UDP</input>
+ <%(nameval("radio", "datachannel", "tcp", mangling=0))s>no UDP, only TCP</input>
+ <%(nameval("radio", "datachannel", "auto", default="auto", mangling=0))s>Auto-detect</input><br>
+ Client incoming TCP port (metaserver-directed back-connections): <%(nameval("text", "port_BACK", default="", mangling=0))s></p>
+ </td>
+ <td width=12></td>
+ <td align="center" valign="bottom">
+ <a href="http://bub-n-bros.sourceforge.net/help.html#port">Help!</a><br><br>
+ <input type=submit value=" Save ">
+ </td>
+ </tr></table>
+</td>
+%(
+endgroupitem()
+endgroup()
+)s
+
+</table>
+</form>
+
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0E0D0">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0E0D0" align="right">
+<form name="reset" action="options.html" method="get">
+ <input type=hidden name="time" value="%(time.time())s">
+ <input type=submit name="reset" value=" Restore all defaults ">
+</form>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+
+</table></center>
+
+</body>
+</html>
diff --git a/http2/data/sfbob.png b/http2/data/sfbob.png
new file mode 100644
index 0000000..388d446
--- /dev/null
+++ b/http2/data/sfbob.png
Binary files differ
diff --git a/http2/data/sfbub.png b/http2/data/sfbub.png
new file mode 100644
index 0000000..142f3b3
--- /dev/null
+++ b/http2/data/sfbub.png
Binary files differ
diff --git a/http2/data/stop.html b/http2/data/stop.html
new file mode 100644
index 0000000..464ed36
--- /dev/null
+++ b/http2/data/stop.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Cache-Control" content="no-cache">
+<meta http-equiv="Expires" content="0">
+<title>See you</title>
+</head>
+<body text="#000000" bgcolor="#C04040" link="#0000EE" vlink="#000099" alink="#FF0000">
+
+<br>
+<table width="100%%" border=0>
+<tr>
+ <td width="90%%" bgcolor="#800000" align="right"><font color="#FFFF00" size=+1><strong><i>See you !</i>&nbsp;&nbsp;&nbsp;</strong></font></td>
+ <td width="48" align="center"><img src="lbab.png"></td>
+</form>
+</tr>
+</table>
+
+<br>
+<br>
+<hr><br>
+<center><table width="70%%" cellspacing=0 cellpadding=0 border=0>
+
+<tr>
+<td width="3%%" bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000" align="center"><img src="header.png"></td>
+<td width="3%%" bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" align="center">
+<i>I hope you enjoyed this game!</i>
+<br><br>
+<a href="http://bub-n-bros.sourceforge.net"><i>http://bub-n-bros.sourceforge.net</i></a>
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF" align="center">
+Almost all sprite images, sounds, background musics and
+some of the levels are directly taken from the MacOS version of
+Bub & Bob 1 by McSebi, and redistributed with his gracious
+permission.
+Most graphics have been improved or remade by David Gowers.
+
+<br><br>
+ <a href="http://www.mcsebi.de">http://www.mcsebi.de</a>
+<br><br>
+
+</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#FFFFFF">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#E0E0FF"><br>
+<h2 align="center">Authors</h2>
+
+<ul>
+<li>Programming: Armin Rigo
+<li>Art: David Gowers, based on graphics from McSebi
+<li>Levels: Gio & Odie & Michel-St&eacute;phane & Armin
+<li>Special thanks: Odie & Brachamutanda
+<li>Beta-testers: IMA Connection
+</ul>
+
+<br></td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+<tr>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000">&nbsp;</td>
+</tr>
+
+</table></center>
+
+</body>
+</html>
diff --git a/http2/data/unchecked.png b/http2/data/unchecked.png
new file mode 100644
index 0000000..0b20e95
--- /dev/null
+++ b/http2/data/unchecked.png
Binary files differ
diff --git a/http2/data/wave1.png b/http2/data/wave1.png
new file mode 100644
index 0000000..3424216
--- /dev/null
+++ b/http2/data/wave1.png
Binary files differ
diff --git a/http2/data/wave2.png b/http2/data/wave2.png
new file mode 100644
index 0000000..758f47d
--- /dev/null
+++ b/http2/data/wave2.png
Binary files differ
diff --git a/http2/data/wave3.png b/http2/data/wave3.png
new file mode 100644
index 0000000..93fd6d3
--- /dev/null
+++ b/http2/data/wave3.png
Binary files differ