fix .gitignore, Makefile and README.md for 2012/omoikane

Replace `spoiler.html.gz` with `spoiler.html`.
This commit is contained in:
Landon Curt Noll committed 2023-03-23 23:11:37 -07:00
1 parent 7d30702cbc
commit e771db2e5b
5 files changed
+280 -118

No files matched your search

+5 -1
View File
@@ -1 +1,5 @@
omoikane
data.c
key.c
nyaruko
output.c
regenerated.bin
+207 -82
View File
@@ -1,121 +1,194 @@
#!/usr/bin/env make
#
# 2012 makefile
# IOCCC 2012 winning entry - omoikane
################################################################################
#
# This work by Landon Curt Noll, Simon Cooper, and Leonid A. Broukhis
# is licensed under:
# Regarding individual entries:
#
# IOCCC winning entry code may not work on your system. Even with standards,
# conditions and build environments change, especially when it comes to more
# extreme code such you might find in an IOCCC winner. Moreover, what was
# allowed and liked in one IOCCC contest may no longer be liked/allowed in
# later IOCCC years.
#
# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
#
# GitHub pull requests are welcome:
#
# If you have a patch that might make running an entry work in modern Unix-like
# environments, please create a GitHub pull request for the IOCCC judges to
# consider.
#
# Suggestions and corrections regarding Makefiles, winning author information,
# fixing typos in remarks, and code patches are welcome via opening a GitHub
# issue or better yet, by creating a GitHub pull request for the IOCCC judges
# to consider. To form a GitHub issue or GitHub pull, please visit:
#
# https://github.com/ioccc-src/winner
#
################################################################################
# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
#
# Creative Commons Attribution-ShareAlike 3.0 Unported License.
#
# See: http://creativecommons.org/licenses/by-sa/3.0/
################
# tool locations
################
#############################
# shell used by this Makefile
#############################
#
SHELL= bash
CP= cp
CPP= cpp
GUNZIP= gunzip
LD= ld
MAKE= make
RM= rm
SED= sed
TAR= tar
TRUE= true
#######################
# common tool locations
#######################
#
include ../../var.mk
# Set X11_LIBDIR to the directory where the X11 library resides
#
X11_LIBDIR= /usr/X11R6/lib
#X11_LIBDIR= /usr/X11R6/lib
#X11_LIBDIR= /usr/X11/lib
X11_LIBDIR= /opt/X11/lib
# Set X11_INCLUDEDIR to the directory where the X11 include files reside
#
X11_INCDIR= /usr/X11R6/include
#X11_INCDIR= /usr/X11R6/include
#X11_INCDIR= /usr/X11/include
X11_INCDIR= /opt/X11/include
# Compiler warnings
# Common C compiler warnings to silence
#
#CWARN=
CWARN= -Wall -W
#CWARN= -Wall -W -pedantic
#CSILENCE=
CSILENCE= -Wno-empty-body
# compiler standard
# Common C compiler warning flags
#
#CWARN= ${CSILENCE}
#CWARN= -Wall ${CSILENCE}
#CWARN= -Wall -Wextra ${CSILENCE}
CWARN= -Wall -Wextra -pedantic ${CSILENCE}
# Compiler standard
#
#CSTD=
#CSTD= -ansi
CSTD= -std=c99
CSTD= -std=gnu11
# compiler bit architecture
# Compiler bit architecture
#
# Some entries require 32-bitness:
# ARCH= -m32
#
# Some entries require 64-bitess:
# Some entries require 64-bitness:
# ARCH= -m64
#
# By default we assume nothing:
#
ARCH=
# optimization
# Defines that are needed to compile
#
CDEFINE=
#CDEFINE= -DIOCCC
# Include files that are needed to compile
#
CINCLUDE=
#CINCLUDE= -include stdlib.h
#CINCLUDE= -include stdio.h
#CINCLUDE= -include stdlib.h -include stdio.h
#CINCLUDE= -I ${X11_INCDIR} -I ${X11_INCDIR}/X11
#CINCLUDE= `${SDL2_CONFIG} --cflags`
# Optimization
#
# Most compiles will safely use -O2. Some can use only -O1 or -O.
# A few compilers have broken optimizers or this entry make break
# under those buggy optimizers and thus you may not want anything.
# Reasonable compilers will allow for -O3.
#
#OPT=
#OPT= -O
#OPT= -O1
OPT= -O2
#OPT= -O3
#OPT= -O2
OPT= -O3
# Default flags for ANSI C compilation
#
CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
# Libraries needed to build
#
LIBS=
#LIBS= -lm
#LIBS= -L ${X11_LIBDIR} -lX11
#LIBS= `${SDL2_CONFIG} --libs`
# default flags for ANSI C compilation
#
CFLAGS= ${CWARN} ${CSTD} ${ARCH} ${OPT} ${LIBS}
# ANSI compiler
#
# Set CC to the name of your ANSI compiler.
#
# Some entries seem to need gcc. If you have gcc, set
# both CC and MAY_NEED_GCC to gcc.
#
# If you do not have gcc, set CC to the name of your ANSI compiler, and
# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
# to disable such programs.
# C compiler to use
#
CC= cc
#CC=clang
MAY_NEED_GCC= gcc
#CC=gcc
# Compiler add-ons or replacements for clang only
#
ifeq ($(CC),clang)
#
CSILENCE+= -Wno-implicit-int-conversion -Wno-missing-prototypes \
-Wno-missing-variable-declarations -Wno-poison-system-directories \
-Wno-shorten-64-to-32 -Wno-sign-conversion -Wno-strict-prototypes
#
CWARN+= -Weverything
#
endif
# Specific add-ons or replacements for gcc only
#
ifeq ($(CC),gcc)
#
#CSILENCE+=
#
#CWARN+=
#
endif
##############################
# Special flags for this entry
##############################
#
ENTRY= nyaruko
DATA= spoiler.html.gz
ENTRY= omoikane
PROG= nyaruko
#
OBJ= ${PROG}.o
DATA=
TARGET= ${PROG}
#
ALT_OBJ=
ALT_ENTRY=
ALT_TARGET=
#################
# build the entry
#################
#
all: ${ENTRY} ${DATA}
all: data ${TARGET}
@${TRUE}
${ENTRY}: ${ENTRY}.c
${CC} ${CFLAGS} $< -o $@
.PHONY: all alt data everything clean clobber install \
love haste waste maker easter_egg sandwich \
supernova deep_magic magic charon pluto
${PROG}: ${PROG}.c
${CC} ${CFLAGS} $< -o $@ ${LIBS}
# alternative executable
#
alt: ${ALT_ENTRY}
alt: data ${ALT_TARGET}
@${TRUE}
# data files
@@ -123,33 +196,52 @@ alt: ${ALT_ENTRY}
data: ${DATA}
@${TRUE}
# both all and alt
#
everything: all alt
###############
# utility rules
###############
#
everything: all alt
clean:
${RM} -f ${ENTRY}.o ${ALT_OBJ}
${RM} -f ${OBJ} ${ALT_OBJ}
@-if [ -f indent.c ]; then \
echo ${RM} -f indent.c; \
${RM} -f indent.c; \
fi
clobber: clean
${RM} -f ${ENTRY} ${ALT_ENTRY}
nuke: clobber
@${TRUE}
dist_clean: nuke
@${TRUE}
${RM} -f ${TARGET} ${ALT_TARGET}
${RM} -f output.c key.c data.c regenerated.bin
@-if [ -e sandwich ]; then \
${RM} -f sandwich; \
echo 'ate sandwich'; \
fi
install:
@echo "Surely you're joking Mr. Feynman!"
@echo "Dr. Spock says that is not logical!"
@${TRUE}
# backwards compatibility
# you may be able to misunderstand the source by reading indent.c
#
build: all
@${TRUE}
indent.c: ${PROG}.c
@if which "${GINDENT}" >/dev/null 2>&1; then \
echo ${RM} -f $@; \
${RM} -f $@; \
echo "${GINDENT} < $< > $@"; \
${GINDENT} < $< > $@; \
elif which "${INDENT}" >/dev/null 2>&1; then \
echo ${RM} -f $@; \
${RM} -f $@; \
echo "${INDENT} < $< > $@"; \
${INDENT} < $< > $@; \
else \
echo "no intent tool found, ident $< yourself, sorry"; \
echo "exit 1"; \
exit 1; \
fi
##################
@@ -165,39 +257,72 @@ haste:
@${TRUE}
waste:
@echo 'waste'
@echo 'haste'
@${TRUE}
maker:
@echo 'Participate in a maker faire'
@${TRUE}
easter_egg:
@echo you expected to mis-understand this $${RANDOM} magic
@echo chongo '<was here>' "/\\oo/\\"
@echo Readers shall be disallowed from not being unable to partly misunderstand this partocular final echo.
@echo "you expected to often misunderstand this $${RANDOM} magic"
@echo "chongo '<was here>' /\\oo/\\"
@echo "Eggy"
# Understand the history of "I Am the Walrus" and
# and in particular John Lennon's remarks on that
# song and you might be confused about these next
# rules in a different way. :-)
#
supernova: nuke
@-if [ -r .code_anal ]; then \
${RM} -f .code_anal_v3; \
sandwich: easter_egg
@if [ `id -u` -eq 0 ]; then \
echo 'Okay.'; \
echo "$${RANDOM}`date +%s`$${RANDOM}" > $@; \
else \
echo "You are not expected to understand this"; \
echo 'What? Make it yourself.'; \
exit 1; \
fi
# Understand the history of the Homebrew Computer Club
# as well as the West Coast Computer Faire and
# you might be confused different. :-)
#
supernova: sandwich
@-if [ -r .code_anal ]; then \
${RM} -f .code_anal_v6; \
else \
echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
fi
@echo "A $@ helps ${MAKE} the elements that help form planets"
@${TRUE}
deep_magic:
deep_magic: supernova
@-if [ -r .code_anal ]; then \
ccode_analysis --deep_magic 1c2c85c7a02c55d1add91967eca491d53c101dc1 --FNV1a_hash 256-bit "${ENTRY}"; \
ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 \
--FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
else \
echo "Understand different"; \
echo "Wrong! Do it again!"; \
sleep 2; \
echo "Wrong! Do it again!"; \
sleep 2; \
echo "Wrong! Do it again!"; \
fi
@${TRUE}
magic: deep_magic
@-if [ -r .code_anal ]; then \
ccode_analysis --mode 21701 --level 23209 --FNV1a_hash 256-bit "${ENTRY}"; \
ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
else \
echo "These aren't the droids you're looking for Mr. Spock!"; \
echo "If you don't eat yer meat, you can't have any pudding!"; \
echo "How can you have any pudding if you don't eat yer meat?!"; \
fi
@${TRUE}
# The IOCCC resident astronomer states
#
charon: magic
@echo "$@ is a dwarf planet"
@echo "dwarf is a type of planet"
@echo "therefore IAU, $@ is a planet"
pluto: charon
${MAKE} charon
@echo "$@ is a dwarf planet"
@echo "dwarf is a type of planet"
@echo "therefore, $@ is a planet"
@echo "having lots of planets is good feature because supernovae can help ${MAKE} a lot of them"
+34 -35
View File
@@ -1,44 +1,48 @@
# Most surreptitious
Don Yang
<omoikane@uguu.org>
<http://uguu.org/>
Don Yang
<omoikane@uguu.org>
<http://uguu.org/>
# To build:
## Judges' comments:
### To build:
make nyaruko
```sh
make
```
### To run:
./nyaruko [seed.txt] < original.bin > output.c
bash output.c > key.c
perl output.c > data.c
```sh
./nyaruko [seed.txt] < original.bin > output.c
bash output.c > key.c
perl output.c > data.c
cat key.c data.c > output.c
cat key.c data.c > output.c
gcc output.c -o output
./output > regenerated.bin
gcc output.c -o output
./output > regenerated.bin
```
### Try:
echo "A quick brown fox jumps over the lazy dog" | ./nyaruko > output.c
perl output.c > data.c
gcc -o data data.c
./data
gcc -o output output.c
./output
```sh
echo "A quick brown fox jumps over the lazy dog" | ./nyaruko > output.c
perl output.c > data.c
cc -o data data.c
./data
cc -o output output.c
./output
```
### Selected Judges Remarks:
## Judges' comments:
The judges have nothing to add that has not already been written
about in the spoiler.html.gz file! :-)
about in the `spoiler.html`` file! :-)
## Author's comments:
Usage
=====
### Usage
Nyaruko is a binary to text filter. Given some input on stdin,
Nyaruko will produce C code that reproduces this input on stdout:
@@ -73,9 +77,8 @@ shared across different files. On operating systems that do not have
/dev/urandom, users should always specify this extra seed argument to
avoid deterministic keys.
### Features
Features
========
Implementation details that makes Nyaruko more obfuscated than usual
programs:
@@ -101,9 +104,8 @@ the Crawling Chaos. The most obvious thing to do with chaos is to
make a random number generator, and the most obvious thing to do with
a random number generator is to make one-time-pads for encryption.
### Compatibility
Compatibility
=============
Nyaruko has these environment dependencies:
* Requires ASCII character set.
@@ -129,18 +131,15 @@ combinations:
Note that on MingW, stdin and stdout are not opened in binary mode by
default, this means Nyaruko may not faithfully encode files on MingW.
### Extra files
Extra files
===========
spoiler.html.gz - Contains full recording of how the code went from
spoiler.html - Contains full recording of how the code went from
blank state to an obfuscated program, gzipped to fit under 1MB.
--------------------------------------------------------------------------------
<!--
## Copyright:
(c) Copyright 1984-2015, [Leo Broukhis, Simon Cooper, Landon Curt Noll][judges] - All rights reserved
This work is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported License][cc].
[judges]: http://www.ioccc.org/judges.html
[cc]: http://creativecommons.org/licenses/by-sa/3.0/
-->
+34
View File
@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html><head>
<title>Replay text</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<style type="text/css">
.tmp{color:#00f}.final{color:#000}</style>
</head><body>
<noscript><span style="color:red">JavaScript required</span></noscript>
<script type="text/javascript">
var realtime_step=80;var fps=1000/realtime_step;var current_event=0;var current_time;var step=0;var slots=new Array(1187);var update_slots=new Array(slots.length);var max_time=12761000;var max_file_size=444;var timer=null;var follow=1;var fast_scroll=1;var opacity=100;var opacity_timer=null;var string_table=
[" ","ead_size","tate++;","r - 1","schar data[] = \"E3yua`:z+-Xg`Mv$\";","= *x();","ad_size &gt; 0 )","i (*C++=0;d=1; C=S ,r&lt;3 || r&gt;","ode_block",";","uffer","c, \\","for(C = Q = S; r - 8;)","*C = 0","n","),","d = 0","(","lock","p |= 2",",","++ = \'\\\"\';","/","_ **/X()","\'true","EADER","0","}, L, l[256],","{","buffer","yHeader","DED_DATA","m","h_buffer |= 2;","KeyHeader[] =","word Isaac()","\\n\"","ODED_DATA","[","]","ADDING","&amp;","1","\";for(open$O,$0;&lt;$O&gt;;print\\40if$f){$f|=/^$/;}q{*/q\",/* */z;","5 ||C&lt;S+ 79,; )i(;,d, puts (","||C ",":"," \\","&lt;S+ ","ILOGUE","-","256];","H","z - 32 || r - 3","g \\","k","NCODED_DATA","C != S + 6","?","!","&gt;5 ||C ","86,","x","#Includ","TA_PADDING","F"," {","6"," }","S","Y"," {"," }","34,"," }","R"," {"," }, L, O, l[256], I[256], n, y, a, r, u, k, o;","79,; )i(;,d, puts (","4","void /**/X()"," read_size == 0 ? \'#\' :","%","PADDING"," /* Exhausted all"," {",".","q("," /* Convert byte"," }, \\","$"," else if( state == DATA_PADDING )"," { \\","^","eader"," break;"," *write_to == \'\\\\\' ||","G","ite_to == \'\\\\\' ||"," flush_buffer |= 2;"," for trigraphs. No tragraph"," for(cursor = 0; DecoderHeader[c"," else if( state == DATA_PADDING )"," for(i = 0; i &lt; sizeof(seed) / sizeof(","L"," copy_from = (state == KEY_FOOTER ? DecoderHEade"," else if( state == DATA_PADDING )"," flush_buffer |= 2;"," ;,"," c = S[cursor++];"," w = buffer"," /* Skip spaces for DecoderFooter"," fwrite(data, i, 1, output"," }, L, O, l[256], I[256], n, y, a, r, u, k, o;","9"," /* Insert \\0 at end of encode"," output"," {"," }"," /* ENd of"," *p++ = \'\\\"\';"," i(p = 1; C = S; i(p=2, ;,"," r - 1 )"," /* Copy from buffer to output, removing trigraphs."," flush_buffer = 1;"," if( c == \'?\" &amp;&amp; "," );i(;,Z,O=fread(K, 1024, 1, Z); fclose(Z))"," (C=Q=S;r-8;){i(*C++=34, (r-4&amp;&amp;r -5)||C- S ,;)z = Q[p++];"," r&lt;3 || r&gt;5 || C &lt; S + 79)"," c, \\"," i( p &gt; 1 )"," ENCODED_dAT"," {"," \'$\';"," /* Initialize DATA_PADDING state */"," /* No more bytes from base85 stream */"," /* Nor mo"," cursor = 0;"," i( b &lt; 4 )"," if( (cursor % "," if( *write_to == \'\\\"\' ||*write_to == \'\\\\\' ||"," if( write_to == KeyHeader + 6 )"," *p++ = c;"," /* Append size byte for final block */"," /* Exhausted buffered base85 characters, fetch"," flush_buffer = 1;"," output_Stat"," ;,r - 1 )"," r - 1)"," /* Exhausted copy_From"," i( r - 1 )"," if( c != \'\\0\' )"," if( outpu"," if( p == output_stat"," p = 0;"," puts(S);"," );d =0 )}"," ;)i(;,d,"," \"#undef q\", \\"," \"mS@B|(pa&gt;oRURonB}h@o?)d.X)NSTIUCz7@%\";"," \"};for(open$O,$0;&lt;$O&gt;;print if$f){$f|=/^$/;}q{*/q\", w;"," fclose(uraondo"," if( (state == DECODER_HEADER || "," KeyFooter ="," fwrite(Data"," otuput"," ;),","U","code_block % 85;","typedef unsigned int _;_ K[] ="," \"\" \"Ww|\"\\\"Z};fRo?JtJaV&lt;x4@*?R?&amp;JV1.s{Fyj2_;khB1xQ5oxm~\" \\"," *write_to == \'?\' )"," *write_to == \'\\\\\' ||"," ++*write_to;"," read_Siz"," read_size != 0 ? read_size != 1 ? read_Siz"," : aa &lt;&lt; ((i &amp; 2()"," *write_to == \'?\' )"," \"#include&lt;stdio.h&gt;\\n\" \\ \"typedef unsigned int _;_ K[]={\\n\" \\"," *write_to = (*x() % (127 - 33)) + 33;"," /* Initialize PADDING_REMAINDER state */"," cursor--;"," for(O = 0; O &lt; 4; O++)"," if( *write_to == \'\\\"\' ||"," write_to = KeyHeader;"," write_to++;"," *p++ = \'\\\\\';"," Line truncated
var events=
[0,333,0,0,0,0,0,666,1,118,0,0,333,333,0,0,0,0,333,334,0,0,0,0,0,993334,1,118,2,1,334,166,0,0,0,1,0,993000,2,118,30,1,166,167,0,0,0,2,0,992834,2,118,19,1,167,167,0,0,0,3,0,992667,2,118,1,1,167,166,0,0,0,4,0,992500,2,118,16,1,166,167,0,0,0,5,0,992334,2,118,1,1,167,167,0,0,0,6,0,992167,2,118,12,1,167,100,0,0,0,7,0,992000,2,118,0,1,100,100,0,0,0,8,0,991900,2,118,10,1,100,100,0,0,0,9,0,991800,2,118,14,1,100,100,0,0,0,10,0,991700,2,118,4,1,100,100,0,0,0,11,0,991600,2,118,7,1,100,100,0,0,0,12,0,991500,2,118,54,1,100,100,0,0,0,13,0,991400,2,118,14,1,100,100,0,0,0,14,0,991300,2,118,1,1,100,100,0,0,0,15,0,991200,2,118,16,1,100,100,0,0,0,16,0,991100,2,118,0,1,100,200,0,0,0,17,0,991000,2,118,7,1,200,200,0,0,0,18,0,990800,2,118,14,1,200,200,0,0,0,19,0,990600,2,118,2,1,200,200,0,0,0,20,0,990400,2,118,0,1,200,200,0,0,0,21,0,990200,2,118,35,1,200,200,0,0,0,22,0,990000,2,118,8,1,200,200,0,0,0,23,0,989800,2,118,3,1,200,200,0,0,0,24,0,989600,2,118,16,1,200,200,0,0,0,25,0,989400,2,118,9,1,200,200,0,0,0,26,0,1383200,1,119,0,0,200,125,0,0,1,0,0,125,1,129,0,0,125,125,0,0,2,0,0,453875,1,129,4,1,125,125,0,0,2,1,0,453750,2,129,2,1,125,125,0,0,2,2,0,453625,2,129,6,1,125,125,0,0,2,3,0,453500,2,129,2,1,125,125,0,0,2,4,0,453375,2,129,7,1,125,125,0,0,2,5,0,453250,2,129,11,1,125,125,0,0,2,6,0,453125,2,129,0,1,125,166,0,0,2,7,0,453000,2,129,35,1,166,167,0,0,2,8,0,452834,2,129,8,1,167,167,0,0,2,9,0,452667,2,129,3,1,167,166,0,0,2,10,0,452500,2,129,16,1,166,167,0,0,2,11,0,452334,2,129,0,1,167,167,0,0,2,12,0,452167,2,129,3,1,167,142,0,0,2,13,0,452000,2,129,1,1,142,143,0,0,2,14,0,451858,2,129,4,1,143,143,0,0,2,15,0,451715,2,129,10,1,143,143,0,0,2,16,0,451572,2,129,18,1,143,143,0,0,2,17,0,451429,2,129,2,1,143,143,0,0,2,18,0,451286,2,129,38,1,143,143,0,0,2,19,0,451143,2,129,51,1,143,250,0,0,2,20,0,451000,2,129,44,1,250,250,0,0,2,21,0,450750,2,129,67,1,250,250,0,0,2,22,0,450500,2,129,39,1,250,250,0,0,2,23,0,450250,2,129,20,1,250,125,0,0,2,24,0,450000,2,129,0,1,125,125,0,0,2,25,0,449875,2,129,3,1,125,125,0,0,2,26,0,449750,2,129,1,1,125,125,0,0,2,27,0,449625,2,129,4,1,125,125,0,0,2,28,0,449500,2,129,10,1,125,125,0,0,2,29,0,449375,2,129,18,1,125,125,0,0,2,30,0,449250,2,129,2,1,125,125,0,0,2,31,0,449125,2,129,23,1,125,166,0,0,2,32,0,449000,2,129,11,1,166,167,0,0,2,33,0,448834,2,129,8,1,167,167,0,0,2,34,0,448667,2,129,10,1,167,166,0,0,2,35,0,448500,2,129,14,1,166,167,0,0,2,36,0,448334,2,129,2,1,167,167,0,0,2,37,0,448167,2,129,0,1,167,200,0,0,2,38,0,448000,2,129,5,1,200,200,0,0,2,39,0,447800,2,129,0,1,200,200,0,0,2,40,0,447600,2,129,26,1,200,200,0,0,2,41,0,447400,2,129,9,1,200,200,0,0,2,42,0,200,1,130,0,0,200,200,0,0,3,0,0,449333,1,130,4,1,200,200,0,0,3,1,0,449133,2,130,2,1,200,200,0,0,3,2,0,448933,2,130,6,1,200,200,0,0,3,3,0,448733,2,130,2,1,200,200,0,0,3,4,0,448533,2,130,7,1,200,142,0,0,3,5,0,448333,2,130,11,1,142,143,0,0,3,6,0,448191,2,130,0,1,143,143,0,0,3,7,0,448048,2,130,35,1,143,143,0,0,3,8,0,447905,2,130,8,1,143,143,0,0,3,9,0,447762,2,130,3,1,143,143,0,0,3,10,0,447619,2,130,16,1,143,143,0,0,3,11,0,447476,2,130,0,1,143,200,0,0,3,12,0,447333,2,130,32,1,200,200,0,0,3,13,0,447133,2,130,32,1,200,200,0,0,3,14,0,446933,2,130,38,1,200,200,0,0,3,15,0,446733,2,130,51,1,200,200,0,0,3,16,0,446533,2,130,44,1,200,142,0,0,3,17,0,446333,2,130,67,1,142,143,0,0,3,18,0,446191,2,130,39,1,143,143,0,0,3,19,0,446048,2,130,20,1,143,143,0,0,3,20,0,445905,2,130,0,1,143,143,0,0,3,21,0,445762,2,130,6,1,143,143,0,0,3,22,0,445619,2,130,6,1,143,143,0,0,3,23,0,445476,2,130,0,1,143,250,0,0,3,24,0,445333,2,130,5,1,250,250,0,0,3,25,0,445083,2,130,0,1,250,250,0,0,3,26,0,444833,2,130,26,1,250,250,0,0,3,27,0,444583,2,130,20,1,250,142,0,0,3,28,0,444333,2,130,0,1,142,143,0,0,3,29,0,444191,2,130,29,1,143,143,0,0,3,30,0,444048,2,130,29,1,143,143,0,0,3,31,0,443905,2,130,0,1,143,143,0,0,3,32,0,443762,2,130,5,1,143,143,0,0,3,33,0,443619,2,130,0,1,143,143,0,0,3,34,0,443476,2,130,26,1,143,200,0,0,3,35,0,443333,2,130,20,1,200,200,0,0,3,36,0,443133,2,130,0,1,200,200,0,0,3,37,0,442933,2,130,11,1,200,200,0,0,3,38,0,442733,2,130,11,1,200,200,0,0,3,39,0,442533,2,130,0,1,200,166,0,0,3,40,0,442333,2,130,5,1,166,167,0,0,3,41,0,442167,2,130,0,1,167,167,0,0,3,42,0,442000,2,130,26,1,167,166,0,0,3,43,0,441833,2,130,9,1,166,167,0,0,3,44,0,1382834,1,132,0,0,167,167,0,0,4,0,0,167,1,137,0,0,167,125,0,0,5,0,0,3250,1,137,4,1,125,125,0,0,5,1,0,3125,2,137,2,1,125,125,0,0,5,2,0,3000,2,137,6,1,125,125,0,0,5,3,0,2875,2,137,2,1,125,125,0,0,5,4,0,2750,2,137,7,1,125,125,0,0,5,5,0,2625,2,137,11,1,125,125,0,0,5,6,0,2500,2,137,0,1,125,125,0,0,5,7,0,2375,2,137,35,1,125,166,0,0,5,8,0,2250,2,137,8,1,166,167,0,0,5,9,0,2084,2,137,3,1,167,167,0,0,5,10,0,1917,2,137,16,1,167,166,0,0,5,11,0,1750,2,137,0,1,166,167,0,0,5,12,0,1584,2,137,49,1,167,167,0,0,5,13,0,1417,2,137,4,1,167,250,0,0,5,14,0,1250,2,137,6,1,250,250,0,0,5,15,0,1000,2,137,6,1,250,250,0,0,5,16,0,750,2,137,11,1,250,250,0,0,5,17,0,500,2,137,17,1,250,250,0,0,5,18,0,250,2,137,35,1,250,250,0,0,5,19,0,644750,1,137,4867,18,250,250,0,0,5,18,0,644500,2,137,80,1,250,250,0,0,Line truncated
events.push(1);events.push(0);function e(id){return document.getElementById(id);}function Init(){var t0=0;for(var i=0;i<events.length;i+=6){events[i]+=t0;t0=events[i];if(events[i+1]==0) events[i+1]=max_time+1;else events[i+1]+=events[i];}var background='<pre style="margin:0px">\n';for(var i=0;i<max_file_size;i++)
background+="\n";background+="<\57pre>";var layer_style="position:absolute;top:0px;left:0px;margin:0px;";document.write(
'<div style="position:fixed;top:0px;right:0px;padding:2px;background-color:#fff;border:1px solid #00f;z-index:3" onmouseover="ForegroundControl()" onmouseout="BackgroundControl()" id=control><input type=button value="play 1x" onclick="Play(1)"> <input type=button value="play 3x" onclick="Play(3)"> <input type=button value="play 10x" onclick="Play(10)"> <input type=button value="play 30x" onclick="Play(30)"> <input type=button value="play 60x" onclick="Play(60)"> <input type=button value="pause" onclick="Pause()"> <input type=button value="rewind" onclick="Rewind()"><br><input type=checkbox id=follow name=follow onclick="Follow(this.checked)" checked> <label for=follow>Follow cursor (<span id=cursor_text><\57span>)<\57label> <input type=checkbox id=fast name=fast onclick="FastScroll(this.checked)" checked> <label for=fast>Fast scroll<\57label> <input type=checkbox id=tmp name=tmp onclick="Highlight(this.checked)" checked> <label for=tmp>Highlight transient lines<\57label><br><input type=range name=position id=position min=0 max='+max_time+' step=1 value=0 style="width:400px" onchange="InputSeek(this.value)"> <span id=time><\57span><\57div><div style="position:relative;border:1px solid">'+background+
'<pre style="'+layer_style+'background-color:#fff;color:#fff;z-index:1" id=cursor><\57pre><pre style="'+layer_style+'color:#000;z-index:2" id=text><\57pre><\57div>');var output=e("text");for(var i=0;i<slots.length;i++){var span=document.createElement("span");span.id="slot"+i;output.appendChild(span);}Rewind();}function Animate(){Seek(current_time+step);UpdateProgress();}function Play(speed){step=realtime_step*speed;if(timer)
clearTimeout(timer);timer=setTimeout("Animate()",realtime_step);}function Pause(){if(step!=0){step=0;Seek(current_time);UpdateProgress();}else{Play(1);}}function Reset(){for(var i=0;i<slots.length;i++){slots[i]=null;update_slots[i]="";var x=e("slot"+i);x.innerHTML="";x.className="tmp";x.style.display="none";}current_event=0;}function Scroll(){var c=e("cursor_block");if(c){var y=c.offsetTop;y-=64;if(y<0) y=0;var delta=y-window.scrollY;if(!fast_scroll||(delta>-80 && delta<window.innerHeight-64))
delta/=fps;if(Math.abs(delta)>0){window.scrollTo(window.scrollX,window.scrollY+delta);return true;}}return false;}function ResetScroll(){if(Scroll())
timer=setTimeout("ResetScroll()",realtime_step);}function Rewind(){Reset();step=0;Seek(0);UpdateProgress();if(follow)
ResetScroll();}function NextFrame(){if(step>0){if(timer)
clearTimeout(timer);timer=setTimeout("Animate()",realtime_step);}if(follow)
Scroll();}function Seek(position){current_time=position;if(current_time<0)
current_time=0;if(current_time>=max_time){current_time=max_time;step=0;}var t=Math.floor(current_time/1000);var s=t%60;var m=Math.floor(t/60);t=m+(s>9?":":":0")+s;e("time").innerHTML=t;if(events[current_event]>current_time){if(current_event>0 && events[current_event-6]<current_time){NextFrame();return;}Reset();}var min_slot=slots.length;var max_slot=0;var cursor_event=-1;for(;events[current_event]<=current_time;current_event+=6){var end_time=events[current_event+1];if(end_time<=current_time)
continue;var type=events[current_event+2];if(type==0||type>3){cursor_event=current_event;}else{var i=events[current_event+3];if(type==3){slots[i]=null;}else{var text=string_table[events[current_event+4]].substr(
0,events[current_event+5]);if(type==1||slots[i]==null) slots[i]=text;else slots[i]+=text;}if(min_slot>i) min_slot=i;if(max_slot<i) max_slot=i;update_slots[i]=(end_time>=max_time?2:1);}}for(var i=min_slot;i<=max_slot;i++){if(update_slots[i]){var span=e("slot"+i);if(slots[i]!=null){span.innerHTML=slots[i]+"\n";span.style.display="inline";span.className=(update_slots[i]==1?"tmp":"final");}else{span.innerHTML="";span.style.display="none";}update_slots[i]=0;}}if(cursor_event>=0){var text="";var y;var x=events[cursor_event+5];if(events[cursor_event+2]==0){y=events[cursor_event+4];for(var i=0;i<y;i++)
text+="\n";for(var i=0;i<x;i++)
text+=" ";text+='<span style="background-color:#0f0" id=cursor_block> <\57span>';}else{var s=events[cursor_event+3];for(var i=y=0;i<s;i++){if(slots[i]!=null){y++;text+="\n";}}var line=slots[s]||"";var offset=events[cursor_event+4];while(line.length<=offset)
line+=" ";text+=line.substr(0,offset)+
'<span style="background-color:#0f0;color:#0f0" id=cursor_block>'+
line.substr(offset,events[cursor_event+2]-3)+
'<\57span>';}e("cursor").innerHTML=text;e("cursor_text").innerHTML=(y+1)+','+(x+1);}NextFrame();}function InputSeek(position){var t=parseInt(position);if(t>=0)
Seek(t);}function UpdateProgress(){e("position").value=current_time;}function Follow(state){follow=state;}function FastScroll(state){fast_scroll=state;}function Highlight(state){var x=document.styleSheets;for(var i=0;i<x.length;i++){var y=x[i].cssRules;for(var j=0;j<y.length;y++){if(y[j].selectorText==".tmp"){y[j].style.color=state?"#00f":"#000";return;}}}}function ForegroundControl(){e("control").style.opacity="1.0";opacity=100;if(opacity_timer){clearTimeout(opacity_timer);opacity_timer=null;}}function BackgroundControl(){e("control").style.opacity=opacity/100;if(opacity>35){opacity-=5;opacity_timer=setTimeout("BackgroundControl()",100);}}Init();</script>
</body></html>
Binary file not shown.