#!/usr/bin/perl # # This is a X11 replay program. It will replay a session using # the timestamps from the packet log, and transpose the X11 protocol so # that it can be redisplayed. You must have captured from the start # of the connection for this to work. # # USAGE: ./session_0001.X11.replay [-d destination host] [-p port] factor # # just run the script as normal. You can provide a factor as an # argument, eg "2" to run twice as fast, or "0.5" to run # at half time. eg, # ./session_0002.X11.replay 2 # a different host and port can be specified if needed. eg, # ./session_0002.X11.replay -d 192.168.1.5 -p 6001 # # PROBLEMS: you may need to authorise this connection to the X11 server # before it works. You could run "xhost +hostname" beforehand. # The playback needs to have captured the start of the connection. # Check you support the same colour depth as the playback. And check # the playback file simply isn't too big! (more than 500 Kb is # currently problematic). # # # Auto generated by Chaosreader. # use IO::Socket; use Getopt::Std; if ($ARGV[0] =~ /^-h$|^--help$/) { &help(); } # Try fetching values from $DISPLAY ($hostdef,$portdef) = $ENV{DISPLAY} =~ /([^:]*):(\d*)/; $hostdef = "127.0.0.1" if $hostdef eq ""; $portdef += 6000; # Command line options take preference &getopts('d:p:'); if (defined $opt_d) { $host = $opt_d; } else { $host = $hostdef; } if (defined $opt_p) { $port = $opt_p; } else { $port = $portdef; } $factor = $ARGV[0] || 1; $DEBUG = 0; $| = 1; print "Chaosreader X11 Replay (experimental)\n\n"; print "Connecting to $host:$port\n"; print "(problems? try running \"xhost +hostname\" first).\n\n"; # --- Open Socket --- # $remote = IO::Socket::INET->new( Proto => "tcp", PeerAddr => $host, PeerPort => $port, ); unless ($remote) { die "ERROR31: Can't connect to X11 daemon on $host:$port"; } $remote->autoflush(1); # --- Subroutines --- # # ms - sleeps for specified milliseconds # sub ms { $ms = shift; $ms = $ms / $factor; select(undef, undef, undef, $ms); } # help - print help # sub help { open (MYSELF,"$0") || die "ERROR8: I can't see myself: $!\n"; @Myself = ; close MYSELF; ### Print comment from top of code foreach $line (@Myself) { last if $line !~ /^#/; next if $line =~ m:^#!/usr/bin/perl:; $line =~ s/^#/ /; print $line; } print "\n"; exit(0); } # R - recalculates and prints a resourse setting # The single character subroutine name saves on file space below. # sub R { #$offset = shift; #$new = $res + $offset; my $rid = shift; my $new; # final checks $diff = $rid - $ridbaseold; $diff = -$diff if $diff < 0; if ((($rid < $ridbaseold) && ($rid < 8196)) || ($diff > 8196)) { if ($msb) { return pack('N',$rid); } else { return pack('V',$rid); } } $new = $rid & $ridmaskold; $new = $new | $ridbase; if ($msb) { return pack('N',$new); } else { return pack('V',$new); } } # D - prints the new Drawable, usually the rootid. # sub D { my $rid = shift; # final checks if ($rid >= $ridbaseold) { # return mapped resource id return R($rid); } # return rootid if ($msb) { return pack('N',$rootid); } else { return pack('V',$rootid); } } # C - prints the new Colour map. # sub C { my $rid = shift; # final checks if ($rid >= $ridbaseold) { # return mapped resource id return R($rid); } # return colour map if ($msb) { return pack('N',$colour); } else { return pack('V',$colour); } } # M - Returns a generic mapped id. Can be rootid, colour, or resource. # These are used in Xcodes involving a mask. # sub M { my $rid = shift; # final checks if ($rid >= $ridbaseold) { # return mapped resource id return R($rid); } # return rootid map if ($rid == $rootidold) { if ($msb) { return pack('N',$rootid); } else { return pack('V',$rootid); } } # return colour map if ($rid == $colourold) { if ($msb) { return pack('N',$colour); } else { return pack('V',$colour); } } # return other if ($msb) { return pack('N',$rid); } else { return pack('V',$rid); } } # P - Check depth pixels, print warning if there is a mismatch. # sub P { my $depth = shift; if (! defined $Depth{$depth}) { print "\nWARNING: requested depth $depth may not be ". "supported by the server?\n"; } } # debug - print out a value # sub debug { my $word = shift; my $num = shift; my $pack = pack("N",$num); print "$word: $num ", sprintf("%2.2x%2.2x%2.2x%2.2x\n",unpack("C*",$pack)); } # --- MAIN --- # print "Sending X11 traffic:"; print '.'; print $remote ''; print '.'; print $remote ''; print '.'; print $remote 'l '; $msb = 0; $ridbaseold = 138412032; $ridmaskold = 4194303; $rootidold = 37; $colourold = 33; if ($msb) { $n = "n"; $N = "N"; } else { $n = "v"; $N = "V"; } read($remote,$in,40); # (xConnSetup) ($success,$major,$minor,$length,$release,$ridbase,$ridmask,$mbsize,$vendor, $reqmax,$roots,$formats,$ibo,$bbo,$bslu,$bslp,$keymin,$keymax,$pad) = unpack("a2$n$n$n$N$N$N$N$n${n}CCCCCCCC${N}a*",$in); read($remote,$in,$vendor); print "\nX11 Server Type: $in\n"; read($remote,$in,((4 - ($vendor % 4)) % 4)); foreach $i (1..$formats) { read($remote,$in,8); # (xPixmapFormat) ($depth,$junk) = unpack("Ca*",$in); $Depth{$depth} = 1; next if $depth == 1; print "X11 server supports $depth bit resolution\n"; } read($remote,$in,8); # (xWindowRoot) ($rootid,$colour,$junk) = unpack("$N$N",$in) unless defined $rootid; if ($DEBUG) { debug("Resource ID new: ",$ridbase); debug("Resource ID old: ",$ridbaseold); debug("Root ID new: ",$rootid); debug("Root ID old: ",$rootidold); debug("Colour map new: ",$colour); debug("Colour map old: ",$colourold); } ms(0.00381994247436523); print '.'; print $remote ''; print '.'; print $remote '7',R(138412032),'',D(37),'',M(16777215),'b',R(12),'BIG-REQUESTS',D(37),''; ms(0.00576019287109375); print '.'; print $remote ''; print '.'; print $remote ''; print '.'; print $remote ''; ms(0.0188601016998291); print '.'; print $remote 'b',R(138412041),'XKEYBOARD'; print '.'; print $remote '',R(138412043),'Custom Init'; ms(0.00410008430480957); print '.'; print $remote '',R(138412043),'Custom Data'; ms(0.0148899555206299); print '.'; print $remote '',R(138412048),'SCREEN_RESOURCES'; print '.'; print $remote '',D(37),''; ms(0.00282001495361328); print '.'; print $remote ' ',R(27),'XDCCC_LINEAR_RGB_CORRECTIONU'; print '.'; print $remote ' ',R(25),'XDCCC_LINEAR_RGB_MATRICESONU'; print '.'; print $remote '',D(37),'t'; print '.'; print $remote 'T',C(33),''; ms(0.00347018241882324); print '.'; print $remote 'T',C(33),''; ms(0.00251984596252441); print '.'; print $remote '-',R(138412033),'cursorb',R(1413545990),'RENDER'; print '.'; print $remote '^',R(138412034),'',R(138412033),'',R(138412033),'bO',R(1398013967),'XFree86-Bigfont'; print '.'; print $remote '-',R(138412035),'@nil2/',R(138412035),''; ms(0.00663995742797852); print '.'; print $remote ''; print '.'; print $remote '^',R(138412036),'',R(138412033),'',R(138412033),'tu^O',R(138412037),'',R(138412033),'',R(138412033),'lm^',R(138412038),'',R(138412033),'',R(138412033),'rs^',R(138412039),'',R(138412033),'',R(138412033),'jk^',R(138412040),'',R(138412033),'',R(138412033),'no^',R(138412041),'',R(138412033),'',R(138412033),'pq5',R(138412042),'',D(37),'7',R(138412043),'',D(138412042),' ',M(1),'',M(0),'H',D(138412042),'',R(138412043),'@<',R(138412043),'7',R(138412044),'',D(37),' ',M(12825262),'',M(3),'',M(138412042),'^',R(138412045),'',R(138412033),'',R(138412033),'DE[',C(33),''; ms(0.0141799449920654); print '.'; print $remote '`',R(138412045),'',R(4294901776),'WM_DELETE_WINDOW'; ms(0.00270986557006836); print '.'; print $remote ' ',P(24),'',D(138412046),'',D(37),'',R(0),'(',M(12825262),'',M(0),'',M(1),'',M(6422576),'',M(33),'',R(138412046),'\'',R(138412040),'xterms',R(138412046),'%',R(138412040),'xtermk',R(138412046),'"',R(138412040),'xtermo',R(138412046),'$',R(138412040),'jupiter',R(138412046),'()',R(138412064),'',R(138412046),'##',R(32),'  ',R(138412046),'C',R(8),' xtermXTerm',R(14),'WM_LOCALE_NAME'; ms(0.00846004486083984); print '.'; print $remote ' ',R(138412046),'m',R(65544),' en_US.UTF-8 ',R(138412046),'m',R(524296),' en_US.UTF-8',R(1919221776),'WM_CLIENT_LEADER'; ms(0.00258994102478027); print '.'; print $remote '',R(138412046),'n!',R(65568),'@-.',R(138412047),'5 -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-*DER/',R(138412047),''; ms(0.00226020812988281); print '.'; print $remote '-',R(138412048),'fixed/',R(138412048),''; ms(0.00444984436035156); print '.'; print $remote ''; print '.'; print $remote '',R(138412036),'FONT'; print '.'; print $remote 'd'; print '.'; print $remote '-',R(138412049),'<NT-Misc-Fixed-bold-R-SemiCondensed--13-120-75-75-C-*-ISO8859-1/l',R(138412049),''; ms(0.0137500762939453); print '.'; print $remote ''; print '.'; print $remote ''; print '.'; print $remote '-',R(138412050),'5NT-Misc-Fixed-Medium-R-*-*-13-120-75-75-C-120-ISO8859-1O88/9',R(138412050),''; ms(0.0153999328613281); print '.'; print $remote '7',R(138412051),'',D(37),'@',M(12825262),'',M(138412048),'7e',R(138412052),'',D(37),'@',M(12825262),'',M(138412049),'7-',R(138412053),'',D(37),' @',M(12825262),'',M(0),'',M(138412048),'7',R(138412054),'',D(37),' @',M(12825262),'',M(0),'',M(138412049),'[',C(33),''; ms(0.0231599807739258); print '.'; print $remote '`',R(138412034),' ',R(138412046),' @',M(499),'',M(316),'',R(138412046),'()',R(32),'<'; ms(0.0131199359893799); print '.'; print $remote '',R(138412046),'()',R(4294967072),'X< '; ms(0.0387601852416992); print '.'; print $remote ''; ms(0.0586400032043457); print '.'; print $remote ' ',D(138412055),'',D(138412046),'<',R(0),'(',M(12825262),'',M(0),'',M(0),'',M(4359437),'',M(33),'',R(138412055),'',D(138412055),''; ms(0.0029599666595459); print '.'; print $remote ''; print '.'; print $remote '',R(138412055),'',D(138412055),''; print '.'; print $remote 'w'; ms(0.00200009346008301); print '.'; print $remote 'e',R(138475528),''; ms(0.00619983673095703); print '.'; print $remote ''; print '.'; print $remote 'w'; print '.'; print $remote '',R(138412046),'@@ ',D(138412056),'',D(138412055),'<',R(0),' h',M(12825262),'',M(0),'',M(33293),'',M(33),'',M(138412036),'',D(138412046),'()'; print '.'; print $remote '',R(138412046),'()',R(858144),'X< +'; print '.'; print $remote '',R(138412046),'()',R(858144),'X< ',R(138412056),'',R(138412055),' ',R(0),'',R(138412055),' ',R(0),'e',R(63496),''; ms(0.00334000587463379); print '.'; print $remote ''; print '.'; print $remote 'w'; print '.'; print $remote '',R(138412055),' ',R(0),'',R(138412055),' ',R(0),'',R(138412055),' ',R(0),'',R(138412055),' ',R(0),' ',R(138412046),'',R(138412046),'0b',R(262156),'WM_PROTOCOLS'; ms(0.00956988334655762); print '.'; print $remote '',R(138412046),'s',R(32),'r',R(138412046),'s',R(393248),'r',R(138412046),'M',D(138412055),'',R(138412051),' A',D(138412055),'',R(138412051),' '; print '.'; print $remote '',R(138412046),'1b',R(138412055),' ',R(0),'',R(138412055),' ',R(0),'',R(138412055),' ',R(0),'',R(138412055),' ',R(0),'',R(138412055),' ',R(0),'O',R(138412055),' ',R(0),'',R(138412055),' @'; ms(0.0387699604034424); print '.'; print $remote ''; ms(0.00432014465332031); print '.'; print $remote ''; ms(0.0290398597717285); print '.'; print $remote ''; print '.'; print $remote 'F',D(138412056),'',R(138412044),' :'; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :A',D(138412055),'',R(138412051),' '; ms(0.00411009788513184); print '.'; print $remote 'M',D(138412055),'',R(138412053),' :'; ms(0.0236198902130127); print '.'; print $remote ' ',R(138412046),'%',R(20586504),'brendan@jupiter:~  ',R(138412046),'\'',R(262152),'brendan@jupiter:~'; ms(0.00655007362365723); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),' [brendan@jupiter brendan]$ M',D(138412055),'',R(138412053),' '; ms(0.61161994934082); print '.'; print $remote ''; ms(0.563390016555786); print '.'; print $remote ''; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :'; print '.'; print $remote 'M',D(138412055),'',R(138412053),' :'; ms(1.76959013938904); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412053),' b'; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'[brendan@jupiter brendan]$ M',D(138412055),'',R(138412053),' '; ms(0.906929969787598); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412053),'\' b'; print '.'; print $remote 'M',D(138412055),'',R(138412051),'\' :M',D(138412055),'',R(138412051),'\'[brendan@jupiter brendan]$ M',D(138412055),'',R(138412053),'\' '; ms(0.210129976272583); print '.'; print $remote 'M',D(138412055),'',R(138412051),'\' :M',D(138412055),'',R(138412051),'\'dbM',D(138412055),'',R(138412053),'\' p'; ms(0.0514800548553467); print '.'; print $remote 'M',D(138412055),'',R(138412051),'\' :M',D(138412055),'',R(138412051),'\'abM',D(138412055),'',R(138412053),'\' p'; ms(0.116859912872314); print '.'; print $remote 'M',D(138412055),'',R(138412051),'\' :M',D(138412055),'',R(138412051),'\'tbM',D(138412055),'',R(138412053),'\' p'; ms(0.0879600048065186); print '.'; print $remote 'M',D(138412055),'',R(138412051),'\' :M',D(138412055),'',R(138412051),'\'ebM',D(138412055),'',R(138412053),'\' p'; ms(0.288850069046021); print '.'; print $remote 'M',D(138412055),'',R(138412051),'\' :M',D(138412055),'',R(138412053),'4 b'; ms(0.00344991683959961); print '.'; print $remote 'M',D(138412055),'',R(138412051),'4 :M',D(138412055),'',R(138412051),'4Tue Jan 27 14:01:40 EST 2004'; print '.'; print $remote 'M',D(138412055),'',R(138412053),'A :'; print '.'; print $remote 'M',D(138412055),'',R(138412051),'A :M',D(138412055),'',R(138412051),'A[brendan@jupiter brendan]$ 4M',D(138412055),'',R(138412053),'A '; ms(0.120290040969849); print '.'; print $remote 'M',D(138412055),'',R(138412051),'A :M',D(138412055),'',R(138412053),'N b'; print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'N[brendan@jupiter brendan]$ 4M',D(138412055),'',R(138412053),'N '; ms(0.977269887924194); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'NsbM',D(138412055),'',R(138412053),'N p'; ms(0.135440111160278); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'NubM',D(138412055),'',R(138412053),'N p'; ms(0.147229909896851); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'N bM',D(138412055),'',R(138412053),'N p'; ms(0.173029899597168); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'N-bM',D(138412055),'',R(138412053),'N p'; ms(0.141390085220337); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'N bM',D(138412055),'',R(138412053),'N p'; ms(0.246229887008667); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'NfbM',D(138412055),'',R(138412053),'N p'; ms(0.178400039672852); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'NrbM',D(138412055),'',R(138412053),'N p'; ms(0.180150032043457); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'NebM',D(138412055),'',R(138412053),'N p'; ms(0.225950002670288); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412051),'NdbM',D(138412055),'',R(138412053),'N p'; ms(0.361079931259155); print '.'; print $remote 'M',D(138412055),'',R(138412051),'N :M',D(138412055),'',R(138412053),'[ b'; ms(0.00697016716003418); print '.'; print $remote 'M',D(138412055),'',R(138412051),'[ :M ',D(138412055),'',R(138412051),'[Password: M',D(138412055),'',R(138412053),'M[ e'; ms(0.790469884872437); print '.'; print $remote ''; ms(0.154970169067383); print '.'; print $remote ''; ms(0.196329832077026); print '.'; print $remote ''; ms(0.220350027084351); print '.'; print $remote ''; ms(0.258330106735229); print '.'; print $remote ''; ms(0.186489820480347); print '.'; print $remote ''; ms(0.202230215072632); print '.'; print $remote ''; ms(0.329059839248657); print '.'; print $remote ''; print '.'; print $remote 'M',D(138412055),'',R(138412051),'M[ :M',D(138412055),'',R(138412053),'h a'; ms(0.129460096359253); print '.'; print $remote ' ',R(138412046),'%',R(20586504),'fred@jupiter:~a ',R(138412046),'\'',R(327944),'fred@jupiter:~d'; ms(0.00641989707946777); print '.'; print $remote 'M',D(138412055),'',R(138412051),'h :M',D(138412055),'',R(138412051),'h[fred@jupiter fred]$ dM',D(138412055),'',R(138412053),'h @'; ms(0.462549924850464); print '.'; print $remote 'M',D(138412055),'',R(138412051),'h :M',D(138412055),'',R(138412053),'u f'; print '.'; print $remote 'M',D(138412055),'',R(138412051),'u :M',D(138412055),'',R(138412051),'u[fred@jupiter fred]$ dM',D(138412055),'',R(138412053),'u @'; ms(0.131380081176758); print '.'; print $remote 'M',D(138412055),'',R(138412051),'u :M',D(138412055),'',R(138412053),' f'; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'[fred@jupiter fred]$ dM',D(138412055),'',R(138412053),' @'; ms(0.627170085906982); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'dfM',D(138412055),'',R(138412053),' e'; ms(0.0509798526763916); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'afM',D(138412055),'',R(138412053),' e'; ms(0.123820066452026); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'tfM',D(138412055),'',R(138412053),' e'; ms(0.0621199607849121); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'efM',D(138412055),'',R(138412053),' e'; ms(0.16483998298645); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412053),' f'; ms(0.00335001945495605); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'Tue Jan 27 14:01:47 EST 2004'; print '.'; print $remote 'M',D(138412055),'',R(138412053),' :'; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'[fred@jupiter fred]$ SM',D(138412055),'',R(138412053),' @'; ms(0.499899864196777); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412053),' f'; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'[fred@jupiter fred]$ SM',D(138412055),'',R(138412053),' @'; ms(0.309040069580078); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'ufM',D(138412055),'',R(138412053),' e'; ms(0.0440700054168701); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'nfM',D(138412055),'',R(138412053),' e'; ms(0.0672500133514404); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'afM',D(138412055),'',R(138412053),' e'; ms(0.110619783401489); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'mfM',D(138412055),'',R(138412053),' e'; ms(0.0664200782775879); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'efM',D(138412055),'',R(138412053),' e'; ms(0.089479923248291); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),' fM',D(138412055),'',R(138412053),' e'; ms(0.377300024032593); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'-fM',D(138412055),'',R(138412053),' e'; ms(0.0731301307678223); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'afM',D(138412055),'',R(138412053),' e'; ms(0.127719879150391); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412053),' f'; ms(0.00289011001586914); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :MO,',D(138412055),'',R(138412051),'Linux jupiter 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux'; print '.'; print $remote 'M',D(138412055),'',R(138412053),' :'; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'[fred@jupiter fred]$ 8M',D(138412055),'',R(138412053),' a'; ms(0.83144998550415); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412053),' f'; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'[fred@jupiter fred]$ 8M',D(138412055),'',R(138412053),' a'; ms(0.0767700672149658); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'cfM',D(138412055),'',R(138412053),' e'; ms(0.090789794921875); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'afM',D(138412055),'',R(138412053),' e'; ms(0.120670080184937); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'tfM',D(138412055),'',R(138412053),' e'; ms(0.101670026779175); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),' fM',D(138412055),'',R(138412053),' e'; ms(0.191299915313721); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'/fM',D(138412055),'',R(138412053),' e'; ms(0.491120100021362); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'efM',D(138412055),'',R(138412053),' e'; ms(0.07423996925354); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'tfM',D(138412055),'',R(138412053),' e'; ms(0.217469930648804); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'cfM',D(138412055),'',R(138412053),' e'; ms(0.0925700664520264); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'/fM',D(138412055),'',R(138412053),' e'; ms(0.191410064697266); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'rfM',D(138412055),'',R(138412053),' e'; ms(0.0655899047851562); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'efM',D(138412055),'',R(138412053),' e'; ms(0.286640167236328); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'dfM',D(138412055),'',R(138412053),' e'; ms(0.37007999420166); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'hfM',D(138412055),'',R(138412053),' e'; ms(0.138099908828735); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'afM',D(138412055),'',R(138412053),' e'; ms(0.118449926376343); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'tfM',D(138412055),'',R(138412053),' e'; ms(0.356709957122803); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'-fM',D(138412055),'',R(138412053),' e'; ms(0.124360084533691); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'rfM',D(138412055),'',R(138412053),' e'; ms(0.236999988555908); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'elease @M',D(138412055),'',R(138412053),' d'; ms(0.385240077972412); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412053),' l'; ms(0.00436997413635254); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M ',D(138412055),'',R(138412051),'Red Hat Linux release 9 (Shrike)'; print '.'; print $remote 'M',D(138412055),'',R(138412053),' :'; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'[fred@jupiter fred]$ M',D(138412055),'',R(138412053),' )'; ms(1.72868990898132); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412053),' f'; print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'[fred@jupiter fred]$ M',D(138412055),'',R(138412053),' )'; ms(0.171289920806885); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'cfM',D(138412055),'',R(138412053),' e'; ms(0.0791399478912354); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'afM',D(138412055),'',R(138412053),' e'; ms(0.0470600128173828); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'lfM',D(138412055),'',R(138412053),' e'; ms(0.66471004486084); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412053),' f'; ms(0.00314998626708984); print '.'; print $remote 'M',D(138412055),'',R(138412051),' :M ',D(138412055),'',R(138412051),' January 2004'; print '.'; print $remote 'M',D(138412055),'',R(138412053),' :M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),'Su Mo Tu We Th Fr Sa M',D(138412055),'',R(138412053),' :M',D(138412055),'',R(138412051),' :M',D(138412055),'',R(138412051),' 1 2 3M',D(138412055),'',R(138412053),'+ :M',D(138412055),'',R(138412051),'+ :M',D(138412055),'',R(138412051),'+ 4 5 6 7 8 9 10M',D(138412055),'',R(138412053),'8 :M',D(138412055),'',R(138412051),'8 :M',D(138412055),'',R(138412051),'811 12 13 14 15 16 17'; print '.'; print $remote '=',R(138412056),' > ',D(138412055),'',D(138412055),'',R(138412051),'+2',R(138412055),'=',R(138412055),'-  ',R(138412055),'M',D(138412055),'',R(138412053),'8 1'; print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 M',D(138412055),'',R(138412051),'818 19 20 21 22 23 24'; print '.'; print $remote '=',R(138412056),' '; ms(0.0073699951171875); print '.'; print $remote '>',D(138412055),'',D(138412055),'',R(138412051),'+',R(138412055),'=',R(138412055),'- 2',R(138412055),'M',D(138412055),'',R(138412053),'8 '; print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 M',D(138412055),'',R(138412051),'825 26 27 28 29 30 31'; print '.'; print $remote '=',R(138412056),' '; ms(0.0047001838684082); print '.'; print $remote '>',D(138412055),'',D(138412055),'',R(138412051),'',R(138412055),'=',R(138412055),' 2',R(138412055),'M',D(138412055),'',R(138412053),'8 '; print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 M',D(138412055),'',R(138412051),'8[fred@jupiter fred]$ M',D(138412055),'',R(138412053),'8 @'; ms(0.0440900325775146); print '.'; print $remote ''; ms(0.693330049514771); print '.'; print $remote ''; print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 M',D(138412055),'',R(138412051),'8efM',D(138412055),'',R(138412053),'8 e'; ms(0.0500001907348633); print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 M',D(138412055),'',R(138412051),'8xfM',D(138412055),'',R(138412053),'8 e'; ms(0.144569873809814); print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 M',D(138412055),'',R(138412051),'8ifM',D(138412055),'',R(138412053),'8 e'; ms(0.0751299858093262); print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 M',D(138412055),'',R(138412051),'8tfM',D(138412055),'',R(138412053),'8 e'; ms(1.33067011833191); print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 '; print '.'; print $remote '=',R(138412056),'- > ',D(138412055),'',D(138412055),'',R(138412051),'+',R(138412055),'=',R(138412055),'-  ',R(138412055),'M',D(138412055),'',R(138412053),'8 1'; print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 M',D(138412055),'',R(138412051),'8logout'; print '.'; print $remote '=',R(138412056),'6 '; ms(0.00533008575439453); print '.'; print $remote '>',D(138412055),'',D(138412055),'',R(138412051),'+',R(138412055),'=',R(138412055),'- ',R(138412055),'M',D(138412055),'',R(138412053),'8 '; print '.'; print $remote 'M',D(138412055),'',R(138412051),'8 ',R(138412055),'=',R(138412055),'8',R(138412055),' ',R(138412046),'%',R(138412040),'brendan@jupiter:~ 1 ',R(138412046),'\'',R(1392526600),'brendan@jupiter:~6 M',D(138412055),'',R(138412053),' '; print '.'; print $remote 'M',D(138412055),'',R(138412051),' M',D(138412055),'',R(138412051),' [brendan@jupiter brendan]$ M',D(138412055),'',R(138412053),' 1'; ms(0.0373001098632812); print '.'; print $remote ''; ms(1.32705998420715); print '.'; print $remote ''; print '.'; print $remote 'M',D(138412055),'',R(138412051),' M',D(138412055),'',R(138412051),' ebM',D(138412055),'',R(138412053),' p'; ms(0.0426499843597412); print '.'; print $remote 'M',D(138412055),'',R(138412051),' M',D(138412055),'',R(138412051),' xbM',D(138412055),'',R(138412053),' p'; ms(0.115630149841309); print '.'; print $remote 'M',D(138412055),'',R(138412051),' M',D(138412055),'',R(138412051),' ibM',D(138412055),'',R(138412053),' p'; ms(0.0923898220062256); print '.'; print $remote 'M',D(138412055),'',R(138412051),' M',D(138412055),'',R(138412051),' tbM',D(138412055),'',R(138412053),' p'; ms(0.119040012359619); print '.'; print $remote 'M',D(138412055),'',R(138412051),' M',D(138412055),'',R(138412053),' b'; ms(0.00558996200561523); print '.'; print $remote ''; print '.'; print $remote ''; print " "; close $remote;